@templatical/editor 0.0.3 → 0.0.4

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 (141) hide show
  1. package/dist/{AiChatSidebar-busJk9hm.js → AiChatSidebar-CjfhTZwo.js} +1 -1
  2. package/dist/{AiFeatureMenu-DLGv_-pj.js → AiFeatureMenu-K44aZa_P.js} +3 -3
  3. package/dist/CloudEditor-DFyuRxUV.js +926 -0
  4. package/dist/{CollaboratorBar-Dv3l52vC.js → CollaboratorBar-BuCEcdbB.js} +25 -21
  5. package/dist/{CommentsSidebar-4tjp0VU5.js → CommentsSidebar-2lcqMfIP.js} +2 -2
  6. package/dist/{DesignReferenceSidebar-CmwXvltV.js → DesignReferenceSidebar-CNMu4Zrx.js} +2 -2
  7. package/dist/{ModuleBrowserModal-lrk3Fr0H.js → ModuleBrowserModal-CvQ0xyQf.js} +6 -6
  8. package/dist/{ModulePreviewCanvas-BcBJLnwL.js → ModulePreviewCanvas-Be2B3Y07.js} +2 -2
  9. package/dist/ParagraphEditor-CcMPnbDr.js +652 -0
  10. package/dist/{RichTextEditorContent-CQqodi7p.js → RichTextEditorContent-CHJlh7HJ.js} +8 -4
  11. package/dist/{SaveModuleDialog-Bmzi72td.js → SaveModuleDialog-BaaeH5Xm.js} +5 -5
  12. package/dist/{SnapshotHistory-AEgi9Xsn.js → SnapshotHistory-BPfjiuu1.js} +2 -2
  13. package/dist/{TemplateScoringPanel-CTgMtc0-.js → TemplateScoringPanel-D58A23Vq.js} +3 -3
  14. package/dist/{TestEmailModal-Dpq1is9S.js → TestEmailModal-DIAlB3e_.js} +3 -3
  15. package/dist/{TitleEditor-CLcDdcWI.js → TitleEditor-D9DPjQkX.js} +7 -7
  16. package/dist/{TplModal-CGzRjR96.js → TplModal-CmTSvCY-.js} +2 -2
  17. package/dist/{blockTypeIcons-BpPTqcok.js → blockTypeIcons-D1RTWOkx.js} +1 -1
  18. package/dist/cdn/chunks/AiChatSidebar-CmPTbTFG.js +2 -0
  19. package/dist/cdn/chunks/AiFeatureMenu-lxVm1RjH.js +59 -0
  20. package/dist/cdn/chunks/AiFeatureMenu-lxVm1RjH.js.map +1 -0
  21. package/dist/cdn/chunks/CloudEditor-Bmp5IlWi.js +900 -0
  22. package/dist/cdn/chunks/CloudEditor-Bmp5IlWi.js.map +1 -0
  23. package/dist/cdn/chunks/CollaboratorBar-D2PKtlOw.js +51 -0
  24. package/dist/cdn/chunks/CollaboratorBar-D2PKtlOw.js.map +1 -0
  25. package/dist/cdn/chunks/CommentsSidebar-BOelj4Ca.js +2 -0
  26. package/dist/cdn/chunks/DesignReferenceSidebar-Bf6rg0A7.js +2 -0
  27. package/dist/cdn/chunks/ModuleBrowserModal-CxDXzkKS.js +195 -0
  28. package/dist/cdn/chunks/ModuleBrowserModal-CxDXzkKS.js.map +1 -0
  29. package/dist/cdn/chunks/ModulePreviewCanvas-DEfHampA.js +107 -0
  30. package/dist/cdn/chunks/ModulePreviewCanvas-DEfHampA.js.map +1 -0
  31. package/dist/cdn/chunks/ParagraphEditor-DHdu6lb3.js +503 -0
  32. package/dist/cdn/chunks/ParagraphEditor-DHdu6lb3.js.map +1 -0
  33. package/dist/cdn/chunks/RichTextEditorContent-DWUzizsC.js +106 -0
  34. package/dist/cdn/chunks/RichTextEditorContent-DWUzizsC.js.map +1 -0
  35. package/dist/cdn/chunks/SaveModuleDialog-DVna2xUl.js +119 -0
  36. package/dist/cdn/chunks/SaveModuleDialog-DVna2xUl.js.map +1 -0
  37. package/dist/cdn/chunks/SnapshotHistory-BFF2SsTN.js +2 -0
  38. package/dist/cdn/chunks/TemplateScoringPanel-gi8wc_m7.js +2 -0
  39. package/dist/cdn/chunks/TestEmailModal-Qtd6aC-6.js +2 -0
  40. package/dist/cdn/chunks/TitleEditor-DDf_OcHS.js +166 -0
  41. package/dist/cdn/chunks/TitleEditor-DDf_OcHS.js.map +1 -0
  42. package/dist/cdn/chunks/_rolldown_dynamic_import_helper-DMEI4TQ3.js +9 -0
  43. package/dist/cdn/chunks/blockTypeIcons-BnobReQm.js +22 -0
  44. package/dist/cdn/chunks/blockTypeIcons-BnobReQm.js.map +1 -0
  45. package/dist/cdn/chunks/de-BB3dgVOc.js +700 -0
  46. package/dist/cdn/chunks/de-BB3dgVOc.js.map +1 -0
  47. package/dist/cdn/chunks/de-BvYD17KT.js +89 -0
  48. package/dist/cdn/chunks/de-BvYD17KT.js.map +1 -0
  49. package/dist/cdn/chunks/dist-B6AUkMyh.js +2 -0
  50. package/dist/cdn/chunks/dist-B878xb_62.js +457 -0
  51. package/dist/cdn/chunks/dist-B878xb_62.js.map +1 -0
  52. package/dist/cdn/chunks/dist-Bf1Op9A1.js +2 -0
  53. package/dist/cdn/chunks/dist-BkETaOfw.js +2 -0
  54. package/dist/cdn/chunks/dist-CJcMnY7o.js +2 -0
  55. package/dist/cdn/chunks/dist-CWsl6S1K.js +2 -0
  56. package/dist/cdn/chunks/dist-CllLxIMQ.js +2 -0
  57. package/dist/cdn/chunks/dist-Cs0wFwdw.js +2 -0
  58. package/dist/cdn/chunks/dist-DLWHlekl.js +2 -0
  59. package/dist/cdn/chunks/dist-DS3_HVpX.js +2 -0
  60. package/dist/cdn/chunks/dist-DTXopj1a.js +2 -0
  61. package/dist/cdn/chunks/dist-DnwLoNLm.js +2 -0
  62. package/dist/cdn/chunks/draggable-BQNU47zu.js +11544 -0
  63. package/dist/cdn/chunks/{draggable-ClUwYCFL.js.map → draggable-BQNU47zu.js.map} +1 -1
  64. package/dist/cdn/chunks/emojiData-BVEJHcNH.js +19 -0
  65. package/dist/cdn/chunks/{emojiData-6fVLNqeH.js.map → emojiData-BVEJHcNH.js.map} +1 -1
  66. package/dist/cdn/chunks/en-CpotcOPr.js +89 -0
  67. package/dist/cdn/chunks/en-CpotcOPr.js.map +1 -0
  68. package/dist/cdn/chunks/en-DeDcpnoS.js +700 -0
  69. package/dist/cdn/chunks/en-DeDcpnoS.js.map +1 -0
  70. package/dist/cdn/chunks/extensions-B_kcV0tK.js +419 -0
  71. package/dist/cdn/chunks/{extensions-ea_ewKUl.js.map → extensions-B_kcV0tK.js.map} +1 -1
  72. package/dist/cdn/chunks/features-ofOGnSC0.js +6700 -0
  73. package/dist/cdn/chunks/features-ofOGnSC0.js.map +1 -0
  74. package/dist/cdn/chunks/icons-bIb7PBOE.js +653 -0
  75. package/dist/cdn/chunks/icons-bIb7PBOE.js.map +1 -0
  76. package/dist/cdn/chunks/liquid.browser-C1VIYISn.js +3272 -0
  77. package/dist/cdn/chunks/liquid.browser-C1VIYISn.js.map +1 -0
  78. package/dist/cdn/chunks/media-library-BIYzV2Y2.js +6005 -0
  79. package/dist/cdn/chunks/media-library-BIYzV2Y2.js.map +1 -0
  80. package/dist/cdn/chunks/pusher-DJPhQnE8.js +2505 -0
  81. package/dist/cdn/chunks/pusher-DJPhQnE8.js.map +1 -0
  82. package/dist/cdn/chunks/readableTextColor-Cd_cgWO_.js +32 -0
  83. package/dist/cdn/chunks/readableTextColor-Cd_cgWO_.js.map +1 -0
  84. package/dist/cdn/chunks/rolldown-runtime-DPITmOBR.js +20 -0
  85. package/dist/cdn/chunks/src-BuW9oYtm.js +494 -0
  86. package/dist/cdn/chunks/src-BuW9oYtm.js.map +1 -0
  87. package/dist/cdn/chunks/styleConstants-1KwsBMxJ.js +57 -0
  88. package/dist/cdn/chunks/{styleConstants-CNejCb-L.js.map → styleConstants-1KwsBMxJ.js.map} +1 -1
  89. package/dist/cdn/chunks/styles-DQFExz-T.js +3222 -0
  90. package/dist/cdn/chunks/styles-DQFExz-T.js.map +1 -0
  91. package/dist/cdn/chunks/tiptap-DplY-S-k.js +14208 -0
  92. package/dist/cdn/chunks/{tiptap-Cya4P9CN.js.map → tiptap-DplY-S-k.js.map} +1 -1
  93. package/dist/cdn/editor.css +2 -1
  94. package/dist/cdn/editor.js +260 -1
  95. package/dist/cdn/editor.js.map +1 -1
  96. package/dist/{de-B4Ob4vCo.js → de-D7TLGIPA.js} +20 -4
  97. package/dist/{dist-DmpMJbmZ.js → dist-BkIys9zn.js} +1 -1
  98. package/dist/{en-YXsspZJG.js → en-DvtiEMwP.js} +20 -4
  99. package/dist/{extensions-CKM99njP.js → extensions-DEjfEFhD.js} +3 -3
  100. package/dist/{keys-Dwa2PmdD.js → keys-C0MQRs8d.js} +3 -3
  101. package/dist/readableTextColor-LDlmVEUv.js +30 -0
  102. package/dist/{styles-DSw1VNU3.js → styles-CgLaxDfu.js} +1096 -1074
  103. package/dist/templatical-editor.css +1 -1
  104. package/dist/templatical-editor.js +113 -89
  105. package/dist/templatical-editor.umd.cjs +59 -59
  106. package/dist/{useEditorCore-Cc4RCwWq.js → useEditorCore-CjwRMl7K.js} +1152 -1014
  107. package/dist/{useI18n-DUirdXEX.js → useI18n-D6m7ZUgY.js} +1 -1
  108. package/dist/{useMergeTag-DVnlvPYJ.js → useMergeTag-BZ3X0bNr.js} +1 -1
  109. package/package.json +2 -2
  110. package/dist/CloudEditor-BDnHd6Um.js +0 -919
  111. package/dist/ParagraphEditor-DH8cSC6m.js +0 -625
  112. package/dist/cdn/chunks/ParagraphEditor-CCtWbGDv.js +0 -3
  113. package/dist/cdn/chunks/ParagraphEditor-CCtWbGDv.js.map +0 -1
  114. package/dist/cdn/chunks/RichTextEditorContent-BUD9veXd.js +0 -2
  115. package/dist/cdn/chunks/RichTextEditorContent-BUD9veXd.js.map +0 -1
  116. package/dist/cdn/chunks/TitleEditor-e_UTyxjd.js +0 -3
  117. package/dist/cdn/chunks/TitleEditor-e_UTyxjd.js.map +0 -1
  118. package/dist/cdn/chunks/dist-0UheN8rK.js +0 -1
  119. package/dist/cdn/chunks/dist-55mmbGQ9.js +0 -1
  120. package/dist/cdn/chunks/dist-B31mxKyP.js +0 -1
  121. package/dist/cdn/chunks/dist-B5JI9nIg.js +0 -1
  122. package/dist/cdn/chunks/dist-B93vLKhU.js +0 -1
  123. package/dist/cdn/chunks/dist-BDt3FJvj.js +0 -1
  124. package/dist/cdn/chunks/dist-BJRuFHmi.js +0 -1
  125. package/dist/cdn/chunks/dist-BKSzrf0L.js +0 -1
  126. package/dist/cdn/chunks/dist-BL8c5gYQ.js +0 -1
  127. package/dist/cdn/chunks/dist-CYThWMP5.js +0 -1
  128. package/dist/cdn/chunks/dist-DxZbPJYt.js +0 -1
  129. package/dist/cdn/chunks/draggable-ClUwYCFL.js +0 -17
  130. package/dist/cdn/chunks/emojiData-6fVLNqeH.js +0 -2
  131. package/dist/cdn/chunks/extensions-ea_ewKUl.js +0 -2
  132. package/dist/cdn/chunks/icons-vmLJTaJk.js +0 -2
  133. package/dist/cdn/chunks/icons-vmLJTaJk.js.map +0 -1
  134. package/dist/cdn/chunks/rolldown-runtime-BakkzWXw.js +0 -1
  135. package/dist/cdn/chunks/styleConstants-CNejCb-L.js +0 -2
  136. package/dist/cdn/chunks/tiptap-Cya4P9CN.js +0 -145
  137. package/dist/cdn/chunks/useEditorCore-CwuxQuvh.js +0 -2
  138. package/dist/cdn/chunks/useEditorCore-CwuxQuvh.js.map +0 -1
  139. package/dist/cdn/chunks/useMergeTag-DVOz1v9p.js +0 -2
  140. package/dist/cdn/chunks/useMergeTag-DVOz1v9p.js.map +0 -1
  141. package/dist/i18n-CJsFtdbZ.js +0 -23
@@ -0,0 +1,457 @@
1
+ import { An as e, Cn as t, Dn as n, En as r, Mn as i, Nn as a, On as o, Sn as s, Tn as c, bn as l, jn as u, kn as d, wn as f, xn as p } from "./features-ofOGnSC0.js";
2
+ //#region ../renderer/dist/index.js
3
+ var m = {
4
+ arial: "Arial, sans-serif",
5
+ helvetica: "Helvetica, sans-serif",
6
+ georgia: "Georgia, serif",
7
+ "times new roman": "'Times New Roman', serif",
8
+ verdana: "Verdana, sans-serif",
9
+ "trebuchet ms": "'Trebuchet MS', sans-serif",
10
+ "courier new": "'Courier New', monospace",
11
+ tahoma: "Tahoma, sans-serif"
12
+ }, h = class e {
13
+ constructor(e, t, n, r) {
14
+ this.containerWidth = e, this.customFonts = t, this.defaultFallbackFont = n, this.allowHtmlBlocks = r;
15
+ }
16
+ withContainerWidth(t) {
17
+ return new e(t, this.customFonts, this.defaultFallbackFont, this.allowHtmlBlocks);
18
+ }
19
+ resolveFontFamily(e) {
20
+ for (let t of this.customFonts) if (t.name.toLowerCase() === e.toLowerCase()) return `'${t.name}', ${t.fallback ?? this.defaultFallbackFont}`;
21
+ return m[e.toLowerCase()] || e;
22
+ }
23
+ }, g = {
24
+ "&": "&",
25
+ "<": "&lt;",
26
+ ">": "&gt;",
27
+ "\"": "&quot;",
28
+ "'": "&#039;"
29
+ }, _ = /[&<>"']/g;
30
+ function v(e) {
31
+ return e === "" ? "" : e.replace(_, (e) => g[e] ?? e);
32
+ }
33
+ function y(e) {
34
+ return e === "" ? "" : e.replace(_, (e) => g[e] ?? e);
35
+ }
36
+ function b(e) {
37
+ if (e === "") return "";
38
+ let t = e.replace(/<span[^>]*\bdata-merge-tag="([^"]*)"[^>]*>.*?<\/span>/gs, "$1");
39
+ return t = t.replace(/<span[^>]*\bdata-logic-merge-tag="([^"]*)"[^>]*>.*?<\/span>/gs, "$1"), t;
40
+ }
41
+ function x(e) {
42
+ return `${e.top}px ${e.right}px ${e.bottom}px ${e.left}px`;
43
+ }
44
+ function S(e) {
45
+ let t = e.visibility;
46
+ return t ? !t.desktop && !t.tablet && !t.mobile : !1;
47
+ }
48
+ function C(e) {
49
+ let t = ee(e);
50
+ return t === "" ? "" : ` css-class="${t}"`;
51
+ }
52
+ function ee(e) {
53
+ let t = e.visibility;
54
+ if (!t) return "";
55
+ let n = [];
56
+ return t.desktop || n.push("tpl-hide-desktop"), t.tablet || n.push("tpl-hide-tablet"), t.mobile || n.push("tpl-hide-mobile"), n.join(" ");
57
+ }
58
+ function w(e, t) {
59
+ if (S(e)) return "";
60
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", i = b(e.content), o = a[e.level], s = e.color, c = e.textAlign, l = T(e.fontFamily, t), u = C(e), d = `h${e.level}`;
61
+ return `<mj-text
62
+ font-size="${o}px"
63
+ color="${s}"
64
+ align="${c}"
65
+ line-height="1.3"
66
+ padding="${n}"${r}${l}${u}
67
+ ><${d} style="margin:0;font-size:inherit;color:inherit;line-height:inherit">${i}</${d}></mj-text>`;
68
+ }
69
+ function T(e, t) {
70
+ return e ? ` font-family="${t.resolveFontFamily(e)}"` : "";
71
+ }
72
+ function E(e, t) {
73
+ if (S(e)) return "";
74
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", i = b(e.content);
75
+ return `<mj-text
76
+ line-height="1.5"
77
+ padding="${n}"${r}${C(e)}
78
+ >${i}</mj-text>`;
79
+ }
80
+ function D(e, t) {
81
+ if (S(e)) return "";
82
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", i = e.width === "full" ? t.containerWidth + "px" : e.width + "px", a = C(e), o = "";
83
+ return e.linkUrl && (o = ` href="${y(e.linkUrl)}"`, e.linkOpenInNewTab && (o += " target=\"_blank\"")), `<mj-image
84
+ src="${y(e.src)}"
85
+ alt="${y(e.alt)}"
86
+ width="${i}"
87
+ align="${e.align}"
88
+ padding="${n}"${r}${o}${a}
89
+ />`;
90
+ }
91
+ function O(e, t) {
92
+ if (S(e)) return "";
93
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` container-background-color="${e.styles.backgroundColor}"` : "", i = x(e.buttonPadding), a = y(e.url), o = e.backgroundColor, s = e.textColor, c = e.fontSize, l = e.borderRadius, u = v(e.text);
94
+ return `<mj-button
95
+ href="${a}"${e.openInNewTab ? " target=\"_blank\"" : ""}
96
+ background-color="${o}"
97
+ color="${s}"
98
+ font-size="${c}px"
99
+ font-weight="bold"
100
+ border-radius="${l}px"
101
+ inner-padding="${i}"
102
+ padding="${n}"${r}${k(e.fontFamily, t)}${C(e)}
103
+ >${u}</mj-button>`;
104
+ }
105
+ function k(e, t) {
106
+ return e ? ` font-family="${t.resolveFontFamily(e)}"` : "";
107
+ }
108
+ function A(e, t) {
109
+ if (S(e)) return "";
110
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` container-background-color="${e.styles.backgroundColor}"` : "", i = e.width === "full" ? "100%" : e.width + "px";
111
+ return `<mj-divider
112
+ border-width="${e.thickness}px"
113
+ border-style="${e.lineStyle}"
114
+ border-color="${e.color}"
115
+ width="${i}"
116
+ padding="${n}"${r}${C(e)}
117
+ />`;
118
+ }
119
+ function j(e, t) {
120
+ return S(e) ? "" : `<mj-spacer height="${e.height}px" padding="${x(e.styles.padding)}"${e.styles.backgroundColor ? ` container-background-color="${e.styles.backgroundColor}"` : ""}${C(e)} />`;
121
+ }
122
+ function M(e, t) {
123
+ if (S(e) || !t.allowHtmlBlocks) return "";
124
+ let n = e.content;
125
+ return n === "" ? "" : `<mj-text${C(e)}>
126
+ ${n}
127
+ </mj-text>`;
128
+ }
129
+ var N = {
130
+ facebook: {
131
+ path: "M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z",
132
+ color: "#1877F2"
133
+ },
134
+ twitter: {
135
+ path: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z",
136
+ color: "#000000"
137
+ },
138
+ instagram: {
139
+ path: "M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z",
140
+ color: "#E4405F"
141
+ },
142
+ linkedin: {
143
+ path: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z",
144
+ color: "#0A66C2"
145
+ },
146
+ youtube: {
147
+ path: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z",
148
+ color: "#FF0000"
149
+ },
150
+ tiktok: {
151
+ path: "M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z",
152
+ color: "#000000"
153
+ },
154
+ pinterest: {
155
+ path: "M12 0C5.373 0 0 5.372 0 12c0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738.098.119.112.224.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12 24c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z",
156
+ color: "#BD081C"
157
+ },
158
+ email: {
159
+ path: "M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z",
160
+ color: "#6B7280"
161
+ },
162
+ whatsapp: {
163
+ path: "M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z",
164
+ color: "#25D366"
165
+ },
166
+ telegram: {
167
+ path: "M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z",
168
+ color: "#26A5E4"
169
+ },
170
+ discord: {
171
+ path: "M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189z",
172
+ color: "#5865F2"
173
+ },
174
+ snapchat: {
175
+ path: "M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 01.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146 1.124.347 2.317.535 3.554.535 6.627 0 12.017-5.373 12.017-12.001C24.034 5.367 18.644 0 12.017 0z",
176
+ color: "#FFFC00"
177
+ },
178
+ reddit: {
179
+ path: "M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z",
180
+ color: "#FF4500"
181
+ },
182
+ github: {
183
+ path: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",
184
+ color: "#181717"
185
+ },
186
+ dribbble: {
187
+ path: "M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.392-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38z",
188
+ color: "#EA4C89"
189
+ },
190
+ behance: {
191
+ path: "M22 7h-7V5h7v2zm1.726 10c-.442 1.297-2.029 3-5.101 3-3.074 0-5.564-1.729-5.564-5.675 0-3.91 2.325-5.92 5.466-5.92 3.082 0 4.964 1.782 5.375 4.426.078.506.109 1.188.095 2.14H15.97c.13 3.211 3.483 3.312 4.588 2.029h3.168zm-7.686-4h4.965c-.105-1.547-1.136-2.219-2.477-2.219-1.466 0-2.277.768-2.488 2.219zm-9.574 6.988H0V5.021h6.953c5.476.081 5.58 5.444 2.72 6.906 3.461 1.26 3.577 8.061-3.207 8.061zM3 11h3.584c2.508 0 2.906-3-.312-3H3v3zm3.391 3H3v3.016h3.341c3.055 0 2.868-3.016.05-3.016z",
192
+ color: "#1769FF"
193
+ }
194
+ };
195
+ function P(e, t, n) {
196
+ let r = N[e], i = r?.path ?? "", a = r?.color ?? "#6B7280";
197
+ if (i === "") return "";
198
+ let o = t === "outlined" ? a : "#ffffff", s;
199
+ switch (t) {
200
+ case "circle":
201
+ s = `<circle cx="12" cy="12" r="12" fill="${a}"/>`;
202
+ break;
203
+ case "rounded":
204
+ s = `<rect width="24" height="24" rx="6" fill="${a}"/>`;
205
+ break;
206
+ case "square":
207
+ s = `<rect width="24" height="24" rx="0" fill="${a}"/>`;
208
+ break;
209
+ case "outlined":
210
+ s = `<rect width="22" height="22" x="1" y="1" rx="3" fill="transparent" stroke="${a}" stroke-width="2"/>`;
211
+ break;
212
+ default:
213
+ s = `<rect width="24" height="24" rx="3" fill="${a}"/>`;
214
+ break;
215
+ }
216
+ let c = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="${n}" height="${n}">` + s + `<g transform="translate(4.8, 4.8) scale(0.6)"><path d="${i}" fill="${o}"/></g></svg>`;
217
+ return "data:image/svg+xml;base64," + btoa(c);
218
+ }
219
+ function F(e, t) {
220
+ if (S(e)) return "";
221
+ let n = e.icons;
222
+ if (n.length === 0) return "";
223
+ let r = x(e.styles.padding), i = e.styles.backgroundColor ? ` container-background-color="${e.styles.backgroundColor}"` : "", a = C(e), o = e.align, s = e.iconSize, c = e.iconStyle, l = e.spacing, u;
224
+ switch (s) {
225
+ case "small":
226
+ u = 24;
227
+ break;
228
+ case "large":
229
+ u = 48;
230
+ break;
231
+ default:
232
+ u = 32;
233
+ break;
234
+ }
235
+ let d;
236
+ switch (c) {
237
+ case "circle":
238
+ d = "50%";
239
+ break;
240
+ case "rounded":
241
+ d = "8px";
242
+ break;
243
+ case "square":
244
+ d = "0";
245
+ break;
246
+ default:
247
+ d = "4px";
248
+ break;
249
+ }
250
+ let f = n.length;
251
+ return `<mj-social
252
+ mode="horizontal"
253
+ align="${o}"
254
+ icon-padding="0"
255
+ padding="${r}"${i}${a}
256
+ >
257
+ ${n.map((e, t) => {
258
+ let n = e.platform, r = y(e.url), i = P(n, c, u), a = t === f - 1 ? 0 : l;
259
+ return `<mj-social-element src="${i}" href="${r}" icon-size="${u}px" padding="0 ${a}px 0 0" border-radius="${d}" background-color="transparent"></mj-social-element>`;
260
+ }).join("\n")}
261
+ </mj-social>`;
262
+ }
263
+ function I(e, t) {
264
+ if (S(e) || e.items.length === 0) return "";
265
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", i = C(e), a = z(e.fontFamily, t);
266
+ return `<mj-text
267
+ font-size="${e.fontSize}px"
268
+ color="${e.color}"
269
+ align="${e.textAlign}"
270
+ line-height="1.5"
271
+ padding="${n}"${r}${a}${i}
272
+ >${L(e)}</mj-text>`;
273
+ }
274
+ function L(e) {
275
+ let t = e.items, n = v(e.separator), r = y(e.separatorColor), i = e.spacing, a = e.linkColor ?? e.color, o = [], s = t.length;
276
+ for (let e = 0; e < s; e++) o.push(R(t[e], a)), e < s - 1 && o.push(`<span style="color: ${r}; padding: 0 ${i}px;">${n}</span>`);
277
+ return o.join("");
278
+ }
279
+ function R(e, t) {
280
+ let n = v(e.text), r = y(e.url), i = e.color ?? t, a = e.openInNewTab ? " target=\"_blank\"" : "", o = [`color: ${i}`, "text-decoration: none"];
281
+ return e.bold && o.push("font-weight: bold"), e.underline && o.push("text-decoration: underline"), `<a href="${r}" style="${o.join("; ")}"${a}>${n}</a>`;
282
+ }
283
+ function z(e, t) {
284
+ return e ? ` font-family="${t.resolveFontFamily(e)}"` : "";
285
+ }
286
+ function te(e, t) {
287
+ if (S(e) || e.rows.length === 0) return "";
288
+ let n = x(e.styles.padding), r = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", i = C(e), a = U(e.fontFamily, t);
289
+ return `<mj-text
290
+ font-size="${e.fontSize}px"
291
+ color="${e.color}"
292
+ align="${e.textAlign}"
293
+ line-height="1.5"
294
+ padding="${n}"${r}${a}${i}
295
+ >${B(e)}</mj-text>`;
296
+ }
297
+ function B(e) {
298
+ let t = y(e.borderColor), n = e.borderWidth, r = "";
299
+ for (let i = 0; i < e.rows.length; i++) {
300
+ let a = e.rows[i];
301
+ r += V(a, e, e.hasHeaderRow && i === 0, t, n);
302
+ }
303
+ return `<table style="width: 100%; border-collapse: collapse;">${r}</table>`;
304
+ }
305
+ function V(e, t, n, r, i) {
306
+ let a = "";
307
+ for (let o of e.cells) a += H(o, t, n, r, i);
308
+ return `<tr>${a}</tr>`;
309
+ }
310
+ function H(e, t, n, r, i) {
311
+ let a = t.cellPadding, o = [`border: ${i}px solid ${r}`, `padding: ${a}px`];
312
+ n && (o.push("font-weight: bold"), t.headerBackgroundColor && o.push(`background-color: ${y(t.headerBackgroundColor)}`));
313
+ let s = o.join("; "), c = b(e.content), l = n ? "th" : "td";
314
+ return `<${l} style="${s}">${c}</${l}>`;
315
+ }
316
+ function U(e, t) {
317
+ return e ? ` font-family="${t.resolveFontFamily(e)}"` : "";
318
+ }
319
+ function W(e, t) {
320
+ if (S(e)) return "";
321
+ let n = e.renderedHtml;
322
+ return !n || n === "" ? "" : `<mj-text${C(e)}>
323
+ ${n}
324
+ </mj-text>`;
325
+ }
326
+ function G(e) {
327
+ switch (e) {
328
+ case "2": return ["50%", "50%"];
329
+ case "3": return [
330
+ "33.33%",
331
+ "33.33%",
332
+ "33.33%"
333
+ ];
334
+ case "1-2": return ["33.33%", "66.67%"];
335
+ case "2-1": return ["66.67%", "33.33%"];
336
+ default: return ["100%"];
337
+ }
338
+ }
339
+ function K(e, t) {
340
+ switch (e) {
341
+ case "2": return [t * .5, t * .5];
342
+ case "3": return [
343
+ t / 3,
344
+ t / 3,
345
+ t / 3
346
+ ];
347
+ case "1-2": return [t / 3, t * 2 / 3];
348
+ case "2-1": return [t * 2 / 3, t / 3];
349
+ default: return [t];
350
+ }
351
+ }
352
+ function q(e, t, n) {
353
+ if (S(e)) return "";
354
+ let r = e.columns, i = G(r), a = K(r, t.containerWidth), o = x(e.styles.padding), s = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", c = C(e), l = e.children, u = [];
355
+ for (let e = 0; e < l.length; e++) {
356
+ let r = l[e], o = i[e] ?? "100%", s = Math.floor(a[e] ?? t.containerWidth), c = J(r, t.allowHtmlBlocks), d = t.withContainerWidth(s), f = c.map((e) => n(e, d)).filter((e) => e !== "").join("\n");
357
+ u.push(`<mj-column width="${o}">
358
+ ${f === "" ? "<mj-text>&nbsp;</mj-text>" : f}
359
+ </mj-column>`);
360
+ }
361
+ return `<mj-section${s} padding="${o}"${c}>
362
+ ${u.join("\n")}
363
+ </mj-section>`;
364
+ }
365
+ function J(e, t) {
366
+ return t ? e : e.filter((e) => e.type !== "html");
367
+ }
368
+ function Y(e, t) {
369
+ if (t) return t;
370
+ if (!e) return null;
371
+ for (let t of [/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/, /youtube\.com\/shorts\/([a-zA-Z0-9_-]{11})/]) {
372
+ let n = e.match(t);
373
+ if (n) return `https://img.youtube.com/vi/${n[1]}/maxresdefault.jpg`;
374
+ }
375
+ let n = e.match(/vimeo\.com\/(?:video\/)?(\d+)/);
376
+ return n ? `https://vumbnail.com/${n[1]}.jpg` : null;
377
+ }
378
+ function X(e, t) {
379
+ if (S(e)) return "";
380
+ let n = Y(e.url, e.thumbnailUrl);
381
+ if (!n) return "";
382
+ let r = x(e.styles.padding), i = e.styles.backgroundColor ? ` background-color="${e.styles.backgroundColor}"` : "", a = e.width === "full" ? t.containerWidth + "px" : e.width + "px", o = C(e);
383
+ return `<mj-image
384
+ src="${y(n)}"
385
+ alt="${y(e.alt)}"
386
+ width="${a}"
387
+ align="${e.align}"
388
+ padding="${r}"
389
+ href="${y(e.url)}"
390
+ target="_blank"${i}${o}
391
+ />`;
392
+ }
393
+ function Z(a, m) {
394
+ return n(a) ? q(a, m, Z) : u(a) ? w(a, m) : r(a) ? E(a, m) : f(a) ? D(a, m) : l(a) ? O(a, m) : s(a) ? A(a, m) : d(a) ? j(a, m) : t(a) ? M(a, m) : o(a) ? F(a, m) : c(a) ? I(a, m) : e(a) ? te(a, m) : i(a) ? X(a, m) : p(a) ? W(a, m) : "";
395
+ }
396
+ function Q(e, t) {
397
+ let n = t?.customFonts ?? [], r = t?.defaultFallbackFont ?? "Arial, sans-serif", i = t?.allowHtmlBlocks ?? !0, a = new h(e.settings.width, n, r, i), o = oe(e.blocks, i), s = a.resolveFontFamily(e.settings.fontFamily), c = e.settings.backgroundColor, l = o.map((e) => ne(e, a)).filter((e) => e !== "").join("\n"), u = ae(n);
398
+ return `<mjml>
399
+ <mj-head>${ie(e.settings.preheaderText)}
400
+ <mj-attributes>
401
+ <mj-all font-family="${s}" />
402
+ <mj-section padding="0" />
403
+ <mj-column padding="0" />
404
+ <mj-image fluid-on-mobile="true" />
405
+ </mj-attributes>${u}
406
+ <mj-style>
407
+ a { color: inherit; text-decoration: none; }
408
+ @media only screen and (max-width: 480px) {
409
+ .tpl-hide-mobile { display: none !important; mso-hide: all !important; }
410
+ }
411
+ @media only screen and (min-width: 481px) and (max-width: 768px) {
412
+ .tpl-hide-tablet { display: none !important; mso-hide: all !important; }
413
+ }
414
+ @media only screen and (min-width: 769px) {
415
+ .tpl-hide-desktop { display: none !important; mso-hide: all !important; }
416
+ }
417
+ </mj-style>
418
+ </mj-head>
419
+ <mj-body width="${a.containerWidth}px" background-color="${c}">
420
+ ${l}
421
+ </mj-body>
422
+ </mjml>`;
423
+ }
424
+ function ne(e, t) {
425
+ return n(e) ? $(e, Z(e, t)) : $(e, re(Z(e, t)));
426
+ }
427
+ function $(e, t) {
428
+ if (t === "") return "";
429
+ let n = e.displayCondition;
430
+ return n ? `<mj-raw>${n.before}</mj-raw>
431
+ ` + t + `
432
+ <mj-raw>${n.after}</mj-raw>` : t;
433
+ }
434
+ function re(e) {
435
+ return e === "" ? "" : `<mj-section>
436
+ <mj-column>
437
+ ${e}
438
+ </mj-column>
439
+ </mj-section>`;
440
+ }
441
+ function ie(e) {
442
+ if (!e) return "";
443
+ let t = e.trim();
444
+ return t === "" ? "" : `
445
+ <mj-preview>${v(t)}</mj-preview>`;
446
+ }
447
+ function ae(e) {
448
+ return e.length === 0 ? "" : e.map((e) => `
449
+ <mj-font name="${y(e.name)}" href="${y(e.url)}" />`).join("");
450
+ }
451
+ function oe(e, t) {
452
+ return t ? e : e.filter((e) => e.type !== "html");
453
+ }
454
+ //#endregion
455
+ export { Q as renderToMjml };
456
+
457
+ //# sourceMappingURL=dist-B878xb_62.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dist-B878xb_62.js","names":["isSection2"],"sources":["../../../../renderer/dist/index.js"],"sourcesContent":["// src/index.ts\nimport { isSection as isSection2 } from \"@templatical/types\";\n\n// src/render-context.ts\nvar BUILT_IN_FONT_FALLBACKS = {\n arial: \"Arial, sans-serif\",\n helvetica: \"Helvetica, sans-serif\",\n georgia: \"Georgia, serif\",\n \"times new roman\": \"'Times New Roman', serif\",\n verdana: \"Verdana, sans-serif\",\n \"trebuchet ms\": \"'Trebuchet MS', sans-serif\",\n \"courier new\": \"'Courier New', monospace\",\n tahoma: \"Tahoma, sans-serif\"\n};\nvar RenderContext = class _RenderContext {\n constructor(containerWidth, customFonts, defaultFallbackFont, allowHtmlBlocks) {\n this.containerWidth = containerWidth;\n this.customFonts = customFonts;\n this.defaultFallbackFont = defaultFallbackFont;\n this.allowHtmlBlocks = allowHtmlBlocks;\n }\n /**\n * Create a new context with a different container width.\n * Used when rendering columns with narrower widths.\n */\n withContainerWidth(width) {\n return new _RenderContext(\n width,\n this.customFonts,\n this.defaultFallbackFont,\n this.allowHtmlBlocks\n );\n }\n /**\n * Resolve a font family name to include custom font fallbacks.\n * If the font matches a custom font, returns `'FontName', fallback`.\n * Otherwise returns the original font family string.\n */\n resolveFontFamily(fontFamily) {\n for (const customFont of this.customFonts) {\n if (customFont.name.toLowerCase() === fontFamily.toLowerCase()) {\n const fallback = customFont.fallback ?? this.defaultFallbackFont;\n return `'${customFont.name}', ${fallback}`;\n }\n }\n const builtIn = BUILT_IN_FONT_FALLBACKS[fontFamily.toLowerCase()];\n if (builtIn) {\n return builtIn;\n }\n return fontFamily;\n }\n};\n\n// src/renderers/index.ts\nimport {\n isSection,\n isTitle,\n isParagraph,\n isImage,\n isButton,\n isDivider,\n isSpacer,\n isHtml,\n isSocialIcons,\n isMenu,\n isTable,\n isVideo,\n isCustomBlock\n} from \"@templatical/types\";\n\n// src/renderers/title.ts\nimport { HEADING_LEVEL_FONT_SIZE } from \"@templatical/types\";\n\n// src/escape.ts\nvar HTML_ENTITIES = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\"\n};\nvar HTML_ENTITY_REGEX = /[&<>\"']/g;\nfunction escapeHtml(text) {\n if (text === \"\") {\n return \"\";\n }\n return text.replace(HTML_ENTITY_REGEX, (char) => HTML_ENTITIES[char] ?? char);\n}\nfunction escapeAttr(text) {\n if (text === \"\") {\n return \"\";\n }\n return text.replace(HTML_ENTITY_REGEX, (char) => HTML_ENTITIES[char] ?? char);\n}\nfunction convertMergeTagsToValues(html) {\n if (html === \"\") {\n return \"\";\n }\n let result = html.replace(\n /<span[^>]*\\bdata-merge-tag=\"([^\"]*)\"[^>]*>.*?<\\/span>/gs,\n \"$1\"\n );\n result = result.replace(\n /<span[^>]*\\bdata-logic-merge-tag=\"([^\"]*)\"[^>]*>.*?<\\/span>/gs,\n \"$1\"\n );\n return result;\n}\n\n// src/padding.ts\nfunction toPaddingString(padding) {\n return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n}\n\n// src/visibility.ts\nfunction isHiddenOnAll(block) {\n const visibility = block.visibility;\n if (!visibility) {\n return false;\n }\n return !visibility.desktop && !visibility.tablet && !visibility.mobile;\n}\nfunction getCssClassAttr(block) {\n const classes = getCssClasses(block);\n if (classes === \"\") {\n return \"\";\n }\n return ` css-class=\"${classes}\"`;\n}\nfunction getCssClasses(block) {\n const visibility = block.visibility;\n if (!visibility) {\n return \"\";\n }\n const classes = [];\n if (!visibility.desktop) {\n classes.push(\"tpl-hide-desktop\");\n }\n if (!visibility.tablet) {\n classes.push(\"tpl-hide-tablet\");\n }\n if (!visibility.mobile) {\n classes.push(\"tpl-hide-mobile\");\n }\n return classes.join(\" \");\n}\n\n// src/renderers/title.ts\nfunction renderTitle(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const content = convertMergeTagsToValues(block.content);\n const fontSize = HEADING_LEVEL_FONT_SIZE[block.level];\n const color = block.color;\n const align = block.textAlign;\n const fontFamilyAttr = renderFontFamilyAttr(block.fontFamily, context);\n const visibilityAttr = getCssClassAttr(block);\n const tag = `h${block.level}`;\n return `<mj-text\n font-size=\"${fontSize}px\"\n color=\"${color}\"\n align=\"${align}\"\n line-height=\"1.3\"\n padding=\"${padding}\"${bgColor}${fontFamilyAttr}${visibilityAttr}\n><${tag} style=\"margin:0;font-size:inherit;color:inherit;line-height:inherit\">${content}</${tag}></mj-text>`;\n}\nfunction renderFontFamilyAttr(fontFamily, context) {\n if (!fontFamily) {\n return \"\";\n }\n const resolved = context.resolveFontFamily(fontFamily);\n return ` font-family=\"${resolved}\"`;\n}\n\n// src/renderers/paragraph.ts\nfunction renderParagraph(block, _context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const content = convertMergeTagsToValues(block.content);\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-text\n line-height=\"1.5\"\n padding=\"${padding}\"${bgColor}${visibilityAttr}\n>${content}</mj-text>`;\n}\n\n// src/renderers/image.ts\nfunction renderImage(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const width = block.width === \"full\" ? context.containerWidth + \"px\" : block.width + \"px\";\n const visibilityAttr = getCssClassAttr(block);\n let linkAttr = \"\";\n if (block.linkUrl) {\n linkAttr = ` href=\"${escapeAttr(block.linkUrl)}\"`;\n if (block.linkOpenInNewTab) {\n linkAttr += ' target=\"_blank\"';\n }\n }\n const src = escapeAttr(block.src);\n const alt = escapeAttr(block.alt);\n const align = block.align;\n return `<mj-image\n src=\"${src}\"\n alt=\"${alt}\"\n width=\"${width}\"\n align=\"${align}\"\n padding=\"${padding}\"${bgColor}${linkAttr}${visibilityAttr}\n/>`;\n}\n\n// src/renderers/button.ts\nfunction renderButton(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` container-background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const buttonPadding = toPaddingString(block.buttonPadding);\n const href = escapeAttr(block.url);\n const backgroundColor = block.backgroundColor;\n const textColor = block.textColor;\n const fontSize = block.fontSize;\n const borderRadius = block.borderRadius;\n const text = escapeHtml(block.text);\n const targetAttr = block.openInNewTab ? ' target=\"_blank\"' : \"\";\n const fontFamilyAttr = renderFontFamilyAttr2(block.fontFamily, context);\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-button\n href=\"${href}\"${targetAttr}\n background-color=\"${backgroundColor}\"\n color=\"${textColor}\"\n font-size=\"${fontSize}px\"\n font-weight=\"bold\"\n border-radius=\"${borderRadius}px\"\n inner-padding=\"${buttonPadding}\"\n padding=\"${padding}\"${bgColor}${fontFamilyAttr}${visibilityAttr}\n>${text}</mj-button>`;\n}\nfunction renderFontFamilyAttr2(fontFamily, context) {\n if (!fontFamily) {\n return \"\";\n }\n const resolved = context.resolveFontFamily(fontFamily);\n return ` font-family=\"${resolved}\"`;\n}\n\n// src/renderers/divider.ts\nfunction renderDivider(block, _context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` container-background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const width = block.width === \"full\" ? \"100%\" : block.width + \"px\";\n const thickness = block.thickness;\n const lineStyle = block.lineStyle;\n const color = block.color;\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-divider\n border-width=\"${thickness}px\"\n border-style=\"${lineStyle}\"\n border-color=\"${color}\"\n width=\"${width}\"\n padding=\"${padding}\"${bgColor}${visibilityAttr}\n/>`;\n}\n\n// src/renderers/spacer.ts\nfunction renderSpacer(block, _context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const height = block.height;\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` container-background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-spacer height=\"${height}px\" padding=\"${padding}\"${bgColor}${visibilityAttr} />`;\n}\n\n// src/renderers/html.ts\nfunction renderHtml(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n if (!context.allowHtmlBlocks) {\n return \"\";\n }\n const content = block.content;\n if (content === \"\") {\n return \"\";\n }\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-text${visibilityAttr}>\n${content}\n</mj-text>`;\n}\n\n// src/social-icons.ts\nvar SOCIAL_ICONS = {\n facebook: {\n path: \"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\",\n color: \"#1877F2\"\n },\n twitter: {\n path: \"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\",\n color: \"#000000\"\n },\n instagram: {\n path: \"M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z\",\n color: \"#E4405F\"\n },\n linkedin: {\n path: \"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\",\n color: \"#0A66C2\"\n },\n youtube: {\n path: \"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\",\n color: \"#FF0000\"\n },\n tiktok: {\n path: \"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z\",\n color: \"#000000\"\n },\n pinterest: {\n path: \"M12 0C5.373 0 0 5.372 0 12c0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738.098.119.112.224.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12 24c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z\",\n color: \"#BD081C\"\n },\n email: {\n path: \"M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z\",\n color: \"#6B7280\"\n },\n whatsapp: {\n path: \"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\",\n color: \"#25D366\"\n },\n telegram: {\n path: \"M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z\",\n color: \"#26A5E4\"\n },\n discord: {\n path: \"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189z\",\n color: \"#5865F2\"\n },\n snapchat: {\n path: \"M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 01.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146 1.124.347 2.317.535 3.554.535 6.627 0 12.017-5.373 12.017-12.001C24.034 5.367 18.644 0 12.017 0z\",\n color: \"#FFFC00\"\n },\n reddit: {\n path: \"M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z\",\n color: \"#FF4500\"\n },\n github: {\n path: \"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\",\n color: \"#181717\"\n },\n dribbble: {\n path: \"M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.392-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38z\",\n color: \"#EA4C89\"\n },\n behance: {\n path: \"M22 7h-7V5h7v2zm1.726 10c-.442 1.297-2.029 3-5.101 3-3.074 0-5.564-1.729-5.564-5.675 0-3.91 2.325-5.92 5.466-5.92 3.082 0 4.964 1.782 5.375 4.426.078.506.109 1.188.095 2.14H15.97c.13 3.211 3.483 3.312 4.588 2.029h3.168zm-7.686-4h4.965c-.105-1.547-1.136-2.219-2.477-2.219-1.466 0-2.277.768-2.488 2.219zm-9.574 6.988H0V5.021h6.953c5.476.081 5.58 5.444 2.72 6.906 3.461 1.26 3.577 8.061-3.207 8.061zM3 11h3.584c2.508 0 2.906-3-.312-3H3v3zm3.391 3H3v3.016h3.341c3.055 0 2.868-3.016.05-3.016z\",\n color: \"#1769FF\"\n }\n};\nfunction generateSocialIconDataUri(platform, style, size) {\n const iconData = SOCIAL_ICONS[platform];\n const path = iconData?.path ?? \"\";\n const brandColor = iconData?.color ?? \"#6B7280\";\n if (path === \"\") {\n return \"\";\n }\n const isOutlined = style === \"outlined\";\n const iconColor = isOutlined ? brandColor : \"#ffffff\";\n let bgShape;\n switch (style) {\n case \"circle\":\n bgShape = `<circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"${brandColor}\"/>`;\n break;\n case \"rounded\":\n bgShape = `<rect width=\"24\" height=\"24\" rx=\"6\" fill=\"${brandColor}\"/>`;\n break;\n case \"square\":\n bgShape = `<rect width=\"24\" height=\"24\" rx=\"0\" fill=\"${brandColor}\"/>`;\n break;\n case \"outlined\":\n bgShape = `<rect width=\"22\" height=\"22\" x=\"1\" y=\"1\" rx=\"3\" fill=\"transparent\" stroke=\"${brandColor}\" stroke-width=\"2\"/>`;\n break;\n default:\n bgShape = `<rect width=\"24\" height=\"24\" rx=\"3\" fill=\"${brandColor}\"/>`;\n break;\n }\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"${size}\" height=\"${size}\">` + bgShape + `<g transform=\"translate(4.8, 4.8) scale(0.6)\"><path d=\"${path}\" fill=\"${iconColor}\"/></g></svg>`;\n return \"data:image/svg+xml;base64,\" + btoa(svg);\n}\n\n// src/renderers/social.ts\nfunction renderSocialIcons(block, _context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const icons = block.icons;\n if (icons.length === 0) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` container-background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const visibilityAttr = getCssClassAttr(block);\n const align = block.align;\n const iconSize = block.iconSize;\n const iconStyle = block.iconStyle;\n const spacing = block.spacing;\n let iconSizePx;\n switch (iconSize) {\n case \"small\":\n iconSizePx = 24;\n break;\n case \"large\":\n iconSizePx = 48;\n break;\n default:\n iconSizePx = 32;\n break;\n }\n let borderRadius;\n switch (iconStyle) {\n case \"circle\":\n borderRadius = \"50%\";\n break;\n case \"rounded\":\n borderRadius = \"8px\";\n break;\n case \"square\":\n borderRadius = \"0\";\n break;\n default:\n borderRadius = \"4px\";\n break;\n }\n const iconCount = icons.length;\n const socialElements = icons.map((icon, index) => {\n const platform = icon.platform;\n const url = escapeAttr(icon.url);\n const iconSrc = generateSocialIconDataUri(platform, iconStyle, iconSizePx);\n const rightPad = index === iconCount - 1 ? 0 : spacing;\n return `<mj-social-element src=\"${iconSrc}\" href=\"${url}\" icon-size=\"${iconSizePx}px\" padding=\"0 ${rightPad}px 0 0\" border-radius=\"${borderRadius}\" background-color=\"transparent\"></mj-social-element>`;\n });\n const socialContent = socialElements.join(\"\\n\");\n return `<mj-social\n mode=\"horizontal\"\n align=\"${align}\"\n icon-padding=\"0\"\n padding=\"${padding}\"${bgColor}${visibilityAttr}\n>\n${socialContent}\n</mj-social>`;\n}\n\n// src/renderers/menu.ts\nfunction renderMenu(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n if (block.items.length === 0) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const visibilityAttr = getCssClassAttr(block);\n const fontFamilyAttr = renderFontFamilyAttr3(block.fontFamily, context);\n const align = block.textAlign;\n const fontSize = block.fontSize;\n const color = block.color;\n const content = renderMenuItems(block);\n return `<mj-text\n font-size=\"${fontSize}px\"\n color=\"${color}\"\n align=\"${align}\"\n line-height=\"1.5\"\n padding=\"${padding}\"${bgColor}${fontFamilyAttr}${visibilityAttr}\n>${content}</mj-text>`;\n}\nfunction renderMenuItems(block) {\n const items = block.items;\n const separator = escapeHtml(block.separator);\n const separatorColor = escapeAttr(block.separatorColor);\n const spacing = block.spacing;\n const linkColor = block.linkColor ?? block.color;\n const parts = [];\n const itemCount = items.length;\n for (let index = 0; index < itemCount; index++) {\n parts.push(renderMenuItem(items[index], linkColor));\n if (index < itemCount - 1) {\n parts.push(\n `<span style=\"color: ${separatorColor}; padding: 0 ${spacing}px;\">${separator}</span>`\n );\n }\n }\n return parts.join(\"\");\n}\nfunction renderMenuItem(item, linkColor) {\n const text = escapeHtml(item.text);\n const url = escapeAttr(item.url);\n const color = item.color ?? linkColor;\n const target = item.openInNewTab ? ' target=\"_blank\"' : \"\";\n const styles = [`color: ${color}`, \"text-decoration: none\"];\n if (item.bold) {\n styles.push(\"font-weight: bold\");\n }\n if (item.underline) {\n styles.push(\"text-decoration: underline\");\n }\n const styleAttr = styles.join(\"; \");\n return `<a href=\"${url}\" style=\"${styleAttr}\"${target}>${text}</a>`;\n}\nfunction renderFontFamilyAttr3(fontFamily, context) {\n if (!fontFamily) {\n return \"\";\n }\n const resolved = context.resolveFontFamily(fontFamily);\n return ` font-family=\"${resolved}\"`;\n}\n\n// src/renderers/table.ts\nfunction renderTable(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n if (block.rows.length === 0) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const visibilityAttr = getCssClassAttr(block);\n const fontFamilyAttr = renderFontFamilyAttr4(block.fontFamily, context);\n const fontSize = block.fontSize;\n const color = block.color;\n const align = block.textAlign;\n const tableHtml = renderTableElement(block);\n return `<mj-text\n font-size=\"${fontSize}px\"\n color=\"${color}\"\n align=\"${align}\"\n line-height=\"1.5\"\n padding=\"${padding}\"${bgColor}${fontFamilyAttr}${visibilityAttr}\n>${tableHtml}</mj-text>`;\n}\nfunction renderTableElement(block) {\n const borderColor = escapeAttr(block.borderColor);\n const borderWidth = block.borderWidth;\n const tableStyle = \"width: 100%; border-collapse: collapse;\";\n let rowsHtml = \"\";\n for (let index = 0; index < block.rows.length; index++) {\n const row = block.rows[index];\n const isHeader = block.hasHeaderRow && index === 0;\n rowsHtml += renderRow(row, block, isHeader, borderColor, borderWidth);\n }\n return `<table style=\"${tableStyle}\">${rowsHtml}</table>`;\n}\nfunction renderRow(row, block, isHeader, borderColor, borderWidth) {\n let cellsHtml = \"\";\n for (const cell of row.cells) {\n cellsHtml += renderCell(cell, block, isHeader, borderColor, borderWidth);\n }\n return `<tr>${cellsHtml}</tr>`;\n}\nfunction renderCell(cell, block, isHeader, borderColor, borderWidth) {\n const cellPadding = block.cellPadding;\n const styles = [\n `border: ${borderWidth}px solid ${borderColor}`,\n `padding: ${cellPadding}px`\n ];\n if (isHeader) {\n styles.push(\"font-weight: bold\");\n if (block.headerBackgroundColor) {\n styles.push(\n `background-color: ${escapeAttr(block.headerBackgroundColor)}`\n );\n }\n }\n const styleAttr = styles.join(\"; \");\n const content = convertMergeTagsToValues(cell.content);\n const tag = isHeader ? \"th\" : \"td\";\n return `<${tag} style=\"${styleAttr}\">${content}</${tag}>`;\n}\nfunction renderFontFamilyAttr4(fontFamily, context) {\n if (!fontFamily) {\n return \"\";\n }\n const resolved = context.resolveFontFamily(fontFamily);\n return ` font-family=\"${resolved}\"`;\n}\n\n// src/renderers/custom.ts\nfunction renderCustom(block, _context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const content = block.renderedHtml;\n if (!content || content === \"\") {\n return \"\";\n }\n const visibilityAttr = getCssClassAttr(block);\n return `<mj-text${visibilityAttr}>\n${content}\n</mj-text>`;\n}\n\n// src/columns.ts\nfunction getWidthPercentages(layout) {\n switch (layout) {\n case \"2\":\n return [\"50%\", \"50%\"];\n case \"3\":\n return [\"33.33%\", \"33.33%\", \"33.33%\"];\n case \"1-2\":\n return [\"33.33%\", \"66.67%\"];\n case \"2-1\":\n return [\"66.67%\", \"33.33%\"];\n default:\n return [\"100%\"];\n }\n}\nfunction getWidthPixels(layout, containerWidth) {\n switch (layout) {\n case \"2\":\n return [containerWidth * 0.5, containerWidth * 0.5];\n case \"3\":\n return [containerWidth / 3, containerWidth / 3, containerWidth / 3];\n case \"1-2\":\n return [containerWidth / 3, containerWidth * 2 / 3];\n case \"2-1\":\n return [containerWidth * 2 / 3, containerWidth / 3];\n default:\n return [containerWidth];\n }\n}\n\n// src/renderers/section.ts\nfunction renderSection(block, context, renderBlock2) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const columnsLayout = block.columns;\n const columnWidths = getWidthPercentages(columnsLayout);\n const columnWidthsPx = getWidthPixels(columnsLayout, context.containerWidth);\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const visibilityAttr = getCssClassAttr(block);\n const children = block.children;\n const columnsContent = [];\n for (let index = 0; index < children.length; index++) {\n const column = children[index];\n const width = columnWidths[index] ?? \"100%\";\n const columnWidth = Math.floor(\n columnWidthsPx[index] ?? context.containerWidth\n );\n const filteredColumn = filterHtmlBlocks(column, context.allowHtmlBlocks);\n const columnContext = context.withContainerWidth(columnWidth);\n const columnBlocks = filteredColumn.map((child) => renderBlock2(child, columnContext)).filter((value) => value !== \"\").join(\"\\n\");\n const content = columnBlocks === \"\" ? \"<mj-text>&nbsp;</mj-text>\" : columnBlocks;\n columnsContent.push(`<mj-column width=\"${width}\">\n${content}\n</mj-column>`);\n }\n const columns = columnsContent.join(\"\\n\");\n return `<mj-section${bgColor} padding=\"${padding}\"${visibilityAttr}>\n${columns}\n</mj-section>`;\n}\nfunction filterHtmlBlocks(blocks, allowHtmlBlocks) {\n if (allowHtmlBlocks) {\n return blocks;\n }\n return blocks.filter((block) => block.type !== \"html\");\n}\n\n// src/renderers/video.ts\nfunction getVideoThumbnail(url, customThumbnail) {\n if (customThumbnail) {\n return customThumbnail;\n }\n if (!url) {\n return null;\n }\n const youtubePatterns = [\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/,\n /youtube\\.com\\/shorts\\/([a-zA-Z0-9_-]{11})/\n ];\n for (const pattern of youtubePatterns) {\n const match = url.match(pattern);\n if (match) {\n return `https://img.youtube.com/vi/${match[1]}/maxresdefault.jpg`;\n }\n }\n const vimeoMatch = url.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n if (vimeoMatch) {\n return `https://vumbnail.com/${vimeoMatch[1]}.jpg`;\n }\n return null;\n}\nfunction renderVideo(block, context) {\n if (isHiddenOnAll(block)) {\n return \"\";\n }\n const thumbnailUrl = getVideoThumbnail(block.url, block.thumbnailUrl);\n if (!thumbnailUrl) {\n return \"\";\n }\n const padding = toPaddingString(block.styles.padding);\n const bgColor = block.styles.backgroundColor ? ` background-color=\"${block.styles.backgroundColor}\"` : \"\";\n const width = block.width === \"full\" ? context.containerWidth + \"px\" : block.width + \"px\";\n const visibilityAttr = getCssClassAttr(block);\n const src = escapeAttr(thumbnailUrl);\n const alt = escapeAttr(block.alt);\n const align = block.align;\n const href = escapeAttr(block.url);\n return `<mj-image\n src=\"${src}\"\n alt=\"${alt}\"\n width=\"${width}\"\n align=\"${align}\"\n padding=\"${padding}\"\n href=\"${href}\"\n target=\"_blank\"${bgColor}${visibilityAttr}\n/>`;\n}\n\n// src/renderers/index.ts\nfunction renderBlock(block, context) {\n if (isSection(block)) {\n return renderSection(block, context, renderBlock);\n }\n if (isTitle(block)) {\n return renderTitle(block, context);\n }\n if (isParagraph(block)) {\n return renderParagraph(block, context);\n }\n if (isImage(block)) {\n return renderImage(block, context);\n }\n if (isButton(block)) {\n return renderButton(block, context);\n }\n if (isDivider(block)) {\n return renderDivider(block, context);\n }\n if (isSpacer(block)) {\n return renderSpacer(block, context);\n }\n if (isHtml(block)) {\n return renderHtml(block, context);\n }\n if (isSocialIcons(block)) {\n return renderSocialIcons(block, context);\n }\n if (isMenu(block)) {\n return renderMenu(block, context);\n }\n if (isTable(block)) {\n return renderTable(block, context);\n }\n if (isVideo(block)) {\n return renderVideo(block, context);\n }\n if (isCustomBlock(block)) {\n return renderCustom(block, context);\n }\n return \"\";\n}\n\n// src/index.ts\nfunction renderToMjml(content, options) {\n const customFonts = options?.customFonts ?? [];\n const defaultFallbackFont = options?.defaultFallbackFont ?? \"Arial, sans-serif\";\n const allowHtmlBlocks = options?.allowHtmlBlocks ?? true;\n const renderContext = new RenderContext(\n content.settings.width,\n customFonts,\n defaultFallbackFont,\n allowHtmlBlocks\n );\n const blocks = filterHtmlBlocks2(content.blocks, allowHtmlBlocks);\n const fontFamily = renderContext.resolveFontFamily(\n content.settings.fontFamily\n );\n const backgroundColor = content.settings.backgroundColor;\n const bodyContent = blocks.map((block) => renderTopLevelBlock(block, renderContext)).filter((value) => value !== \"\").join(\"\\n\");\n const fontDeclarations = generateFontDeclarations(customFonts);\n const previewTag = generatePreviewTag(content.settings.preheaderText);\n return `<mjml>\n <mj-head>${previewTag}\n <mj-attributes>\n <mj-all font-family=\"${fontFamily}\" />\n <mj-section padding=\"0\" />\n <mj-column padding=\"0\" />\n <mj-image fluid-on-mobile=\"true\" />\n </mj-attributes>${fontDeclarations}\n <mj-style>\n a { color: inherit; text-decoration: none; }\n @media only screen and (max-width: 480px) {\n .tpl-hide-mobile { display: none !important; mso-hide: all !important; }\n }\n @media only screen and (min-width: 481px) and (max-width: 768px) {\n .tpl-hide-tablet { display: none !important; mso-hide: all !important; }\n }\n @media only screen and (min-width: 769px) {\n .tpl-hide-desktop { display: none !important; mso-hide: all !important; }\n }\n </mj-style>\n </mj-head>\n <mj-body width=\"${renderContext.containerWidth}px\" background-color=\"${backgroundColor}\">\n${bodyContent}\n </mj-body>\n</mjml>`;\n}\nfunction renderTopLevelBlock(block, context) {\n if (isSection2(block)) {\n const rendered = renderBlock(block, context);\n return wrapWithDisplayCondition(block, rendered);\n }\n const content = renderBlock(block, context);\n const wrapped = wrapInSection(content);\n return wrapWithDisplayCondition(block, wrapped);\n}\nfunction wrapWithDisplayCondition(block, rendered) {\n if (rendered === \"\") {\n return \"\";\n }\n const displayCondition = block.displayCondition;\n if (!displayCondition) {\n return rendered;\n }\n return `<mj-raw>${displayCondition.before}</mj-raw>\n` + rendered + `\n<mj-raw>${displayCondition.after}</mj-raw>`;\n}\nfunction wrapInSection(content) {\n if (content === \"\") {\n return \"\";\n }\n return `<mj-section>\n <mj-column>\n${content}\n </mj-column>\n</mj-section>`;\n}\nfunction generatePreviewTag(preheaderText) {\n if (!preheaderText) {\n return \"\";\n }\n const trimmed = preheaderText.trim();\n if (trimmed === \"\") {\n return \"\";\n }\n const escaped = escapeHtml(trimmed);\n return `\n <mj-preview>${escaped}</mj-preview>`;\n}\nfunction generateFontDeclarations(customFonts) {\n if (customFonts.length === 0) {\n return \"\";\n }\n return customFonts.map(\n (font) => `\n <mj-font name=\"${escapeAttr(font.name)}\" href=\"${escapeAttr(font.url)}\" />`\n ).join(\"\");\n}\nfunction filterHtmlBlocks2(blocks, allowHtmlBlocks) {\n if (allowHtmlBlocks) {\n return blocks;\n }\n return blocks.filter((block) => block.type !== \"html\");\n}\nexport {\n RenderContext,\n SOCIAL_ICONS,\n convertMergeTagsToValues,\n escapeAttr,\n escapeHtml,\n generateSocialIconDataUri,\n getCssClassAttr,\n getCssClasses,\n getWidthPercentages,\n getWidthPixels,\n isHiddenOnAll,\n renderBlock,\n renderToMjml,\n toPaddingString\n};\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { m as e, p as t } from "./tiptap-DplY-S-k.js";
2
+ export { t as StarterKit, e as default };
@@ -0,0 +1,2 @@
1
+ import { A as e, D as t, O as n, k as r } from "./tiptap-DplY-S-k.js";
2
+ export { t as Highlight, n as default, r as inputRegex, e as pasteRegex };
@@ -0,0 +1,2 @@
1
+ import { $ as ee, $t as te, An as ne, At as e, B as t, Bn as n, Bt as r, Cn as i, Ct as a, Dn as o, Dt as s, En as c, Et as l, Fn as u, Ft as d, G as f, Gn as p, Gt as m, H as h, Hn as g, Ht as _, In as v, It as y, J as b, Jn as x, Jt as S, K as C, Kn as w, Kt as T, Ln as E, Lt as D, Mn as O, Mt as k, Nn as A, Nt as j, On as M, Ot as N, Pn as P, Pt as F, Q as I, Qn as L, Qt as R, Rn as z, Rt as B, Sn as V, St as H, Tn as U, Tt as W, U as G, Un as K, Ut as q, V as J, Vn as Y, Vt as X, W as Z, Wn as re, Wt as ie, X as ae, Xn as oe, Xt as se, Y as ce, Yn as le, Yt as ue, Z as de, Zn as fe, Zt as pe, _n as me, _t as he, a as ge, an as _e, at as ve, bn as ye, bt as Q, c as be, cn as xe, ct as Se, d as Ce, dn as we, dt as Te, en as Ee, et as De, f as Oe, fn as ke, ft as Ae, gn as je, gt as Me, hn as Ne, ht as Pe, i as Fe, in as Ie, it as Le, jn as Re, jt as ze, kn as Be, kt as Ve, l as He, ln as Ue, lt as We, mn as Ge, mt as Ke, n as qe, nn as Je, nt as Ye, o as Xe, on as Ze, ot as Qe, pn as $e, pt as et, q as tt, qn as nt, qt as rt, r as it, rn as at, rt as ot, s as st, sn as ct, st as lt, t as ut, tn as $, tt as dt, u as ft, un as pt, ut as mt, vn as ht, vt as gt, wn as _t, wt as vt, xn as yt, xt as bt, yn as xt, yt as St, zn as Ct, zt as wt } from "./tiptap-DplY-S-k.js";
2
+ export { t as CommandManager, ut as Editor, qe as EditorContent, J as Extendable, h as Extension, G as Fragment, Z as InputRule, f as MappablePosition, C as Mark, tt as MarkView, it as MarkViewContent, b as Node, ce as NodePos, ae as NodeView, Fe as NodeViewContent, ge as NodeViewWrapper, de as PasteRule, I as ResizableNodeView, ee as ResizableNodeview, De as Tracker, Xe as VueMarkView, st as VueMarkViewRenderer, be as VueNodeViewRenderer, He as VueRenderer, dt as callOrReturn, Ye as canInsertNode, ot as cancelPositionCheck, Le as combineTransactionSteps, ve as commands, Qe as createAtomBlockMarkdownSpec, lt as createBlockMarkdownSpec, Se as createChainableState, We as createDocument, $ as createElement, $ as h, mt as createInlineMarkdownSpec, Te as createMappablePosition, Ae as createNodeFromContent, et as createStyleTag, Ke as decodeHtmlEntities, Pe as defaultBlockAt, Me as deleteProps, he as elementFromString, gt as encodeHtmlEntities, St as escapeForRegEx, Q as extensions, bt as findChildren, H as findChildrenInRange, a as findDuplicates, vt as findParentNode, W as findParentNodeClosestToPos, l as flattenExtensions, s as fromString, N as generateHTML, Ve as generateJSON, e as generateText, ze as getAttributes, k as getAttributesFromExtensions, j as getChangedRanges, F as getDebugJSON, d as getExtensionField, y as getHTMLFromFragment, D as getMarkAttributes, B as getMarkRange, wt as getMarkType, r as getMarksBetween, X as getNodeAtPosition, _ as getNodeAttributes, q as getNodeType, ie as getRenderedAttributes, m as getSchema, T as getSchemaByResolvedExtensions, rt as getSchemaTypeByName, S as getSchemaTypeNameByName, ue as getSplittedAttributes, se as getText, pe as getTextBetween, R as getTextContentFromNodes, te as getTextSerializersFromSchema, Ee as getUpdatedPosition, Je as injectExtensionAttributesToParseRule, at as inputRulesPlugin, Ie as isActive, _e as isAndroid, Ze as isAtEndOfNode, ct as isAtStartOfNode, xe as isEmptyObject, Ue as isExtensionRulesEnabled, pt as isFirefox, we as isFunction, ke as isList, $e as isMacOS, Ge as isMarkActive, Ne as isNodeActive, je as isNodeEmpty, me as isNodeSelection, ht as isNumber, xt as isPlainObject, ye as isRegExp, yt as isSafari, V as isString, i as isTextSelection, _t as isiOS, U as markInputRule, c as markPasteRule, ft as markViewProps, o as markdown, M as mergeAttributes, Be as mergeDeep, ne as minMax, Re as nodeInputRule, O as nodePasteRule, Ce as nodeViewProps, A as objectIncludes, P as parseAttributes, u as parseIndentedBlocks, v as pasteRulesPlugin, E as posToDOMRect, z as removeDuplicates, Ct as renderNestedMarkdownContent, n as resolveExtensions, Y as resolveFocusPosition, g as rewriteUnknownContent, K as schedulePositionCheck, re as selectionToInsertionEnd, p as serializeAttributes, w as sortExtensions, nt as splitExtensions, x as textInputRule, le as textPasteRule, oe as textblockTypeInputRule, fe as updateMarkViewAttributes, Oe as useEditor, L as wrappingInputRule };
@@ -0,0 +1,2 @@
1
+ import { _ as e, v as t } from "./tiptap-DplY-S-k.js";
2
+ export { e as TextAlign, t as default };
@@ -0,0 +1,2 @@
1
+ import { C as e, E as t, T as n, w as r } from "./tiptap-DplY-S-k.js";
2
+ export { e as Link, r as default, n as isAllowedUri, t as pasteRegex };
@@ -0,0 +1,2 @@
1
+ import { b as e, y as t } from "./tiptap-DplY-S-k.js";
2
+ export { t as Superscript, e as default };
@@ -0,0 +1,2 @@
1
+ import { F as e, I as t, L as n, N as r, P as i, R as a, z as o } from "./tiptap-DplY-S-k.js";
2
+ export { r as BackgroundColor, i as Color, e as FontFamily, t as FontSize, n as LineHeight, a as TextStyle, o as TextStyleKit };
@@ -0,0 +1,2 @@
1
+ import { M as e, P as t } from "./tiptap-DplY-S-k.js";
2
+ export { t as Color, e as default };
@@ -0,0 +1,2 @@
1
+ import { g as e, h as t } from "./tiptap-DplY-S-k.js";
2
+ export { t as Underline, e as default };
@@ -0,0 +1,2 @@
1
+ import { F as e, j as t } from "./tiptap-DplY-S-k.js";
2
+ export { e as FontFamily, t as default };