@templatical/editor 0.12.0 → 0.13.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 (93) hide show
  1. package/dist/{AiChatSidebar-CXH7l1Ar.js → AiChatSidebar-B0-U5-sb.js} +3 -3
  2. package/dist/{AiFeatureMenu-BKbUUc1D.js → AiFeatureMenu-DxDwLS8B.js} +1 -1
  3. package/dist/{CloudEditor-F5YV5hE3.js → CloudEditor-DaEfipBn.js} +190 -158
  4. package/dist/{CollaboratorBar-ACUA7lBJ.js → CollaboratorBar-DgwjisX2.js} +1 -1
  5. package/dist/{CountdownBlock-C-6o19qS.js → CountdownBlock-DO9fziwf.js} +1 -1
  6. package/dist/{CountdownToolbar-CDy9_2Yj.js → CountdownToolbar-BeII06yJ.js} +1 -1
  7. package/dist/{DesignReferenceSidebar-0dTsBW08.js → DesignReferenceSidebar-BgPDbOsl.js} +19 -31
  8. package/dist/{ModuleBrowserModal-Bz9hSjMS.js → ModuleBrowserModal-DsZRr87F.js} +4 -4
  9. package/dist/{ModulePreviewCanvas-CpaumPMS.js → ModulePreviewCanvas-Dni9kK4j.js} +19 -19
  10. package/dist/{NumberWithSuffix-Cd7bz1Wk.js → NumberWithSuffix-D3fdj0iO.js} +101 -79
  11. package/dist/{ParagraphEditor-BqRFV_Y-.js → ParagraphEditor-CZ-cmhX3.js} +7 -7
  12. package/dist/{SaveModuleDialog-DmfvH5D0.js → SaveModuleDialog-C38VqN2T.js} +2 -2
  13. package/dist/{SnapshotHistory-C052o-8U.js → SnapshotHistory-ByloTpwh.js} +2 -2
  14. package/dist/{TemplateScoringPanel-CUs8XmIi.js → TemplateScoringPanel-CUxiPtEf.js} +1 -1
  15. package/dist/{TestEmailModal-BIIxRWUt.js → TestEmailModal-BvZBMBad.js} +2 -2
  16. package/dist/{TitleEditor-FMh54Cx5.js → TitleEditor-DbNOcvhR.js} +1 -1
  17. package/dist/{TplModal-utMtXzSO.js → TplModal-BYb-X5Bj.js} +1 -1
  18. package/dist/{blockTypeIcons-C6UGDmrC.js → blockTypeIcons-CyAom3iI.js} +4 -4
  19. package/dist/bundle-stats.json +8 -8
  20. package/dist/cdn/chunks/{AiFeatureMenu-4NhCFeTh.js → AiFeatureMenu-BSoy-SoF.js} +7 -7
  21. package/dist/cdn/chunks/{AiFeatureMenu-4NhCFeTh.js.map → AiFeatureMenu-BSoy-SoF.js.map} +1 -1
  22. package/dist/cdn/chunks/{BlockIssueBadge-BYKThwhE.js → BlockIssueBadge-BQDUuJxy.js} +4 -4
  23. package/dist/cdn/chunks/{BlockIssueBadge-BYKThwhE.js.map → BlockIssueBadge-BQDUuJxy.js.map} +1 -1
  24. package/dist/cdn/chunks/{CloudEditor-OO8hWAVp.js → CloudEditor-BZuzsQOZ.js} +231 -199
  25. package/dist/cdn/chunks/CloudEditor-BZuzsQOZ.js.map +1 -0
  26. package/dist/cdn/chunks/{CollaboratorBar-Dn5gXNDt.js → CollaboratorBar-DUpSrtDr.js} +3 -3
  27. package/dist/cdn/chunks/{CollaboratorBar-Dn5gXNDt.js.map → CollaboratorBar-DUpSrtDr.js.map} +1 -1
  28. package/dist/cdn/chunks/{CountdownBlock-hYoJdVOt.js → CountdownBlock-DChGTAsH.js} +2 -2
  29. package/dist/cdn/chunks/{CountdownBlock-hYoJdVOt.js.map → CountdownBlock-DChGTAsH.js.map} +1 -1
  30. package/dist/cdn/chunks/{CountdownToolbar-BXjDFRHI.js → CountdownToolbar-C6gX2SJr.js} +3 -3
  31. package/dist/cdn/chunks/CountdownToolbar-C6gX2SJr.js.map +1 -0
  32. package/dist/cdn/chunks/{IssuesPanel-_5fEnivU.js → IssuesPanel-Bo1uhdSe.js} +6 -6
  33. package/dist/cdn/chunks/{IssuesPanel-_5fEnivU.js.map → IssuesPanel-Bo1uhdSe.js.map} +1 -1
  34. package/dist/cdn/chunks/{ModuleBrowserModal-DtCksAeW.js → ModuleBrowserModal-a-tZRCcD.js} +8 -8
  35. package/dist/cdn/chunks/{ModuleBrowserModal-DtCksAeW.js.map → ModuleBrowserModal-a-tZRCcD.js.map} +1 -1
  36. package/dist/cdn/chunks/{ModulePreviewCanvas-CCOvabZd.js → ModulePreviewCanvas-Bm6k0Op0.js} +24 -24
  37. package/dist/cdn/chunks/{ModulePreviewCanvas-CCOvabZd.js.map → ModulePreviewCanvas-Bm6k0Op0.js.map} +1 -1
  38. package/dist/cdn/chunks/{NumberWithSuffix-ZuJ2ePB0.js → NumberWithSuffix-HTbuD3VJ.js} +139 -118
  39. package/dist/cdn/chunks/NumberWithSuffix-HTbuD3VJ.js.map +1 -0
  40. package/dist/cdn/chunks/{ParagraphEditor-BnhnFOW1.js → ParagraphEditor-pGrfSccu.js} +13 -13
  41. package/dist/cdn/chunks/{ParagraphEditor-BnhnFOW1.js.map → ParagraphEditor-pGrfSccu.js.map} +1 -1
  42. package/dist/cdn/chunks/{RichTextEditorContent-DV2yknp8.js → RichTextEditorContent-D7XZix_1.js} +4 -4
  43. package/dist/cdn/chunks/{RichTextEditorContent-DV2yknp8.js.map → RichTextEditorContent-D7XZix_1.js.map} +1 -1
  44. package/dist/cdn/chunks/{SaveModuleDialog-CCX5U7VA.js → SaveModuleDialog-C9PQ9x6j.js} +4 -4
  45. package/dist/cdn/chunks/{SaveModuleDialog-CCX5U7VA.js.map → SaveModuleDialog-C9PQ9x6j.js.map} +1 -1
  46. package/dist/cdn/chunks/{TitleEditor-CQqklX0D.js → TitleEditor-BvFbL16O.js} +7 -7
  47. package/dist/cdn/chunks/{TitleEditor-CQqklX0D.js.map → TitleEditor-BvFbL16O.js.map} +1 -1
  48. package/dist/cdn/chunks/{blockTypeIcons-CpGPHppB.js → blockTypeIcons-Kd1MT0u8.js} +7 -7
  49. package/dist/cdn/chunks/{blockTypeIcons-CpGPHppB.js.map → blockTypeIcons-Kd1MT0u8.js.map} +1 -1
  50. package/dist/cdn/chunks/{de-DpBN9H7-.js → de-C2wOXoxs.js} +6 -2
  51. package/dist/cdn/chunks/de-C2wOXoxs.js.map +1 -0
  52. package/dist/cdn/chunks/{en-BhHtdIiU.js → en-dR7zfNC3.js} +6 -2
  53. package/dist/cdn/chunks/en-dR7zfNC3.js.map +1 -0
  54. package/dist/cdn/chunks/{extensions-Ds9GnMcd.js → extensions-CuUjSmuA.js} +23 -23
  55. package/dist/cdn/chunks/{extensions-Ds9GnMcd.js.map → extensions-CuUjSmuA.js.map} +1 -1
  56. package/dist/cdn/chunks/{features-DxWz_Enw.js → features-DU6lA8l1.js} +471 -420
  57. package/dist/cdn/chunks/features-DU6lA8l1.js.map +1 -0
  58. package/dist/cdn/chunks/{icons-BflGUmFY.js → icons-BjHUZZyJ.js} +2 -2
  59. package/dist/cdn/chunks/{icons-BflGUmFY.js.map → icons-BjHUZZyJ.js.map} +1 -1
  60. package/dist/cdn/chunks/{media-library-C479-QcE.js → media-library-Byelliig.js} +575 -575
  61. package/dist/cdn/chunks/media-library-Byelliig.js.map +1 -0
  62. package/dist/{pt-BR-Bth5a93y.js → cdn/chunks/pt-BR-BZ86xqK6.js} +7 -1
  63. package/dist/cdn/chunks/pt-BR-BZ86xqK6.js.map +1 -0
  64. package/dist/cdn/chunks/{quality-BL_pEvFP.js → quality-DNnYAntR.js} +83 -83
  65. package/dist/cdn/chunks/{quality-BL_pEvFP.js.map → quality-DNnYAntR.js.map} +1 -1
  66. package/dist/cdn/chunks/{renderer-DwPomkBw.js → renderer-CZKO-Tav.js} +19 -19
  67. package/dist/cdn/chunks/{renderer-DwPomkBw.js.map → renderer-CZKO-Tav.js.map} +1 -1
  68. package/dist/cdn/chunks/{src-DzvOWQ9S.js → src-DsqSXXjk.js} +53 -53
  69. package/dist/cdn/chunks/{src-DzvOWQ9S.js.map → src-DsqSXXjk.js.map} +1 -1
  70. package/dist/cdn/chunks/{styles-D45rgVq8.js → styles-DiAdtiz9.js} +865 -785
  71. package/dist/cdn/chunks/styles-DiAdtiz9.js.map +1 -0
  72. package/dist/cdn/editor.css +1 -1
  73. package/dist/cdn/editor.js +124 -122
  74. package/dist/cdn/editor.js.map +1 -1
  75. package/dist/{de-DpBN9H7-.js → de-C2wOXoxs.js} +5 -1
  76. package/dist/{dist-DJ9aD8yA.js → dist-Cgry6fNv.js} +53 -4
  77. package/dist/{en-BhHtdIiU.js → en-dR7zfNC3.js} +5 -1
  78. package/dist/{cdn/chunks/pt-BR-Bth5a93y.js → pt-BR-BZ86xqK6.js} +5 -3
  79. package/dist/style.css +1 -1
  80. package/dist/{styles-Dp4mJuCM.js → styles-D0RCAWhB.js} +866 -784
  81. package/dist/templatical-editor.js +94 -92
  82. package/dist/upload-BF7sxd1_.js +17 -0
  83. package/dist/{useEditorCore-D7dQFRkw.js → useEditorCore-DKYZ7aKk.js} +788 -735
  84. package/package.json +7 -7
  85. package/dist/cdn/chunks/CloudEditor-OO8hWAVp.js.map +0 -1
  86. package/dist/cdn/chunks/CountdownToolbar-BXjDFRHI.js.map +0 -1
  87. package/dist/cdn/chunks/NumberWithSuffix-ZuJ2ePB0.js.map +0 -1
  88. package/dist/cdn/chunks/de-DpBN9H7-.js.map +0 -1
  89. package/dist/cdn/chunks/en-BhHtdIiU.js.map +0 -1
  90. package/dist/cdn/chunks/features-DxWz_Enw.js.map +0 -1
  91. package/dist/cdn/chunks/media-library-C479-QcE.js.map +0 -1
  92. package/dist/cdn/chunks/pt-BR-Bth5a93y.js.map +0 -1
  93. package/dist/cdn/chunks/styles-D45rgVq8.js.map +0 -1
@@ -1523,7 +1523,7 @@ function gr(e) {
1523
1523
  o || l();
1524
1524
  async function l() {
1525
1525
  try {
1526
- let t = await import("./quality-BL_pEvFP.js").then((e) => e.t);
1526
+ let t = await import("./quality-DNnYAntR.js").then((e) => e.t);
1527
1527
  if (c) return;
1528
1528
  a.value = { lintTemplate: t.lintTemplate }, r.value = !0, u(), s = un(e.content, u, {
1529
1529
  debounce: e.debounce ?? 500,
@@ -3038,14 +3038,32 @@ function ba() {
3038
3038
  }), e;
3039
3039
  }
3040
3040
  //#endregion
3041
+ //#region src/composables/useImageDrop.ts
3042
+ var xa = "image/";
3043
+ function Sa(e) {
3044
+ let { target: t, onFiles: n, enabled: r } = e, i = () => r === void 0 ? !0 : P(r), { isOverDropZone: a } = Tn(t, {
3045
+ preventDefaultForUnhandled: !0,
3046
+ onDrop: (e) => {
3047
+ if (!i()) return;
3048
+ let t = (e ?? []).filter((e) => e.type.startsWith(xa));
3049
+ t.length > 0 && n([t[0]]);
3050
+ }
3051
+ });
3052
+ return { isOver: O(() => i() && a.value) };
3053
+ }
3054
+ //#endregion
3041
3055
  //#region src/components/blocks/ImageBlock.vue?vue&type=script&setup=true&lang.ts
3042
- var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3056
+ var Ca = {
3057
+ key: 0,
3058
+ class: "tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:z-10 tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-xs tpl:font-medium tpl:border-[var(--tpl-primary)] tpl:text-[var(--tpl-primary)]",
3059
+ style: { "background-color": "color-mix(in srgb, var(--tpl-bg) 85%, transparent)" }
3060
+ }, wa = ["href"], Ta = ["src", "alt"], Ea = ["src", "alt"], Da = {
3043
3061
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
3044
3062
  style: { opacity: "0.7" }
3045
- }, Ta = ["href"], Ea = ["src", "alt"], Da = ["src", "alt"], Oa = {
3046
- key: 3,
3063
+ }, Oa = ["href"], ka = ["src", "alt"], Aa = ["src", "alt"], ja = {
3064
+ key: 4,
3047
3065
  class: "tpl:flex tpl:min-h-[100px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
3048
- }, ka = ["aria-label"], Aa = { key: 1 }, ja = /* @__PURE__ */ B({
3066
+ }, Ma = ["aria-label"], Na = { key: 1 }, Pa = /* @__PURE__ */ B({
3049
3067
  __name: "ImageBlock",
3050
3068
  props: {
3051
3069
  block: {},
@@ -3061,7 +3079,30 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3061
3079
  e.alt && (t.alt = e.alt), r("update", t);
3062
3080
  }
3063
3081
  }
3064
- let u = O(() => ({ textAlign: n.block.align })), d = O(() => {
3082
+ let u = C(), d = C(!1), p = O(() => s.value && !d.value && !y.value);
3083
+ async function m(e) {
3084
+ if (o) {
3085
+ d.value = !0;
3086
+ try {
3087
+ let t = await o({
3088
+ accept: ["images"],
3089
+ files: e
3090
+ });
3091
+ if (!c.alive) return;
3092
+ if (t) {
3093
+ let e = { src: t.url };
3094
+ t.alt && (e.alt = t.alt), r("update", e);
3095
+ }
3096
+ } finally {
3097
+ c.alive && (d.value = !1);
3098
+ }
3099
+ }
3100
+ }
3101
+ let { isOver: h } = Sa({
3102
+ target: u,
3103
+ enabled: p,
3104
+ onFiles: m
3105
+ }), g = O(() => ({ textAlign: n.block.align })), _ = O(() => {
3065
3106
  let e = n.block.align;
3066
3107
  return {
3067
3108
  maxWidth: "100%",
@@ -3070,11 +3111,21 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3070
3111
  marginLeft: e === "center" || e === "right" ? "auto" : void 0,
3071
3112
  marginRight: e === "center" ? "auto" : void 0
3072
3113
  };
3073
- }), p = O(() => yt(n.block.src, a));
3114
+ }), y = O(() => yt(n.block.src, a));
3074
3115
  return (t, n) => (f(), k("div", {
3075
- class: "tpl:w-full",
3076
- style: L(u.value)
3077
- }, [e.block.src && p.value && e.block.placeholderUrl ? (f(), k(R, { key: 0 }, [e.block.linkUrl ? (f(), k("a", {
3116
+ ref_key: "dropZoneRef",
3117
+ ref: u,
3118
+ "data-testid": "image-drop-zone",
3119
+ class: "tpl:relative tpl:w-full",
3120
+ style: L(g.value)
3121
+ }, [p.value && (j(h) || d.value) ? (f(), k("div", Ca, [d.value ? (f(), k(R, { key: 0 }, [V(j(Jr), {
3122
+ class: "tpl-spinner",
3123
+ size: 20,
3124
+ "stroke-width": 2
3125
+ }), z(" " + D(j(i).image.uploading), 1)], 64)) : (f(), k(R, { key: 1 }, [V(j(ki), {
3126
+ size: 20,
3127
+ "stroke-width": 1.5
3128
+ }), z(" " + D(j(i).image.dropToUpload), 1)], 64))])) : A("", !0), e.block.src && y.value && e.block.placeholderUrl ? (f(), k(R, { key: 1 }, [e.block.linkUrl ? (f(), k("a", {
3078
3129
  key: 0,
3079
3130
  href: e.block.linkUrl,
3080
3131
  target: "_blank",
@@ -3085,23 +3136,23 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3085
3136
  loading: "lazy",
3086
3137
  src: e.block.placeholderUrl,
3087
3138
  alt: e.block.alt || j(i).image.altTextPlaceholder,
3088
- style: L(d.value)
3089
- }, null, 12, Sa)], 8, xa)) : (f(), k("img", {
3139
+ style: L(_.value)
3140
+ }, null, 12, Ta)], 8, wa)) : (f(), k("img", {
3090
3141
  key: 1,
3091
3142
  class: "tpl:border-0",
3092
3143
  src: e.block.placeholderUrl,
3093
3144
  alt: e.block.alt,
3094
- style: L(d.value)
3095
- }, null, 12, Ca))], 64)) : e.block.src && p.value ? (f(), k("div", {
3096
- key: 1,
3145
+ style: L(_.value)
3146
+ }, null, 12, Ea))], 64)) : e.block.src && y.value ? (f(), k("div", {
3147
+ key: 2,
3097
3148
  class: "tpl:!flex tpl:min-h-[120px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
3098
- style: L([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, d.value])
3149
+ style: L([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, _.value])
3099
3150
  }, [V(j(mi), {
3100
3151
  size: 32,
3101
3152
  "stroke-width": 1.5,
3102
3153
  class: "tpl:text-[var(--tpl-primary)]",
3103
3154
  style: { opacity: "0.5" }
3104
- }), I("span", wa, D(e.block.src), 1)], 4)) : e.block.src ? (f(), k(R, { key: 2 }, [e.block.linkUrl ? (f(), k("a", {
3155
+ }), I("span", Da, D(e.block.src), 1)], 4)) : e.block.src ? (f(), k(R, { key: 3 }, [e.block.linkUrl ? (f(), k("a", {
3105
3156
  key: 0,
3106
3157
  href: e.block.linkUrl,
3107
3158
  target: "_blank",
@@ -3112,14 +3163,14 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3112
3163
  loading: "lazy",
3113
3164
  src: e.block.src,
3114
3165
  alt: e.block.alt || j(i).image.altTextPlaceholder,
3115
- style: L(d.value)
3116
- }, null, 12, Ea)], 8, Ta)) : (f(), k("img", {
3166
+ style: L(_.value)
3167
+ }, null, 12, ka)], 8, Oa)) : (f(), k("img", {
3117
3168
  key: 1,
3118
3169
  class: "tpl:border-0",
3119
3170
  src: e.block.src,
3120
3171
  alt: e.block.alt,
3121
- style: L(d.value)
3122
- }, null, 12, Da))], 64)) : (f(), k("div", Oa, [s.value ? (f(), k("button", {
3172
+ style: L(_.value)
3173
+ }, null, 12, Aa))], 64)) : (f(), k("div", ja, [s.value ? (f(), k("button", {
3123
3174
  key: 0,
3124
3175
  "aria-label": j(i).image.browseMedia,
3125
3176
  class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:cursor-pointer tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-primary)] tpl:bg-[var(--tpl-bg)]",
@@ -3127,12 +3178,12 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3127
3178
  }, [V(j(mi), {
3128
3179
  size: 14,
3129
3180
  "stroke-width": 1.5
3130
- }), z(" " + D(j(i).image.browseMedia), 1)], 8, ka)) : (f(), k("span", Aa, D(j(i).image.clickToAdd), 1))]))], 4));
3181
+ }), z(" " + D(j(i).image.browseMedia), 1)], 8, Ma)) : (f(), k("span", Na, D(j(i).image.clickToAdd), 1))]))], 4));
3131
3182
  }
3132
- }), Ma = { class: "tpl:w-full" }, Na = ["href"], Pa = {
3183
+ }), Fa = { class: "tpl:w-full" }, Ia = ["href"], La = {
3133
3184
  key: 1,
3134
3185
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
3135
- }, Fa = /* @__PURE__ */ B({
3186
+ }, Ra = /* @__PURE__ */ B({
3136
3187
  __name: "MenuBlock",
3137
3188
  props: {
3138
3189
  block: {},
@@ -3151,7 +3202,7 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3151
3202
  function a(e) {
3152
3203
  return e || t.block.linkColor || t.block.color;
3153
3204
  }
3154
- return (t, o) => (f(), k("div", Ma, [i.value ? (f(), k("div", {
3205
+ return (t, o) => (f(), k("div", Fa, [i.value ? (f(), k("div", {
3155
3206
  key: 0,
3156
3207
  style: L(r.value)
3157
3208
  }, [(f(!0), k(R, null, h(e.block.items, (t, n) => (f(), k(R, { key: t.id }, [I("a", {
@@ -3163,15 +3214,15 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3163
3214
  textDecoration: t.underline ? "underline" : "none"
3164
3215
  }),
3165
3216
  onClick: o[0] ||= M(() => {}, ["prevent"])
3166
- }, D(t.text || "..."), 13, Na), n < e.block.items.length - 1 ? (f(), k("span", {
3217
+ }, D(t.text || "..."), 13, Ia), n < e.block.items.length - 1 ? (f(), k("span", {
3167
3218
  key: 0,
3168
3219
  style: L({
3169
3220
  color: e.block.separatorColor,
3170
3221
  padding: `0 ${e.block.spacing}px`
3171
3222
  })
3172
- }, D(e.block.separator), 5)) : A("", !0)], 64))), 128))], 4)) : (f(), k("div", Pa, [V(j(_i), { size: 16 }), I("span", null, D(j(n).menu.addLinks), 1)]))]));
3223
+ }, D(e.block.separator), 5)) : A("", !0)], 64))), 128))], 4)) : (f(), k("div", La, [V(j(_i), { size: 16 }), I("span", null, D(j(n).menu.addLinks), 1)]))]));
3173
3224
  }
3174
- }), Ia = /* @__PURE__ */ new Set([
3225
+ }), za = /* @__PURE__ */ new Set([
3175
3226
  "http",
3176
3227
  "https",
3177
3228
  "mailto",
@@ -3181,7 +3232,7 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3181
3232
  "sms",
3182
3233
  "xmpp",
3183
3234
  "cid"
3184
- ]), La = /* @__PURE__ */ new Set([
3235
+ ]), Ba = /* @__PURE__ */ new Set([
3185
3236
  "SCRIPT",
3186
3237
  "STYLE",
3187
3238
  "IFRAME",
@@ -3191,7 +3242,7 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3191
3242
  "META",
3192
3243
  "BASE",
3193
3244
  "FORM"
3194
- ]), Ra = /* @__PURE__ */ new Set([
3245
+ ]), Va = /* @__PURE__ */ new Set([
3195
3246
  "href",
3196
3247
  "xlink:href",
3197
3248
  "formaction",
@@ -3200,16 +3251,16 @@ var xa = ["href"], Sa = ["src", "alt"], Ca = ["src", "alt"], wa = {
3200
3251
  "background",
3201
3252
  "poster"
3202
3253
  ]);
3203
- function za(e, t) {
3254
+ function Ha(e, t) {
3204
3255
  let n = e.replace(/[\t\n\r]/g, "").replace(/^[\u0000-\u0020]+/, "").trimEnd();
3205
3256
  if (!n || n.startsWith("#")) return !0;
3206
3257
  let r = /^([a-z][a-z0-9+.-]*):/i.exec(n);
3207
3258
  if (!r) return !0;
3208
3259
  let i = r[1].toLowerCase();
3209
- return Ia.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
3260
+ return za.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
3210
3261
  }
3211
- function Ba(e) {
3212
- if (La.has(e.tagName)) {
3262
+ function Ua(e) {
3263
+ if (Ba.has(e.tagName)) {
3213
3264
  e.remove();
3214
3265
  return;
3215
3266
  }
@@ -3221,29 +3272,29 @@ function Ba(e) {
3221
3272
  e.removeAttribute(n);
3222
3273
  continue;
3223
3274
  }
3224
- if (Ra.has(t)) {
3225
- za(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
3275
+ if (Va.has(t)) {
3276
+ Ha(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
3226
3277
  continue;
3227
3278
  }
3228
3279
  if (t === "src") {
3229
- za(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
3280
+ Ha(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
3230
3281
  continue;
3231
3282
  }
3232
3283
  t === "srcdoc" && e.removeAttribute(n);
3233
3284
  }
3234
3285
  let n = Array.from(e.children);
3235
- for (let e of n) Ba(e);
3286
+ for (let e of n) Ua(e);
3236
3287
  }
3237
- function Va(e) {
3288
+ function Wa(e) {
3238
3289
  if (typeof DOMParser > "u") return e;
3239
3290
  let t = new DOMParser().parseFromString(`<!doctype html><body>${e}</body>`, "text/html").body, n = Array.from(t.children);
3240
- for (let e of n) Ba(e);
3291
+ for (let e of n) Ua(e);
3241
3292
  return t.innerHTML;
3242
3293
  }
3243
3294
  //#endregion
3244
3295
  //#region src/composables/useEditableTextBlock.ts
3245
- function Ha(e) {
3246
- let t = v(Yn, []), { syntax: n } = qi(), r = O(() => Va(St(vt(e(), t), n))), i = C(!1), a = C(null), { top: o, left: s } = Dn(a), c = O(() => ({
3296
+ function Ga(e) {
3297
+ let t = v(Yn, []), { syntax: n } = qi(), r = O(() => Wa(St(vt(e(), t), n))), i = C(!1), a = C(null), { top: o, left: s } = Dn(a), c = O(() => ({
3247
3298
  top: o.value - 8,
3248
3299
  left: s.value
3249
3300
  }));
@@ -3264,14 +3315,14 @@ function Ha(e) {
3264
3315
  }
3265
3316
  //#endregion
3266
3317
  //#region src/components/blocks/ParagraphBlock.vue?vue&type=script&setup=true&lang.ts
3267
- var Ua = ["innerHTML"], Wa = /* @__PURE__ */ B({
3318
+ var Ka = ["innerHTML"], qa = /* @__PURE__ */ B({
3268
3319
  __name: "ParagraphBlock",
3269
3320
  props: {
3270
3321
  block: {},
3271
3322
  viewport: {}
3272
3323
  },
3273
3324
  setup(e) {
3274
- let t = e, n = T(() => import("./ParagraphEditor-BnhnFOW1.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ha(() => t.block.content);
3325
+ let t = e, n = T(() => import("./ParagraphEditor-pGrfSccu.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ga(() => t.block.content);
3275
3326
  return (t, l) => (f(), k("div", {
3276
3327
  ref_key: "blockRef",
3277
3328
  ref: i,
@@ -3290,19 +3341,19 @@ var Ua = ["innerHTML"], Wa = /* @__PURE__ */ B({
3290
3341
  key: 1,
3291
3342
  class: "tpl-text-content tpl:outline-none [&_a]:tpl:underline [&_li]:tpl:my-1 [&_ol]:tpl:my-2 [&_ol]:tpl:pl-6 [&_p]:tpl:m-0 [&_p]:tpl:mb-2 [&_p:last-child]:tpl:mb-0 [&_s]:tpl:line-through [&_sub]:tpl:align-sub [&_sub]:tpl:text-[0.75em] [&_sup]:tpl:align-super [&_sup]:tpl:text-[0.75em] [&_ul]:tpl:my-2 [&_ul]:tpl:pl-6",
3292
3343
  innerHTML: j(o)
3293
- }, null, 8, Ua))], 544));
3344
+ }, null, 8, Ka))], 544));
3294
3345
  }
3295
3346
  });
3296
3347
  //#endregion
3297
3348
  //#region src/utils/blockComponentResolver.ts
3298
- function Ga(e, t, n) {
3349
+ function Ja(e, t, n) {
3299
3350
  if (t) {
3300
3351
  let n = t.getComponent(e);
3301
3352
  if (n) return n;
3302
3353
  }
3303
3354
  return n[e.type] ?? null;
3304
3355
  }
3305
- function Ka(e) {
3356
+ function Ya(e) {
3306
3357
  let { padding: t, backgroundColor: n } = e.styles;
3307
3358
  return {
3308
3359
  padding: `${t.top}px ${t.right}px ${t.bottom}px ${t.left}px`,
@@ -3311,20 +3362,20 @@ function Ka(e) {
3311
3362
  }
3312
3363
  //#endregion
3313
3364
  //#region src/components/blocks/BlockWrapper.vue?vue&type=script&setup=true&lang.ts
3314
- var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3365
+ var Xa = ["data-block-id", "data-block-type"], Za = ["aria-label"], Qa = [
3315
3366
  "aria-label",
3316
3367
  "aria-pressed",
3317
3368
  "title"
3318
- ], Xa = ["aria-label", "title"], Za = ["aria-label", "title"], Qa = ["aria-label", "title"], $a = {
3369
+ ], $a = ["aria-label", "title"], eo = ["aria-label", "title"], to = ["aria-label", "title"], no = {
3319
3370
  key: 1,
3320
3371
  class: "tpl-block-hidden-overlay tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:z-[5] tpl:flex tpl:items-center tpl:justify-center tpl:rounded-sm"
3321
- }, eo = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, to = {
3372
+ }, ro = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, io = {
3322
3373
  key: 2,
3323
3374
  class: "tpl:absolute tpl:-left-1 tpl:top-1/2 tpl:z-[5] tpl:-translate-x-full tpl:-translate-y-1/2"
3324
- }, no = ["aria-label", "title"], ro = {
3375
+ }, ao = ["aria-label", "title"], oo = {
3325
3376
  key: 3,
3326
3377
  class: "tpl:absolute tpl:-right-1 tpl:-top-1 tpl:z-[5] tpl:translate-x-full"
3327
- }, io = ["aria-label"], ao = /*#__PURE__*/ Ii(/* @__PURE__ */ B({
3378
+ }, so = ["aria-label"], co = /*#__PURE__*/ Ii(/* @__PURE__ */ B({
3328
3379
  __name: "BlockWrapper",
3329
3380
  props: {
3330
3381
  block: {},
@@ -3334,7 +3385,7 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3334
3385
  },
3335
3386
  emits: ["select"],
3336
3387
  setup(e, { emit: t }) {
3337
- let n = T(() => import("./BlockIssueBadge-BYKThwhE.js")), r = e, i = t, { t: a, format: s } = Y(), c = v(ir, null), l = C(null), u = O(() => c?.liftedBlockId.value === r.block.id), d = O(() => u.value ? s(a.blockActions.dragLifted, { block: r.block.type }) : a.blockActions.drag);
3388
+ let n = T(() => import("./BlockIssueBadge-BQDUuJxy.js")), r = e, i = t, { t: a, format: s } = Y(), c = v(ir, null), l = C(null), u = O(() => c?.liftedBlockId.value === r.block.id), d = O(() => u.value ? s(a.blockActions.dragLifted, { block: r.block.type }) : a.blockActions.drag);
3338
3389
  async function p() {
3339
3390
  await m(), l.value?.focus();
3340
3391
  }
@@ -3361,7 +3412,7 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3361
3412
  desktop: a.viewport.desktop,
3362
3413
  mobile: a.viewport.mobile
3363
3414
  }[r.viewport] ?? r.viewport : ""), b = O(() => !!r.block.displayCondition), x = v(zn, null), S = v(Bn, null), w = v(rr, {}), ee = O(() => !!w.savedModules), E = O(() => w.comments?.getBlockCount(r.block.id) ?? 0), te = O(() => {
3364
- let e = Ka(r.block);
3415
+ let e = Ya(r.block);
3365
3416
  return {
3366
3417
  padding: e.padding,
3367
3418
  backgroundColor: e.backgroundColor
@@ -3412,7 +3463,7 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3412
3463
  }, [V(j(fi), {
3413
3464
  size: 14,
3414
3465
  "stroke-width": 1.5
3415
- })], 40, Ya),
3466
+ })], 40, Qa),
3416
3467
  I("button", {
3417
3468
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
3418
3469
  "aria-label": j(a).blockActions.duplicate,
@@ -3421,7 +3472,7 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3421
3472
  }, [V(j(si), {
3422
3473
  size: 14,
3423
3474
  "stroke-width": 1.5
3424
- })], 8, Xa),
3475
+ })], 8, $a),
3425
3476
  ee.value ? (f(), k("button", {
3426
3477
  key: 0,
3427
3478
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
@@ -3431,7 +3482,7 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3431
3482
  }, [V(j(Qr), {
3432
3483
  size: 14,
3433
3484
  "stroke-width": 1.5
3434
- })], 8, Za)) : A("", !0),
3485
+ })], 8, eo)) : A("", !0),
3435
3486
  I("button", {
3436
3487
  class: "tpl-block-action-btn tpl-block-delete-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
3437
3488
  "aria-label": j(a).blockActions.delete,
@@ -3440,13 +3491,13 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3440
3491
  }, [V(j(Di), {
3441
3492
  size: 14,
3442
3493
  "stroke-width": 1.5
3443
- })], 8, Qa)
3444
- ], 8, Ja)) : A("", !0),
3445
- g.value ? (f(), k("div", $a, [I("span", eo, [V(j(ci), {
3494
+ })], 8, to)
3495
+ ], 8, Za)) : A("", !0),
3496
+ g.value ? (f(), k("div", no, [I("span", ro, [V(j(ci), {
3446
3497
  size: 12,
3447
3498
  "stroke-width": 1.5
3448
3499
  }), z(" " + D(j(s)(j(a).blockActions.hiddenOnViewport, { viewport: y.value })), 1)])])) : A("", !0),
3449
- b.value && !g.value ? (f(), k("div", to, [I("button", {
3500
+ b.value && !g.value ? (f(), k("div", io, [I("button", {
3450
3501
  class: "tpl-condition-toggle tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1 tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-primary)] tpl:border tpl:border-[var(--tpl-border)]",
3451
3502
  "aria-label": j(a).blockActions.conditionToggle,
3452
3503
  title: e.block.displayCondition?.label,
@@ -3454,45 +3505,45 @@ var qa = ["data-block-id", "data-block-type"], Ja = ["aria-label"], Ya = [
3454
3505
  }, [V(j(qr), {
3455
3506
  size: 12,
3456
3507
  "stroke-width": 2
3457
- })], 8, no)])) : A("", !0),
3458
- E.value > 0 && !g.value ? (f(), k("div", ro, [I("button", {
3508
+ })], 8, ao)])) : A("", !0),
3509
+ E.value > 0 && !g.value ? (f(), k("div", oo, [I("button", {
3459
3510
  class: "tpl-comment-indicator tpl:flex tpl:min-h-6 tpl:min-w-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-0.5 tpl:rounded-full tpl:border-none tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-semibold tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-primary-light)] tpl:text-[var(--tpl-primary)]",
3460
3511
  "aria-label": j(s)(j(a).blockActions.comments, { count: String(E.value) }),
3461
3512
  onClick: r[0] ||= M((t) => j(w).comments?.openForBlock(e.block.id), ["stop"])
3462
3513
  }, [V(j(gi), {
3463
3514
  size: 12,
3464
3515
  "stroke-width": 2.5
3465
- }), z(" " + D(E.value), 1)], 8, io)])) : A("", !0),
3516
+ }), z(" " + D(E.value), 1)], 8, so)])) : A("", !0),
3466
3517
  I("div", {
3467
3518
  class: "tpl-block-content",
3468
3519
  style: L(te.value)
3469
3520
  }, [o(t.$slots, "default", {}, void 0, !0)], 4)
3470
- ], 10, qa));
3521
+ ], 10, Xa));
3471
3522
  }
3472
3523
  }), [["__scopeId", "data-v-4a48371d"]]);
3473
3524
  //#endregion
3474
3525
  //#region src/utils/unwrapParagraph.ts
3475
- function oo(e) {
3526
+ function lo(e) {
3476
3527
  let t = e.match(/^\s*<p\b[^>]*>([\s\S]*)<\/p>\s*$/);
3477
3528
  return !t || /<\/p>\s*<p\b/i.test(t[1]) ? e : t[1];
3478
3529
  }
3479
3530
  //#endregion
3480
3531
  //#region src/components/blocks/TitleBlock.vue
3481
- var so = /* @__PURE__ */ B({
3532
+ var uo = /* @__PURE__ */ B({
3482
3533
  __name: "TitleBlock",
3483
3534
  props: {
3484
3535
  block: {},
3485
3536
  viewport: {}
3486
3537
  },
3487
3538
  setup(e) {
3488
- let t = e, n = T(() => import("./TitleEditor-CQqklX0D.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ha(() => t.block.content), l = O(() => {
3539
+ let t = e, n = T(() => import("./TitleEditor-BvFbL16O.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ga(() => t.block.content), l = O(() => {
3489
3540
  let e = {
3490
3541
  fontSize: `${pe[t.block.level]}px`,
3491
3542
  color: t.block.color,
3492
3543
  textAlign: t.block.textAlign
3493
3544
  };
3494
3545
  return t.block.fontFamily && (e.fontFamily = t.block.fontFamily), e;
3495
- }), u = O(() => `h${t.block.level}`), p = O(() => oo(o.value));
3546
+ }), u = O(() => `h${t.block.level}`), p = O(() => lo(o.value));
3496
3547
  return (t, o) => (f(), k("div", {
3497
3548
  ref_key: "blockRef",
3498
3549
  ref: i,
@@ -3515,11 +3566,11 @@ var so = /* @__PURE__ */ B({
3515
3566
  innerHTML: p.value
3516
3567
  }, null, 8, ["innerHTML"]))], 36));
3517
3568
  }
3518
- }), co = { class: "tpl:w-full" }, lo = { class: "tpl:flex tpl:gap-0" }, uo = {
3569
+ }), fo = { class: "tpl:w-full" }, po = { class: "tpl:flex tpl:gap-0" }, mo = {
3519
3570
  key: 0,
3520
3571
  "data-testid": "section-drop-hint",
3521
3572
  class: "tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:flex tpl:items-center tpl:justify-center tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
3522
- }, fo = /* @__PURE__ */ B({
3573
+ }, ho = /* @__PURE__ */ B({
3523
3574
  __name: "SectionBlock",
3524
3575
  props: {
3525
3576
  block: {},
@@ -3527,9 +3578,9 @@ var so = /* @__PURE__ */ B({
3527
3578
  },
3528
3579
  setup(e) {
3529
3580
  let t = {
3530
- title: so,
3531
- paragraph: Wa,
3532
- image: ja,
3581
+ title: uo,
3582
+ paragraph: qa,
3583
+ image: Pa,
3533
3584
  button: Fr,
3534
3585
  divider: ma,
3535
3586
  custom: fa
@@ -3559,7 +3610,7 @@ var so = /* @__PURE__ */ B({
3559
3610
  a[e] = r, i.updateBlock(n.block.id, { children: a });
3560
3611
  }
3561
3612
  function m(e) {
3562
- return Ga(e, o, t);
3613
+ return Ja(e, o, t);
3563
3614
  }
3564
3615
  function g(e, t) {
3565
3616
  e.type === "custom" && i.updateBlock(e.id, {
@@ -3567,7 +3618,7 @@ var so = /* @__PURE__ */ B({
3567
3618
  dataSourceFetched: t.dataSourceFetched
3568
3619
  });
3569
3620
  }
3570
- return (t, n) => (f(), k("div", co, [I("div", lo, [(f(!0), k(R, null, h(l.value, (t, n) => (f(), k("div", {
3621
+ return (t, n) => (f(), k("div", fo, [I("div", po, [(f(!0), k(R, null, h(l.value, (t, n) => (f(), k("div", {
3571
3622
  key: n,
3572
3623
  class: F(["tpl:relative tpl:min-h-[60px] tpl:rounded", u(n).length === 0 ? "tpl:border tpl:border-dashed tpl:border-[var(--tpl-border)]" : ""]),
3573
3624
  style: L({ width: s.value[n] })
@@ -3589,7 +3640,7 @@ var so = /* @__PURE__ */ B({
3589
3640
  class: "tpl:min-h-[60px]",
3590
3641
  "onUpdate:modelValue": (e) => p(n, e)
3591
3642
  }, {
3592
- default: b(() => [(f(!0), k(R, null, h(u(n), (t) => c((f(), k("div", { key: t.id }, [V(ao, {
3643
+ default: b(() => [(f(!0), k(R, null, h(u(n), (t) => c((f(), k("div", { key: t.id }, [V(co, {
3593
3644
  block: t,
3594
3645
  "is-selected": j(i).state.selectedBlockId === t.id,
3595
3646
  viewport: e.viewport,
@@ -3620,13 +3671,13 @@ var so = /* @__PURE__ */ B({
3620
3671
  "model-value",
3621
3672
  "group",
3622
3673
  "onUpdate:modelValue"
3623
- ]), u(n).length === 0 ? (f(), k("div", uo, [I("span", null, D(j(r).section.dropHere), 1)])) : A("", !0)], 6))), 128))])]));
3674
+ ]), u(n).length === 0 ? (f(), k("div", mo, [I("span", null, D(j(r).section.dropHere), 1)])) : A("", !0)], 6))), 128))])]));
3624
3675
  }
3625
- }), po = me, mo = {
3676
+ }), go = me, _o = {
3626
3677
  small: 24,
3627
3678
  medium: 32,
3628
3679
  large: 48
3629
- }, ho = [
3680
+ }, vo = [
3630
3681
  "facebook",
3631
3682
  "twitter",
3632
3683
  "instagram",
@@ -3644,11 +3695,11 @@ var so = /* @__PURE__ */ B({
3644
3695
  "github",
3645
3696
  "dribbble",
3646
3697
  "behance"
3647
- ], go = [
3698
+ ], yo = [
3648
3699
  "width",
3649
3700
  "height",
3650
3701
  "fill"
3651
- ], _o = ["d"], vo = /* @__PURE__ */ B({
3702
+ ], bo = ["d"], xo = /* @__PURE__ */ B({
3652
3703
  __name: "SocialIconSvg",
3653
3704
  props: {
3654
3705
  platform: {},
@@ -3656,7 +3707,7 @@ var so = /* @__PURE__ */ B({
3656
3707
  iconSize: {}
3657
3708
  },
3658
3709
  setup(e) {
3659
- let t = e, n = O(() => po[t.platform]), r = O(() => mo[t.iconSize]), i = O(() => {
3710
+ let t = e, n = O(() => go[t.platform]), r = O(() => _o[t.iconSize]), i = O(() => {
3660
3711
  let e = {
3661
3712
  display: "inline-flex",
3662
3713
  alignItems: "center",
@@ -3700,12 +3751,12 @@ var so = /* @__PURE__ */ B({
3700
3751
  viewBox: "0 0 24 24",
3701
3752
  fill: o.value,
3702
3753
  xmlns: "http://www.w3.org/2000/svg"
3703
- }, [I("path", { d: n.value.path }, null, 8, _o)], 8, go))], 4));
3754
+ }, [I("path", { d: n.value.path }, null, 8, bo)], 8, yo))], 4));
3704
3755
  }
3705
- }), yo = { class: "tpl:w-full" }, bo = ["href"], xo = {
3756
+ }), So = { class: "tpl:w-full" }, Co = ["href"], wo = {
3706
3757
  key: 1,
3707
3758
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
3708
- }, So = /* @__PURE__ */ B({
3759
+ }, To = /* @__PURE__ */ B({
3709
3760
  __name: "SocialIconsBlock",
3710
3761
  props: {
3711
3762
  block: {},
@@ -3718,7 +3769,7 @@ var so = /* @__PURE__ */ B({
3718
3769
  gap: `${t.block.spacing}px`,
3719
3770
  justifyContent: t.block.align === "left" ? "flex-start" : t.block.align === "right" ? "flex-end" : "center"
3720
3771
  })), i = O(() => t.block.icons.length > 0);
3721
- return (t, a) => (f(), k("div", yo, [i.value ? (f(), k("div", {
3772
+ return (t, a) => (f(), k("div", So, [i.value ? (f(), k("div", {
3722
3773
  key: 0,
3723
3774
  style: L(r.value)
3724
3775
  }, [(f(!0), k(R, null, h(e.block.icons, (t) => (f(), k("a", {
@@ -3726,7 +3777,7 @@ var so = /* @__PURE__ */ B({
3726
3777
  href: t.url || "#",
3727
3778
  class: "tpl:cursor-default",
3728
3779
  onClick: a[0] ||= M(() => {}, ["prevent"])
3729
- }, [V(vo, {
3780
+ }, [V(xo, {
3730
3781
  platform: t.platform,
3731
3782
  "icon-style": e.block.iconStyle,
3732
3783
  "icon-size": e.block.iconSize
@@ -3734,16 +3785,16 @@ var so = /* @__PURE__ */ B({
3734
3785
  "platform",
3735
3786
  "icon-style",
3736
3787
  "icon-size"
3737
- ])], 8, bo))), 128))], 4)) : (f(), k("div", xo, [V(j(wi), { size: 16 }), I("span", null, D(j(n).social.addIcons), 1)]))]));
3788
+ ])], 8, Co))), 128))], 4)) : (f(), k("div", wo, [V(j(wi), { size: 16 }), I("span", null, D(j(n).social.addIcons), 1)]))]));
3738
3789
  }
3739
- }), Co = { class: "tpl:w-full" }, wo = {
3790
+ }), Eo = { class: "tpl:w-full" }, Do = {
3740
3791
  key: 0,
3741
3792
  class: "tpl:absolute tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-medium",
3742
3793
  style: {
3743
3794
  "background-color": "var(--tpl-bg-hover)",
3744
3795
  color: "var(--tpl-text-dim)"
3745
3796
  }
3746
- }, To = /* @__PURE__ */ B({
3797
+ }, Oo = /* @__PURE__ */ B({
3747
3798
  __name: "SpacerBlock",
3748
3799
  props: {
3749
3800
  block: {},
@@ -3755,23 +3806,23 @@ var so = /* @__PURE__ */ B({
3755
3806
  minHeight: `${t.block.height}px`,
3756
3807
  ...n.state.previewMode ? {} : { borderColor: "var(--tpl-border)" }
3757
3808
  }));
3758
- return (t, i) => (f(), k("div", Co, [I("div", {
3809
+ return (t, i) => (f(), k("div", Eo, [I("div", {
3759
3810
  style: L(r.value),
3760
3811
  class: F(["tpl:relative tpl:flex tpl:items-center tpl:justify-center", { "tpl:border-y tpl:border-dashed": !j(n).state.previewMode }])
3761
- }, [j(n).state.previewMode ? A("", !0) : (f(), k("span", wo, D(e.block.height) + "px ", 1))], 6)]));
3812
+ }, [j(n).state.previewMode ? A("", !0) : (f(), k("span", Do, D(e.block.height) + "px ", 1))], 6)]));
3762
3813
  }
3763
- }), Eo = { class: "tpl:w-full" }, Do = { key: 0 }, Oo = [
3814
+ }), ko = { class: "tpl:w-full" }, Ao = { key: 0 }, jo = [
3764
3815
  "aria-label",
3765
3816
  "data-placeholder",
3766
3817
  "onBlur"
3767
- ], ko = [
3818
+ ], Mo = [
3768
3819
  "aria-label",
3769
3820
  "data-placeholder",
3770
3821
  "onBlur"
3771
- ], Ao = {
3822
+ ], No = {
3772
3823
  key: 1,
3773
3824
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
3774
- }, jo = /*#__PURE__*/ Ii(/* @__PURE__ */ B({
3825
+ }, Po = /*#__PURE__*/ Ii(/* @__PURE__ */ B({
3775
3826
  __name: "TableBlock",
3776
3827
  props: {
3777
3828
  block: {},
@@ -3814,11 +3865,11 @@ var so = /* @__PURE__ */ B({
3814
3865
  } : n);
3815
3866
  i.updateBlock(n.block.id, { rows: o });
3816
3867
  }
3817
- return (e, n) => (f(), k("div", Eo, [a.value ? (f(), k("table", {
3868
+ return (e, n) => (f(), k("div", ko, [a.value ? (f(), k("table", {
3818
3869
  key: 0,
3819
3870
  style: L(o.value),
3820
3871
  class: "tpl-table-editable"
3821
- }, [u.value ? (f(), k("thead", Do, [I("tr", null, [(f(!0), k(R, null, h(u.value.cells, (e) => c((f(), k("th", {
3872
+ }, [u.value ? (f(), k("thead", Ao, [I("tr", null, [(f(!0), k(R, null, h(u.value.cells, (e) => c((f(), k("th", {
3822
3873
  key: e.id,
3823
3874
  style: L(l.value),
3824
3875
  "aria-label": j(r).table.cellPlaceholder,
@@ -3827,7 +3878,7 @@ var so = /* @__PURE__ */ B({
3827
3878
  onBlur: (t) => m(u.value.id, e.id, t),
3828
3879
  onKeydown: n[0] ||= E(M((e) => e.target.blur(), ["prevent"]), ["enter"]),
3829
3880
  onClick: M(p, ["stop"])
3830
- }, null, 44, Oo)), [[t, e.content]])), 128))])])) : A("", !0), I("tbody", null, [(f(!0), k(R, null, h(d.value, (e) => (f(), k("tr", { key: e.id }, [(f(!0), k(R, null, h(e.cells, (i) => c((f(), k("td", {
3881
+ }, null, 44, jo)), [[t, e.content]])), 128))])])) : A("", !0), I("tbody", null, [(f(!0), k(R, null, h(d.value, (e) => (f(), k("tr", { key: e.id }, [(f(!0), k(R, null, h(e.cells, (i) => c((f(), k("td", {
3831
3882
  key: i.id,
3832
3883
  style: L(s.value),
3833
3884
  "aria-label": j(r).table.cellPlaceholder,
@@ -3836,9 +3887,9 @@ var so = /* @__PURE__ */ B({
3836
3887
  onBlur: (t) => m(e.id, i.id, t),
3837
3888
  onKeydown: n[1] ||= E(M((e) => e.target.blur(), ["prevent"]), ["enter"]),
3838
3889
  onClick: M(p, ["stop"])
3839
- }, null, 44, ko)), [[t, i.content]])), 128))]))), 128))])], 4)) : (f(), k("div", Ao, [V(j(Ei), { size: 16 }), I("span", null, D(j(r).table.empty), 1)]))]));
3890
+ }, null, 44, Mo)), [[t, i.content]])), 128))]))), 128))])], 4)) : (f(), k("div", No, [V(j(Ei), { size: 16 }), I("span", null, D(j(r).table.empty), 1)]))]));
3840
3891
  }
3841
- }), [["__scopeId", "data-v-de1a7c76"]]), Mo = /* @__PURE__ */ B({
3892
+ }), [["__scopeId", "data-v-f065872a"]]), Fo = /* @__PURE__ */ B({
3842
3893
  __name: "VideoPlayButton",
3843
3894
  props: { hoverEffect: {
3844
3895
  type: Boolean,
@@ -3856,7 +3907,7 @@ var so = /* @__PURE__ */ B({
3856
3907
  });
3857
3908
  //#endregion
3858
3909
  //#region src/utils/videoThumbnail.ts
3859
- function No(e) {
3910
+ function Io(e) {
3860
3911
  if (!e) return {
3861
3912
  platform: "unknown",
3862
3913
  videoId: null,
@@ -3888,25 +3939,25 @@ function No(e) {
3888
3939
  thumbnailUrl: null
3889
3940
  };
3890
3941
  }
3891
- function Po(e, t) {
3892
- return t || No(e).thumbnailUrl;
3942
+ function Lo(e, t) {
3943
+ return t || Io(e).thumbnailUrl;
3893
3944
  }
3894
3945
  //#endregion
3895
3946
  //#region src/components/blocks/VideoBlock.vue?vue&type=script&setup=true&lang.ts
3896
- var Fo = ["src", "alt"], Io = {
3947
+ var Ro = ["src", "alt"], zo = {
3897
3948
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
3898
3949
  style: { opacity: "0.7" }
3899
- }, Lo = ["href"], Ro = ["src", "alt"], zo = ["src", "alt"], Bo = {
3950
+ }, Bo = ["href"], Vo = ["src", "alt"], Ho = ["src", "alt"], Uo = {
3900
3951
  key: 3,
3901
3952
  class: "tpl:flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
3902
- }, Vo = /* @__PURE__ */ B({
3953
+ }, Wo = /* @__PURE__ */ B({
3903
3954
  __name: "VideoBlock",
3904
3955
  props: {
3905
3956
  block: {},
3906
3957
  viewport: {}
3907
3958
  },
3908
3959
  setup(e) {
3909
- let t = e, { t: n } = Y(), { syntax: r } = qi(), i = O(() => yt(t.block.url, r) || yt(t.block.thumbnailUrl, r)), a = O(() => i.value ? null : Po(t.block.url, t.block.thumbnailUrl)), o = O(() => ({ textAlign: t.block.align })), s = O(() => {
3960
+ let t = e, { t: n } = Y(), { syntax: r } = qi(), i = O(() => yt(t.block.url, r) || yt(t.block.thumbnailUrl, r)), a = O(() => i.value ? null : Lo(t.block.url, t.block.thumbnailUrl)), o = O(() => ({ textAlign: t.block.align })), s = O(() => {
3910
3961
  let e = t.block.align;
3911
3962
  return {
3912
3963
  maxWidth: "100%",
@@ -3927,7 +3978,7 @@ var Fo = ["src", "alt"], Io = {
3927
3978
  class: "tpl:w-full tpl:border-0",
3928
3979
  src: e.block.placeholderUrl,
3929
3980
  alt: e.block.alt
3930
- }, null, 8, Fo), V(Mo)], 4)) : i.value ? (f(), k("div", {
3981
+ }, null, 8, Ro), V(Fo)], 4)) : i.value ? (f(), k("div", {
3931
3982
  key: 1,
3932
3983
  class: "tpl:relative tpl:!flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
3933
3984
  style: L([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, s.value])
@@ -3936,7 +3987,7 @@ var Fo = ["src", "alt"], Io = {
3936
3987
  "stroke-width": 1.5,
3937
3988
  class: "tpl:text-[var(--tpl-primary)]",
3938
3989
  style: { opacity: "0.5" }
3939
- }), I("span", Io, D(c.value), 1)], 4)) : a.value ? (f(), k(R, { key: 2 }, [e.block.url ? (f(), k("a", {
3990
+ }), I("span", zo, D(c.value), 1)], 4)) : a.value ? (f(), k(R, { key: 2 }, [e.block.url ? (f(), k("a", {
3940
3991
  key: 0,
3941
3992
  href: e.block.url,
3942
3993
  target: "_blank",
@@ -3948,7 +3999,7 @@ var Fo = ["src", "alt"], Io = {
3948
3999
  class: "tpl:w-full tpl:border-0",
3949
4000
  src: a.value,
3950
4001
  alt: e.block.alt
3951
- }, null, 8, Ro), V(Mo, { "hover-effect": "" })], 12, Lo)) : (f(), k("div", {
4002
+ }, null, 8, Vo), V(Fo, { "hover-effect": "" })], 12, Bo)) : (f(), k("div", {
3952
4003
  key: 1,
3953
4004
  class: "tpl:relative tpl:inline-block",
3954
4005
  style: L(s.value)
@@ -3956,28 +4007,28 @@ var Fo = ["src", "alt"], Io = {
3956
4007
  class: "tpl:w-full tpl:border-0",
3957
4008
  src: a.value,
3958
4009
  alt: e.block.alt
3959
- }, null, 8, zo), V(Mo)], 4))], 64)) : (f(), k("div", Bo, [V(j(Ai), {
4010
+ }, null, 8, Ho), V(Fo)], 4))], 64)) : (f(), k("div", Uo, [V(j(Ai), {
3960
4011
  size: 40,
3961
4012
  "stroke-width": 1.5,
3962
4013
  class: "tpl:text-[var(--tpl-border-light)]"
3963
4014
  }), I("span", null, D(j(n).video.addVideo), 1)]))], 4));
3964
4015
  }
3965
- }), Ho = {
3966
- section: fo,
3967
- title: so,
3968
- paragraph: Wa,
3969
- image: ja,
4016
+ }), Go = {
4017
+ section: ho,
4018
+ title: uo,
4019
+ paragraph: qa,
4020
+ image: Pa,
3970
4021
  button: Fr,
3971
4022
  divider: ma,
3972
- video: Vo,
3973
- social: So,
3974
- menu: Fa,
3975
- table: jo,
3976
- spacer: To,
4023
+ video: Wo,
4024
+ social: To,
4025
+ menu: Ra,
4026
+ table: Po,
4027
+ spacer: Oo,
3977
4028
  html: ya,
3978
- countdown: T(() => import("./CountdownBlock-hYoJdVOt.js").then((e) => e.n))
4029
+ countdown: T(() => import("./CountdownBlock-DChGTAsH.js").then((e) => e.n))
3979
4030
  };
3980
- function Uo(e) {
4031
+ function Ko(e) {
3981
4032
  let { editor: t, config: n, translations: r, fontsManager: i } = e, { t: a, format: o } = Y(r);
3982
4033
  t.setUiTheme(n.uiTheme ?? "auto");
3983
4034
  let { resolvedTheme: c } = yr(O(() => t.state.uiTheme)), u = C(n.theme ?? {}), { themeStyles: d } = xr({
@@ -4009,7 +4060,7 @@ function Uo(e) {
4009
4060
  t: a,
4010
4061
  format: o
4011
4062
  }), y = Tr();
4012
- if (Ar(y, Ho), n.customBlocks?.length) for (let e of n.customBlocks) y.registerCustom(e, fa);
4063
+ if (Ar(y, Go), n.customBlocks?.length) for (let e of n.customBlocks) y.registerCustom(e, fa);
4013
4064
  function b(e) {
4014
4065
  for (let t of e) y.registerCustom(t, fa);
4015
4066
  }
@@ -4067,19 +4118,19 @@ function Uo(e) {
4067
4118
  }
4068
4119
  //#endregion
4069
4120
  //#region src/composables/usePopoverRoot.ts
4070
- function Wo() {
4121
+ function qo() {
4071
4122
  return v(sr, C(null));
4072
4123
  }
4073
4124
  //#endregion
4074
4125
  //#region src/components/TplModal.vue?vue&type=script&setup=true&lang.ts
4075
- var Go = ["data-tpl-theme"], Ko = /* @__PURE__ */ B({
4126
+ var Jo = ["data-tpl-theme"], Yo = /* @__PURE__ */ B({
4076
4127
  __name: "TplModal",
4077
4128
  props: { visible: { type: Boolean } },
4078
4129
  emits: ["close", "keydown"],
4079
4130
  setup(e, { emit: t }) {
4080
4131
  let n = e, r = t, i = C(null);
4081
4132
  Ui(i, O(() => n.visible));
4082
- let a = v(Un), s = Wo();
4133
+ let a = v(Un), s = qo();
4083
4134
  function c(e) {
4084
4135
  e.key === "Escape" && r("close"), r("keydown", e);
4085
4136
  }
@@ -4108,11 +4159,11 @@ var Go = ["data-tpl-theme"], Ko = /* @__PURE__ */ B({
4108
4159
  }, [I("div", {
4109
4160
  ref_key: "dialogRef",
4110
4161
  ref: i
4111
- }, [o(t.$slots, "default")], 512)], 40, Go)) : A("", !0)]),
4162
+ }, [o(t.$slots, "default")], 512)], 40, Jo)) : A("", !0)]),
4112
4163
  _: 3
4113
4164
  })], 8, ["to"])) : A("", !0);
4114
4165
  }
4115
- }), qo = class e {
4166
+ }), Xo = class e {
4116
4167
  static DEFAULT_BASE_URL = "https://templatical.com";
4117
4168
  accessToken = null;
4118
4169
  expiresAt = null;
@@ -4213,8 +4264,8 @@ var Go = ["data-tpl-theme"], Ko = /* @__PURE__ */ B({
4213
4264
  return a.status === 401 && (a = await i(await this.refreshToken())), a;
4214
4265
  }
4215
4266
  };
4216
- function Jo(e, t) {
4217
- return e.mode === "direct" ? new qo({
4267
+ function Zo(e, t) {
4268
+ return e.mode === "direct" ? new Xo({
4218
4269
  url: `${(e.baseUrl ?? "https://templatical.com").replace(/\/$/, "")}/api/v1/auth/token`,
4219
4270
  baseUrl: e.baseUrl,
4220
4271
  requestOptions: {
@@ -4228,7 +4279,7 @@ function Jo(e, t) {
4228
4279
  }
4229
4280
  },
4230
4281
  onError: t
4231
- }) : new qo({
4282
+ }) : new Xo({
4232
4283
  url: e.url,
4233
4284
  baseUrl: e.baseUrl,
4234
4285
  requestOptions: e.requestOptions,
@@ -4240,16 +4291,16 @@ function Jo(e, t) {
4240
4291
  function Z(e, t) {
4241
4292
  return e.replace(/\{(\w+)\}/g, (e, n) => encodeURIComponent(t[n] ?? ""));
4242
4293
  }
4243
- var Yo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Yo}/templates/{template}`, Xo = `${Q}/ai`, Zo = `${Yo}/media`, Qo = `${Zo}/folders`, $o = `${Yo}/saved-modules`, $ = {
4294
+ var Qo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Qo}/templates/{template}`, $o = `${Q}/ai`, es = `${Qo}/media`, ts = `${es}/folders`, ns = `${Qo}/saved-modules`, $ = {
4244
4295
  health: "/api/v1/health",
4245
- "projects.config": `${Yo}/config`,
4246
- "broadcasting.auth": `${Yo}/broadcasting/auth`,
4247
- "templates.store": `${Yo}/templates`,
4296
+ "projects.config": `${Qo}/config`,
4297
+ "broadcasting.auth": `${Qo}/broadcasting/auth`,
4298
+ "templates.store": `${Qo}/templates`,
4248
4299
  "templates.show": `${Q}`,
4249
4300
  "templates.update": `${Q}`,
4250
4301
  "templates.destroy": `${Q}`,
4251
4302
  "templates.export": `${Q}/export`,
4252
- "templates.importFromBeefree": `${Yo}/templates/import/from-beefree`,
4303
+ "templates.importFromBeefree": `${Qo}/templates/import/from-beefree`,
4253
4304
  "templates.sendTestEmail": `${Q}/send-test-email`,
4254
4305
  "snapshots.index": `${Q}/snapshots`,
4255
4306
  "snapshots.store": `${Q}/snapshots`,
@@ -4260,31 +4311,31 @@ var Yo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Yo}/templates/{te
4260
4311
  "comments.update": `${Q}/comments/{comment}`,
4261
4312
  "comments.destroy": `${Q}/comments/{comment}`,
4262
4313
  "comments.resolve": `${Q}/comments/{comment}/resolve`,
4263
- "ai.generate": `${Xo}/generate`,
4264
- "ai.conversationMessages": `${Xo}/conversation-messages`,
4265
- "ai.suggestions": `${Xo}/suggestions`,
4266
- "ai.rewriteText": `${Xo}/rewrite-text`,
4267
- "ai.score": `${Xo}/score`,
4268
- "ai.fixFinding": `${Xo}/fix-finding`,
4269
- "ai.generateFromDesign": `${Xo}/generate-from-design`,
4270
- "media.upload": `${Zo}/upload`,
4271
- "media.browse": `${Zo}/browse`,
4272
- "media.delete": `${Zo}/delete`,
4273
- "media.move": `${Zo}/move`,
4274
- "media.update": `${Zo}/{media}`,
4275
- "media.replace": `${Zo}/{media}/replace`,
4276
- "media.checkUsage": `${Zo}/check-usage`,
4277
- "media.frequentlyUsed": `${Zo}/frequently-used`,
4278
- "media.importFromUrl": `${Zo}/import-from-url`,
4279
- "folders.index": `${Qo}`,
4280
- "folders.store": `${Qo}`,
4281
- "folders.update": `${Qo}/{mediaFolder}`,
4282
- "folders.destroy": `${Qo}/{mediaFolder}`,
4283
- "savedModules.index": `${$o}`,
4284
- "savedModules.store": `${$o}`,
4285
- "savedModules.update": `${$o}/{savedModule}`,
4286
- "savedModules.destroy": `${$o}/{savedModule}`
4287
- }, es = class {
4314
+ "ai.generate": `${$o}/generate`,
4315
+ "ai.conversationMessages": `${$o}/conversation-messages`,
4316
+ "ai.suggestions": `${$o}/suggestions`,
4317
+ "ai.rewriteText": `${$o}/rewrite-text`,
4318
+ "ai.score": `${$o}/score`,
4319
+ "ai.fixFinding": `${$o}/fix-finding`,
4320
+ "ai.generateFromDesign": `${$o}/generate-from-design`,
4321
+ "media.upload": `${es}/upload`,
4322
+ "media.browse": `${es}/browse`,
4323
+ "media.delete": `${es}/delete`,
4324
+ "media.move": `${es}/move`,
4325
+ "media.update": `${es}/{media}`,
4326
+ "media.replace": `${es}/{media}/replace`,
4327
+ "media.checkUsage": `${es}/check-usage`,
4328
+ "media.frequentlyUsed": `${es}/frequently-used`,
4329
+ "media.importFromUrl": `${es}/import-from-url`,
4330
+ "folders.index": `${ts}`,
4331
+ "folders.store": `${ts}`,
4332
+ "folders.update": `${ts}/{mediaFolder}`,
4333
+ "folders.destroy": `${ts}/{mediaFolder}`,
4334
+ "savedModules.index": `${ns}`,
4335
+ "savedModules.store": `${ns}`,
4336
+ "savedModules.update": `${ns}/{savedModule}`,
4337
+ "savedModules.destroy": `${ns}/{savedModule}`
4338
+ }, rs = class {
4288
4339
  authManager;
4289
4340
  constructor(e) {
4290
4341
  this.authManager = e;
@@ -4470,14 +4521,14 @@ var Yo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Yo}/templates/{te
4470
4521
  };
4471
4522
  //#endregion
4472
4523
  //#region ../core/src/cloud/websocket-client.ts
4473
- function ts(e) {
4524
+ function is(e) {
4474
4525
  return {
4475
4526
  host: e.host,
4476
4527
  port: e.port,
4477
4528
  appKey: e.app_key
4478
4529
  };
4479
4530
  }
4480
- var ns = class {
4531
+ var as = class {
4481
4532
  pusher = null;
4482
4533
  authManager;
4483
4534
  config;
@@ -4544,7 +4595,7 @@ var ns = class {
4544
4595
  };
4545
4596
  //#endregion
4546
4597
  //#region ../core/src/cloud/mcp-operation-handler.ts
4547
- function rs(e, t) {
4598
+ function os(e, t) {
4548
4599
  let { operation: n, data: r } = t;
4549
4600
  switch (n) {
4550
4601
  case "add_block":
@@ -4572,11 +4623,11 @@ function rs(e, t) {
4572
4623
  }
4573
4624
  //#endregion
4574
4625
  //#region ../core/src/cloud/editor.ts
4575
- function is(e) {
4626
+ function ss(e) {
4576
4627
  return e === "1" ? 1 : e === "3" ? 3 : 2;
4577
4628
  }
4578
- function as(e) {
4579
- let t = new es(e.authManager), n = S({
4629
+ function cs(e) {
4630
+ let t = new rs(e.authManager), n = S({
4580
4631
  template: null,
4581
4632
  content: We(e.defaultFontFamily, e.templateDefaults),
4582
4633
  selectedBlockId: null,
@@ -4682,7 +4733,7 @@ function as(e) {
4682
4733
  let l;
4683
4734
  if (r) {
4684
4735
  let e = o(n.content.blocks, r);
4685
- if (!e || e.type !== "section" || i < 0 || i >= is(e.columns)) return;
4736
+ if (!e || e.type !== "section" || i < 0 || i >= ss(e.columns)) return;
4686
4737
  e.children[i] = e.children[i] || [], l = e.children[i];
4687
4738
  } else l = n.content.blocks;
4688
4739
  let [u] = a.blocks.splice(c, 1);
@@ -4774,11 +4825,11 @@ function as(e) {
4774
4825
  }
4775
4826
  //#endregion
4776
4827
  //#region ../core/src/cloud/ai-chat.ts
4777
- var os = 0;
4778
- function ss() {
4779
- return `msg_${Date.now()}_${++os}`;
4828
+ var ls = 0;
4829
+ function us() {
4830
+ return `msg_${Date.now()}_${++ls}`;
4780
4831
  }
4781
- function cs(e) {
4832
+ function ds(e) {
4782
4833
  let { authManager: t, getTemplateId: n, onApply: r, onError: i } = e, a = C([]), o = C(!1), s = C(!1), c = C(null), l = C(null), u = C(null), d = C(null), f = C(null), p = C(null), m = C(!1), h = C([]), g = C(!1);
4783
4834
  function _(e, t) {
4784
4835
  let n = a.value.findIndex((t) => t.id === e);
@@ -4872,14 +4923,14 @@ function cs(e) {
4872
4923
  let v = n();
4873
4924
  if (!v) throw Error("Template must be saved before using AI generation");
4874
4925
  o.value = !0, c.value = null, l.value = null, h.value = [];
4875
- let y = ss();
4926
+ let y = us();
4876
4927
  a.value = [...a.value, {
4877
4928
  id: y,
4878
4929
  role: "user",
4879
4930
  content: e,
4880
4931
  timestamp: Date.now()
4881
4932
  }];
4882
- let b = ss();
4933
+ let b = us();
4883
4934
  a.value = [...a.value, {
4884
4935
  id: b,
4885
4936
  role: "assistant",
@@ -4970,7 +5021,7 @@ function cs(e) {
4970
5021
  }
4971
5022
  //#endregion
4972
5023
  //#region ../core/src/cloud/ai-config.ts
4973
- function ls(e) {
5024
+ function fs(e) {
4974
5025
  function t(t) {
4975
5026
  return e === !1 ? !1 : e?.[t] !== !1;
4976
5027
  }
@@ -4981,7 +5032,7 @@ function ls(e) {
4981
5032
  }
4982
5033
  //#endregion
4983
5034
  //#region ../core/src/cloud/template-scoring.ts
4984
- function us(e) {
5035
+ function ps(e) {
4985
5036
  let { authManager: t, getTemplateId: n } = e, r = C(!1), i = C(null), a = C(null), o = C(null), s = C(""), c = C(null);
4986
5037
  async function l(e, o) {
4987
5038
  let s = n();
@@ -5126,7 +5177,7 @@ function us(e) {
5126
5177
  }
5127
5178
  //#endregion
5128
5179
  //#region ../core/src/cloud/design-reference.ts
5129
- function ds(e) {
5180
+ function ms(e) {
5130
5181
  let { authManager: t, getTemplateId: n, onApply: r, onError: i } = e, a = C(!1), o = C(null);
5131
5182
  async function s(e) {
5132
5183
  let s = n();
@@ -5189,8 +5240,8 @@ function ds(e) {
5189
5240
  }
5190
5241
  //#endregion
5191
5242
  //#region ../core/src/cloud/comments.ts
5192
- function fs(e) {
5193
- let { authManager: t, getTemplateId: n, getSocketId: r, onComment: i, onError: a, hasCommentingFeature: o } = e, s = new es(t), c = C([]), l = C(!1), u = C(!1), d = O(() => (o?.() ?? !1) && t.userConfig !== null), f = O(() => {
5243
+ function hs(e) {
5244
+ let { authManager: t, getTemplateId: n, getSocketId: r, onComment: i, onError: a, hasCommentingFeature: o } = e, s = new rs(t), c = C([]), l = C(!1), u = C(!1), d = O(() => (o?.() ?? !1) && t.userConfig !== null), f = O(() => {
5194
5245
  let e = 0;
5195
5246
  for (let t of c.value) e += 1 + (t.replies?.length ?? 0);
5196
5247
  return e;
@@ -5389,17 +5440,17 @@ function fs(e) {
5389
5440
  }
5390
5441
  //#endregion
5391
5442
  //#region ../core/src/cloud/comment-listener.ts
5392
- function ps(e) {
5443
+ function gs(e) {
5393
5444
  let { comments: t, channel: n } = e;
5394
5445
  H(n, (e, n) => {
5395
5446
  n && n.unbind("comment-broadcast"), e && e.bind("comment-broadcast", (e) => {
5396
- ms(t, e);
5447
+ _s(t, e);
5397
5448
  });
5398
5449
  }), l(() => {
5399
5450
  n.value?.unbind("comment-broadcast");
5400
5451
  });
5401
5452
  }
5402
- function ms(e, t) {
5453
+ function _s(e, t) {
5403
5454
  switch (t.action) {
5404
5455
  case "comment_created":
5405
5456
  e.applyRemoteCreate(t.comment);
@@ -5418,7 +5469,7 @@ function ms(e, t) {
5418
5469
  }
5419
5470
  //#endregion
5420
5471
  //#region ../core/src/cloud/collaboration.ts
5421
- var hs = [
5472
+ var vs = [
5422
5473
  "pusher:member_added",
5423
5474
  "pusher:member_removed",
5424
5475
  "client-block_locked",
@@ -5426,10 +5477,10 @@ var hs = [
5426
5477
  "client-operation",
5427
5478
  "mcp-operation"
5428
5479
  ];
5429
- function gs(e) {
5430
- for (let t of hs) e.unbind(t);
5480
+ function ys(e) {
5481
+ for (let t of vs) e.unbind(t);
5431
5482
  }
5432
- var _s = [
5483
+ var bs = [
5433
5484
  "#3b82f6",
5434
5485
  "#ef4444",
5435
5486
  "#10b981",
@@ -5441,10 +5492,10 @@ var _s = [
5441
5492
  "#6366f1",
5442
5493
  "#14b8a6"
5443
5494
  ];
5444
- function vs(e) {
5495
+ function xs(e) {
5445
5496
  let { authManager: t, editor: n, channel: r } = e, i = C([]), a = C(/* @__PURE__ */ new Map()), o = 0, s = !1, c = O(() => t.userConfig?.id ?? "");
5446
5497
  function u() {
5447
- let e = _s[o % _s.length];
5498
+ let e = bs[o % bs.length];
5448
5499
  return o++, e;
5449
5500
  }
5450
5501
  function d(e) {
@@ -5486,7 +5537,7 @@ function vs(e) {
5486
5537
  function h(e) {
5487
5538
  s = !0;
5488
5539
  try {
5489
- rs(n, e);
5540
+ os(n, e);
5490
5541
  } finally {
5491
5542
  s = !1;
5492
5543
  }
@@ -5506,7 +5557,7 @@ function vs(e) {
5506
5557
  return H(() => n.state.selectedBlockId, (e, t) => {
5507
5558
  s || (t && v(t), e && _(e));
5508
5559
  }), H(r, (t, n) => {
5509
- if (n && gs(n), !t) {
5560
+ if (n && ys(n), !t) {
5510
5561
  i.value = [], a.value = /* @__PURE__ */ new Map(), o = 0;
5511
5562
  return;
5512
5563
  }
@@ -5538,7 +5589,7 @@ function vs(e) {
5538
5589
  h(e);
5539
5590
  });
5540
5591
  }), l(() => {
5541
- r.value && gs(r.value);
5592
+ r.value && ys(r.value);
5542
5593
  }), {
5543
5594
  collaborators: i,
5544
5595
  lockedBlocks: a,
@@ -5548,7 +5599,7 @@ function vs(e) {
5548
5599
  }
5549
5600
  //#endregion
5550
5601
  //#region ../core/src/cloud/collaboration-broadcast.ts
5551
- function ys(e, t) {
5602
+ function Ss(e, t) {
5552
5603
  let n = e.addBlock, r = e.updateBlock, i = e.removeBlock, a = e.moveBlock, o = e.updateSettings, s = e.setContent;
5553
5604
  e.addBlock = (e, r, i, a) => {
5554
5605
  n(e, r, i, a), t._broadcastOperation({
@@ -5603,11 +5654,11 @@ function ys(e, t) {
5603
5654
  }
5604
5655
  //#endregion
5605
5656
  //#region ../core/src/cloud/web-socket.ts
5606
- function bs(e) {
5657
+ function Cs(e) {
5607
5658
  let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = null, o = null;
5608
5659
  async function s(e, s) {
5609
5660
  if (a) return;
5610
- a = new ns({
5661
+ a = new as({
5611
5662
  authManager: t,
5612
5663
  config: s,
5613
5664
  onError: n
@@ -5635,8 +5686,8 @@ function bs(e) {
5635
5686
  }
5636
5687
  //#endregion
5637
5688
  //#region ../core/src/cloud/saved-modules.ts
5638
- function xs(e) {
5639
- let t = new es(e.authManager), n = C([]), r = C(!1);
5689
+ function ws(e) {
5690
+ let t = new rs(e.authManager), n = C([]), r = C(!1);
5640
5691
  async function i(i) {
5641
5692
  r.value = !0;
5642
5693
  try {
@@ -5684,8 +5735,8 @@ function xs(e) {
5684
5735
  }
5685
5736
  //#endregion
5686
5737
  //#region ../core/src/cloud/snapshots.ts
5687
- function Ss(e) {
5688
- let t = new es(e.authManager), n = C([]), r = C(!1), i = C(!1);
5738
+ function Ts(e) {
5739
+ let t = new rs(e.authManager), n = C([]), r = C(!1), i = C(!1);
5689
5740
  async function a() {
5690
5741
  r.value = !0;
5691
5742
  try {
@@ -5717,8 +5768,8 @@ function Ss(e) {
5717
5768
  }
5718
5769
  //#endregion
5719
5770
  //#region ../core/src/cloud/test-email.ts
5720
- function Cs(e) {
5721
- let { authManager: t, getTemplateId: n, save: r, exportHtml: i, onError: a, isAuthReady: o, onBeforeTestEmail: s } = e, c = new es(t), l = C(!1), u = C(null), d = C(null);
5771
+ function Es(e) {
5772
+ let { authManager: t, getTemplateId: n, save: r, exportHtml: i, onError: a, isAuthReady: o, onBeforeTestEmail: s } = e, c = new rs(t), l = C(!1), u = C(null), d = C(null);
5722
5773
  o && H(o, (e) => {
5723
5774
  e && (d.value = t.testEmailConfig);
5724
5775
  }, { immediate: !0 });
@@ -5754,8 +5805,8 @@ function Cs(e) {
5754
5805
  }
5755
5806
  //#endregion
5756
5807
  //#region ../core/src/cloud/export.ts
5757
- function ws(e) {
5758
- let { authManager: t, getFontsConfig: n, canUseCustomFonts: r } = e, i = new es(t);
5808
+ function Ds(e) {
5809
+ let { authManager: t, getFontsConfig: n, canUseCustomFonts: r } = e, i = new rs(t);
5759
5810
  function a() {
5760
5811
  let e = n?.();
5761
5812
  return {
@@ -5781,8 +5832,8 @@ function ws(e) {
5781
5832
  }
5782
5833
  //#endregion
5783
5834
  //#region ../core/src/cloud/plan-config.ts
5784
- function Ts(e) {
5785
- let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = new es(t), o = O(() => r.value?.features ?? null);
5835
+ function Os(e) {
5836
+ let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = new rs(t), o = O(() => r.value?.features ?? null);
5786
5837
  function s(e) {
5787
5838
  return r.value?.features[e] ?? !1;
5788
5839
  }
@@ -5808,11 +5859,11 @@ function Ts(e) {
5808
5859
  }
5809
5860
  //#endregion
5810
5861
  //#region ../core/src/cloud/health-check.ts
5811
- var Es = 5e3;
5812
- function Ds(e) {
5862
+ var ks = 5e3;
5863
+ function As(e) {
5813
5864
  return e.authManager ? e.authManager.resolveUrl($.health) : `${(e.baseUrl ?? "https://templatical.com").replace(/\/$/, "")}${$.health}`;
5814
5865
  }
5815
- async function Os(e, t) {
5866
+ async function js(e, t) {
5816
5867
  let n = performance.now();
5817
5868
  try {
5818
5869
  let r = t ? await t.authenticatedFetch($.health, {
@@ -5864,7 +5915,7 @@ async function Os(e, t) {
5864
5915
  };
5865
5916
  }
5866
5917
  }
5867
- async function ks(e) {
5918
+ async function Ms(e) {
5868
5919
  if (!e?.host || !e?.app_key) return {
5869
5920
  ok: !1,
5870
5921
  error: "WebSocket configuration not available"
@@ -5880,7 +5931,7 @@ async function ks(e) {
5880
5931
  ok: !1,
5881
5932
  error: "WebSocket connection timed out"
5882
5933
  });
5883
- }, Es);
5934
+ }, ks);
5884
5935
  try {
5885
5936
  n = new WebSocket(t);
5886
5937
  } catch (t) {
@@ -5900,8 +5951,8 @@ async function ks(e) {
5900
5951
  };
5901
5952
  });
5902
5953
  }
5903
- async function As(e = {}) {
5904
- let t = await Os(Ds(e), e.authManager), n = await ks(t.wsConfig);
5954
+ async function Ns(e = {}) {
5955
+ let t = await js(As(e), e.authManager), n = await Ms(t.wsConfig);
5905
5956
  return {
5906
5957
  api: t.api,
5907
5958
  websocket: n,
@@ -5911,29 +5962,29 @@ async function As(e = {}) {
5911
5962
  }
5912
5963
  //#endregion
5913
5964
  //#region ../core/src/cloud/mcp-listener.ts
5914
- function js(e) {
5965
+ function Ps(e) {
5915
5966
  let { editor: t, channel: n, onOperation: r } = e;
5916
5967
  H(n, (e, n) => {
5917
5968
  n && n.unbind("mcp-operation"), e && e.bind("mcp-operation", (e) => {
5918
- rs(t, e), r?.(e);
5969
+ os(t, e), r?.(e);
5919
5970
  });
5920
5971
  });
5921
5972
  }
5922
5973
  //#endregion
5923
5974
  //#region src/cloud/components/AiChatSidebar.vue?vue&type=script&setup=true&lang.ts
5924
- var Ms = {
5975
+ var Fs = {
5925
5976
  key: 0,
5926
5977
  class: "tpl-ai-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
5927
- }, Ns = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, Ps = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, Fs = { class: "tpl:flex tpl:items-center tpl:gap-1" }, Is = ["title"], Ls = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, Rs = {
5978
+ }, Is = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, Ls = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, Rs = { class: "tpl:flex tpl:items-center tpl:gap-1" }, zs = ["title"], Bs = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, Vs = {
5928
5979
  key: 0,
5929
5980
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
5930
- }, zs = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Bs = {
5981
+ }, Hs = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Us = {
5931
5982
  key: 1,
5932
5983
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
5933
- }, Vs = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Hs = {
5984
+ }, Ws = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Gs = {
5934
5985
  key: 2,
5935
5986
  class: "tpl:flex tpl:flex-col tpl:gap-4"
5936
- }, Us = {
5987
+ }, Ks = {
5937
5988
  key: 0,
5938
5989
  class: "tpl:self-end tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm",
5939
5990
  style: {
@@ -5942,10 +5993,10 @@ var Ms = {
5942
5993
  "max-width": "85%",
5943
5994
  "box-shadow": "var(--tpl-shadow)"
5944
5995
  }
5945
- }, Ws = {
5996
+ }, qs = {
5946
5997
  key: 1,
5947
5998
  class: "tpl:flex tpl:flex-col tpl:gap-2"
5948
- }, Gs = {
5999
+ }, Js = {
5949
6000
  key: 1,
5950
6001
  class: "tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm tpl:whitespace-pre-wrap",
5951
6002
  style: {
@@ -5954,21 +6005,21 @@ var Ms = {
5954
6005
  color: "var(--tpl-text)",
5955
6006
  "box-shadow": "var(--tpl-shadow)"
5956
6007
  }
5957
- }, Ks = {
6008
+ }, Ys = {
5958
6009
  key: 0,
5959
6010
  class: "tpl:mx-3 tpl:mb-2 tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs",
5960
6011
  style: {
5961
6012
  "background-color": "var(--tpl-danger-light)",
5962
6013
  color: "var(--tpl-danger)"
5963
6014
  }
5964
- }, qs = {
6015
+ }, Xs = {
5965
6016
  key: 1,
5966
6017
  class: "tpl:absolute tpl:right-0 tpl:bottom-0 tpl:left-0 tpl:z-10 tpl:px-3 tpl:pb-3",
5967
6018
  style: {
5968
6019
  "background-color": "color-mix(\n in srgb,\n var(--tpl-bg) 50%,\n transparent\n )",
5969
6020
  "backdrop-filter": "blur(2px)"
5970
6021
  }
5971
- }, Js = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, Ys = ["onClick"], Xs = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, Zs = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Qs = ["placeholder", "disabled"], $s = ["disabled"], ec = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, tc = /*@__PURE__*/ B({
6022
+ }, Zs = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, Qs = ["onClick"], $s = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, ec = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, tc = ["placeholder", "disabled"], nc = ["disabled"], rc = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, ic = /*@__PURE__*/ B({
5972
6023
  __name: "AiChatSidebar",
5973
6024
  props: {
5974
6025
  visible: { type: Boolean },
@@ -5976,7 +6027,7 @@ var Ms = {
5976
6027
  },
5977
6028
  emits: ["close"],
5978
6029
  setup(e, { emit: t }) {
5979
- let n = e, r = t, i = J(pr, "AiChatSidebar"), a = J(Ln, "AiChatSidebar"), o = J(cr, "AiChatSidebar"), s = v(Yn, []), l = ba(), u = cs({
6030
+ let n = e, r = t, i = J(pr, "AiChatSidebar"), a = J(Ln, "AiChatSidebar"), o = J(cr, "AiChatSidebar"), s = v(Yn, []), l = ba(), u = ds({
5980
6031
  authManager: o,
5981
6032
  getTemplateId: () => a.state.template?.id ?? null,
5982
6033
  onApply: n.onApply,
@@ -6023,11 +6074,11 @@ var Ms = {
6023
6074
  "leave-from-class": "tpl:translate-x-0",
6024
6075
  "leave-to-class": "tpl:translate-x-full"
6025
6076
  }, {
6026
- default: b(() => [e.visible ? (f(), k("div", Ms, [
6027
- I("div", Ns, [I("div", Ps, [V(j(Xr), {
6077
+ default: b(() => [e.visible ? (f(), k("div", Fs, [
6078
+ I("div", Is, [I("div", Ls, [V(j(Xr), {
6028
6079
  size: 13,
6029
6080
  "stroke-width": 2
6030
- }), I("span", null, D(j(i).aiChat.title), 1)]), I("div", Fs, [(j(u).messages.value?.length ?? 0) > 0 ? (f(), k("button", {
6081
+ }), I("span", null, D(j(i).aiChat.title), 1)]), I("div", Rs, [(j(u).messages.value?.length ?? 0) > 0 ? (f(), k("button", {
6031
6082
  key: 0,
6032
6083
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6033
6084
  title: j(i).aiChat.clear,
@@ -6035,30 +6086,30 @@ var Ms = {
6035
6086
  }, [V(j(Di), {
6036
6087
  size: 14,
6037
6088
  "stroke-width": 2
6038
- })], 8, Is)) : A("", !0), I("button", {
6089
+ })], 8, zs)) : A("", !0), I("button", {
6039
6090
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6040
6091
  onClick: n[1] ||= (e) => r("close")
6041
6092
  }, [V(j(ji), {
6042
6093
  size: 14,
6043
6094
  "stroke-width": 2
6044
6095
  })])])]),
6045
- I("div", Ls, [
6096
+ I("div", Bs, [
6046
6097
  I("div", {
6047
6098
  ref_key: "messagesContainer",
6048
6099
  ref: p,
6049
6100
  class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4"
6050
- }, [j(u).isLoadingHistory.value ? (f(), k("div", Rs, [V(j(Jr), {
6101
+ }, [j(u).isLoadingHistory.value ? (f(), k("div", Vs, [V(j(Jr), {
6051
6102
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
6052
6103
  size: 24,
6053
6104
  "stroke-width": 2
6054
- }), I("p", zs, D(j(i).aiChat.loadingHistory), 1)])) : (j(u).messages.value?.length ?? 0) === 0 ? (f(), k("div", Bs, [V(j(Xr), {
6105
+ }), I("p", Hs, D(j(i).aiChat.loadingHistory), 1)])) : (j(u).messages.value?.length ?? 0) === 0 ? (f(), k("div", Us, [V(j(Xr), {
6055
6106
  size: 32,
6056
6107
  "stroke-width": 1.5,
6057
6108
  class: "tpl:text-[var(--tpl-text-dim)]"
6058
- }), I("p", Vs, D(j(i).aiChat.placeholder), 1)])) : (f(), k("div", Hs, [(f(!0), k(R, null, h(j(u).messages.value, (e, t) => (f(), k("div", {
6109
+ }), I("p", Ws, D(j(i).aiChat.placeholder), 1)])) : (f(), k("div", Gs, [(f(!0), k(R, null, h(j(u).messages.value, (e, t) => (f(), k("div", {
6059
6110
  key: e.id,
6060
6111
  class: "tpl:flex tpl:flex-col tpl:gap-2"
6061
- }, [e.role === "user" ? (f(), k("div", Us, D(e.content), 1)) : (f(), k("div", Ws, [!T(e.content) && j(u).isGenerating.value && t === (j(u).messages.value?.length ?? 0) - 1 ? (f(), N(Bi, { key: 0 })) : (f(), k("div", Gs, D(T(e.content) || j(i).aiChat.applied), 1)), e.id === j(u).lastApplyMessageId.value && !j(u).isGenerating.value ? (f(), k("button", {
6112
+ }, [e.role === "user" ? (f(), k("div", Ks, D(e.content), 1)) : (f(), k("div", qs, [!T(e.content) && j(u).isGenerating.value && t === (j(u).messages.value?.length ?? 0) - 1 ? (f(), N(Bi, { key: 0 })) : (f(), k("div", Js, D(T(e.content) || j(i).aiChat.applied), 1)), e.id === j(u).lastApplyMessageId.value && !j(u).isGenerating.value ? (f(), k("button", {
6062
6113
  key: 2,
6063
6114
  class: "tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:self-start tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",
6064
6115
  style: {
@@ -6074,12 +6125,12 @@ var Ms = {
6074
6125
  size: 12,
6075
6126
  "stroke-width": 2
6076
6127
  }), z(" " + D(j(i).aiChat.revert), 1)], 64))])) : A("", !0)]))]))), 128))]))], 512),
6077
- j(u).error.value ? (f(), k("div", Ks, [V(j(Gr), {
6128
+ j(u).error.value ? (f(), k("div", Ys, [V(j(Gr), {
6078
6129
  size: 14,
6079
6130
  "stroke-width": 2,
6080
6131
  class: "tpl:mt-0.5 tpl:shrink-0"
6081
6132
  }), I("span", null, D(j(u).error.value === "ai_apply_failed" ? j(i).aiChat.applyFailed : j(i).aiChat.error), 1)])) : A("", !0),
6082
- (j(u).suggestions.value?.length ?? 0) > 0 ? (f(), k("div", qs, [I("div", Js, [(f(!0), k(R, null, h(j(u).suggestions.value ?? [], (e, t) => (f(), k("button", {
6133
+ (j(u).suggestions.value?.length ?? 0) > 0 ? (f(), k("div", Xs, [I("div", Zs, [(f(!0), k(R, null, h(j(u).suggestions.value ?? [], (e, t) => (f(), k("button", {
6083
6134
  key: t,
6084
6135
  class: F(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (j(u).suggestions.value?.length ?? 0) - 1 - t < _.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
6085
6136
  style: {
@@ -6089,99 +6140,99 @@ var Ms = {
6089
6140
  "box-shadow": "var(--tpl-shadow)"
6090
6141
  },
6091
6142
  onClick: (t) => E(e)
6092
- }, D(e), 11, Ys))), 128))])])) : A("", !0)
6143
+ }, D(e), 11, Qs))), 128))])])) : A("", !0)
6093
6144
  ]),
6094
- I("div", Xs, [I("div", Zs, [c(I("textarea", {
6145
+ I("div", $s, [I("div", ec, [c(I("textarea", {
6095
6146
  "onUpdate:modelValue": n[3] ||= (e) => d.value = e,
6096
6147
  class: "tpl:max-h-32 tpl:min-h-[64px] tpl:flex-1 tpl:resize-none tpl:border-none tpl:bg-transparent tpl:font-sans tpl:text-sm tpl:outline-none tpl:text-[var(--tpl-text)]",
6097
6148
  placeholder: j(i).aiChat.inputPlaceholder,
6098
6149
  disabled: j(u).isGenerating.value,
6099
6150
  rows: "3",
6100
6151
  onKeydown: te
6101
- }, null, 40, Qs), [[ae, d.value]]), I("button", {
6152
+ }, null, 40, tc), [[ae, d.value]]), I("button", {
6102
6153
  class: "tpl-ai-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
6103
6154
  disabled: !d.value.trim() || j(u).isGenerating.value,
6104
6155
  onClick: ee
6105
6156
  }, [V(j(Ci), {
6106
6157
  size: 16,
6107
6158
  "stroke-width": 2
6108
- })], 8, $s)]), I("p", ec, D(j(i).aiMenu.disclaimer), 1)])
6159
+ })], 8, nc)]), I("p", rc, D(j(i).aiMenu.disclaimer), 1)])
6109
6160
  ])) : A("", !0)]),
6110
6161
  _: 1
6111
6162
  }));
6112
6163
  }
6113
- }), nc = /* @__PURE__ */ e({ default: () => rc }), rc = /*#__PURE__*/ Ii(tc, [["__scopeId", "data-v-a55e4bff"]]), ic = 6e4, ac = 36e5, oc = 864e5;
6114
- function sc(e, t, n, r) {
6164
+ }), ac = /* @__PURE__ */ e({ default: () => oc }), oc = /*#__PURE__*/ Ii(ic, [["__scopeId", "data-v-a55e4bff"]]), sc = 6e4, cc = 36e5, lc = 864e5;
6165
+ function uc(e, t, n, r) {
6115
6166
  let i = new Date(e).getTime();
6116
6167
  if (Number.isNaN(i)) return null;
6117
6168
  let a = Date.now() - i;
6118
6169
  if (a < -6e4) return null;
6119
- let o = Math.floor(a / ic), s = Math.floor(a / ac), c = Math.floor(a / oc);
6170
+ let o = Math.floor(a / sc), s = Math.floor(a / cc), c = Math.floor(a / lc);
6120
6171
  return o < 1 ? t.justNow : o < 60 ? n ? n(t.minutesAgo, { minutes: o }) : t.minutesAgo.replace("{minutes}", String(o)) : s < 24 ? n ? n(t.hoursAgo, { hours: s }) : t.hoursAgo.replace("{hours}", String(s)) : r !== void 0 && c >= r ? null : n ? n(t.daysAgo, { days: c }) : t.daysAgo.replace("{days}", String(c));
6121
6172
  }
6122
6173
  //#endregion
6123
6174
  //#region src/cloud/components/CommentsSidebar.vue?vue&type=script&setup=true&lang.ts
6124
- var cc = {
6175
+ var dc = {
6125
6176
  key: 0,
6126
6177
  class: "tpl-comments-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
6127
- }, lc = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, uc = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, dc = {
6178
+ }, fc = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, pc = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, mc = {
6128
6179
  key: 0,
6129
6180
  class: "tpl:ml-1 tpl:inline-flex tpl:size-5 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-[10px] tpl:font-semibold tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]"
6130
- }, fc = { class: "tpl:flex tpl:gap-1 tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2" }, pc = { class: "tpl:flex-1 tpl:overflow-y-auto" }, mc = {
6181
+ }, hc = { class: "tpl:flex tpl:gap-1 tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2" }, gc = { class: "tpl:flex-1 tpl:overflow-y-auto" }, _c = {
6131
6182
  key: 0,
6132
6183
  class: "tpl:flex tpl:h-full tpl:items-center tpl:justify-center"
6133
- }, hc = {
6184
+ }, vc = {
6134
6185
  key: 1,
6135
6186
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:px-6 tpl:text-center"
6136
- }, gc = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, _c = {
6187
+ }, yc = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, bc = {
6137
6188
  key: 2,
6138
6189
  class: "tpl:flex tpl:flex-col tpl:gap-3 tpl:p-3"
6139
- }, vc = { class: "tpl-comment-card tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-3" }, yc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, bc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, xc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Sc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Cc = {
6190
+ }, xc = { class: "tpl-comment-card tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-3" }, Sc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, Cc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, wc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Tc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Ec = {
6140
6191
  key: 0,
6141
6192
  class: "tpl:text-[10px] tpl:italic tpl:text-[var(--tpl-text-dim)]"
6142
- }, wc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, Tc = ["title", "onClick"], Ec = ["title", "onClick"], Dc = ["title", "onClick"], Oc = {
6193
+ }, Dc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, Oc = ["title", "onClick"], kc = ["title", "onClick"], Ac = ["title", "onClick"], jc = {
6143
6194
  key: 0,
6144
6195
  class: "tpl:mt-1 tpl:flex tpl:items-center tpl:gap-1 tpl:text-[10px] tpl:text-[var(--tpl-primary)]"
6145
- }, kc = {
6196
+ }, Mc = {
6146
6197
  key: 0,
6147
6198
  class: "tpl:mt-1 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-warning-light)] tpl:text-[var(--tpl-warning)]"
6148
- }, Ac = ["onClick"], jc = {
6199
+ }, Nc = ["onClick"], Pc = {
6149
6200
  key: 2,
6150
6201
  class: "tpl:mt-2"
6151
- }, Mc = ["onKeydown"], Nc = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, Pc = ["disabled", "onClick"], Fc = {
6202
+ }, Fc = ["onKeydown"], Ic = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, Lc = ["disabled", "onClick"], Rc = {
6152
6203
  key: 3,
6153
6204
  class: "tpl:mt-1.5 tpl:text-xs tpl:leading-relaxed tpl:whitespace-pre-wrap tpl:text-[var(--tpl-text)]"
6154
- }, Ic = {
6205
+ }, zc = {
6155
6206
  key: 4,
6156
6207
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-2.5 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6157
- }, Lc = { class: "tpl:flex-1" }, Rc = ["onClick"], zc = {
6208
+ }, Bc = { class: "tpl:flex-1" }, Vc = ["onClick"], Hc = {
6158
6209
  key: 5,
6159
6210
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2"
6160
- }, Bc = ["title", "onClick"], Vc = ["onClick"], Hc = {
6211
+ }, Uc = ["title", "onClick"], Wc = ["onClick"], Gc = {
6161
6212
  key: 0,
6162
6213
  class: "tpl-comment-replies tpl:ml-5 tpl:pl-3 tpl:pt-2"
6163
- }, Uc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, Wc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, Gc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Kc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, qc = {
6214
+ }, Kc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, qc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, Jc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Yc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Xc = {
6164
6215
  key: 0,
6165
6216
  class: "tpl:text-[10px] tpl:italic tpl:text-[var(--tpl-text-dim)]"
6166
- }, Jc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, Yc = ["title", "onClick"], Xc = ["title", "onClick"], Zc = {
6217
+ }, Zc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, Qc = ["title", "onClick"], $c = ["title", "onClick"], el = {
6167
6218
  key: 0,
6168
6219
  class: "tpl:mt-1.5"
6169
- }, Qc = ["onKeydown"], $c = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, el = ["disabled", "onClick"], tl = {
6220
+ }, tl = ["onKeydown"], nl = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, rl = ["disabled", "onClick"], il = {
6170
6221
  key: 1,
6171
6222
  class: "tpl:mt-1 tpl:text-xs tpl:leading-relaxed tpl:whitespace-pre-wrap tpl:text-[var(--tpl-text)]"
6172
- }, nl = {
6223
+ }, al = {
6173
6224
  key: 2,
6174
6225
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-2.5 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6175
- }, rl = { class: "tpl:flex-1" }, il = ["onClick"], al = {
6226
+ }, ol = { class: "tpl:flex-1" }, sl = ["onClick"], cl = {
6176
6227
  key: 0,
6177
6228
  class: "tpl-comment-replies tpl:ml-5 tpl:pl-3 tpl:pt-2"
6178
- }, ol = { class: "tpl:flex tpl:items-end tpl:gap-2" }, sl = ["placeholder", "onKeydown"], cl = { class: "tpl:flex tpl:shrink-0 tpl:flex-col tpl:gap-1" }, ll = ["disabled", "onClick"], ul = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, dl = {
6229
+ }, ll = { class: "tpl:flex tpl:items-end tpl:gap-2" }, ul = ["placeholder", "onKeydown"], dl = { class: "tpl:flex tpl:shrink-0 tpl:flex-col tpl:gap-1" }, fl = ["disabled", "onClick"], pl = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, ml = {
6179
6230
  key: 0,
6180
6231
  class: "tpl:flex tpl:min-h-[68px] tpl:items-center tpl:rounded-md tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-warning-light)] tpl:text-[var(--tpl-warning)]"
6181
- }, fl = {
6232
+ }, hl = {
6182
6233
  key: 1,
6183
6234
  class: "tpl-comments-input-wrapper tpl:flex tpl:min-h-[68px] tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]"
6184
- }, pl = ["placeholder", "disabled"], ml = ["disabled"], hl = /*@__PURE__*/ B({
6235
+ }, gl = ["placeholder", "disabled"], _l = ["disabled"], vl = /*@__PURE__*/ B({
6185
6236
  __name: "CommentsSidebar",
6186
6237
  props: { visible: { type: Boolean } },
6187
6238
  emits: ["close", "filterBlock"],
@@ -6254,7 +6305,7 @@ var cc = {
6254
6305
  return e.author_identifier === T.value;
6255
6306
  }
6256
6307
  function ve(e) {
6257
- return sc(e, o.snapshotHistory) ?? e;
6308
+ return uc(e, o.snapshotHistory) ?? e;
6258
6309
  }
6259
6310
  function ye(e) {
6260
6311
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), fe());
@@ -6281,14 +6332,14 @@ var cc = {
6281
6332
  "leave-from-class": "tpl:translate-x-0",
6282
6333
  "leave-to-class": "tpl:translate-x-full"
6283
6334
  }, {
6284
- default: b(() => [e.visible ? (f(), k("div", cc, [
6285
- I("div", lc, [I("div", uc, [
6335
+ default: b(() => [e.visible ? (f(), k("div", dc, [
6336
+ I("div", fc, [I("div", pc, [
6286
6337
  V(j(gi), {
6287
6338
  size: 13,
6288
6339
  "stroke-width": 2
6289
6340
  }),
6290
6341
  I("span", null, D(j(o).comments.title), 1),
6291
- j(u).unresolvedCount.value > 0 ? (f(), k("span", dc, D(j(u).unresolvedCount.value), 1)) : A("", !0)
6342
+ j(u).unresolvedCount.value > 0 ? (f(), k("span", mc, D(j(u).unresolvedCount.value), 1)) : A("", !0)
6292
6343
  ]), I("button", {
6293
6344
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6294
6345
  onClick: n[0] ||= (e) => i("close")
@@ -6296,7 +6347,7 @@ var cc = {
6296
6347
  size: 14,
6297
6348
  "stroke-width": 2
6298
6349
  })])]),
6299
- I("div", fc, [
6350
+ I("div", hc, [
6300
6351
  I("button", {
6301
6352
  class: F(["tpl-comment-filter tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150", d.value === "unresolved" ? "tpl-comment-filter--active" : ""]),
6302
6353
  onClick: n[1] ||= (e) => M("unresolved")
@@ -6311,24 +6362,24 @@ var cc = {
6311
6362
  onClick: n[3] ||= (e) => M("block", j(s).state.selectedBlockId ?? void 0)
6312
6363
  }, D(j(o).comments.filterBlock), 3)) : A("", !0)
6313
6364
  ]),
6314
- I("div", pc, [j(u).isLoading.value ? (f(), k("div", mc, [V(j(Jr), {
6365
+ I("div", gc, [j(u).isLoading.value ? (f(), k("div", _c, [V(j(Jr), {
6315
6366
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
6316
6367
  size: 24,
6317
6368
  "stroke-width": 2
6318
- })])) : re.value.length === 0 ? (f(), k("div", hc, [V(j(gi), {
6369
+ })])) : re.value.length === 0 ? (f(), k("div", vc, [V(j(gi), {
6319
6370
  size: 32,
6320
6371
  "stroke-width": 1.5,
6321
6372
  class: "tpl:text-[var(--tpl-text-dim)]"
6322
- }), I("p", gc, D(d.value === "all" ? j(o).comments.noCommentsHint : j(o).comments.noComments), 1)])) : (f(), k("div", _c, [(f(!0), k(R, null, h(re.value, (e) => (f(), k("div", {
6373
+ }), I("p", yc, D(d.value === "all" ? j(o).comments.noCommentsHint : j(o).comments.noComments), 1)])) : (f(), k("div", bc, [(f(!0), k(R, null, h(re.value, (e) => (f(), k("div", {
6323
6374
  key: e.id,
6324
6375
  class: "tpl-comment-thread"
6325
6376
  }, [
6326
- I("div", vc, [
6327
- I("div", yc, [I("div", bc, [
6328
- I("span", xc, D(_e(e) ? j(o).comments.ownedByYou : e.author_name), 1),
6329
- I("span", Sc, D(ve(e.created_at)), 1),
6330
- e.updated_at === e.created_at ? A("", !0) : (f(), k("span", Cc, " (" + D(j(o).comments.edited) + ") ", 1))
6331
- ]), I("div", wc, [
6377
+ I("div", xc, [
6378
+ I("div", Sc, [I("div", Cc, [
6379
+ I("span", wc, D(_e(e) ? j(o).comments.ownedByYou : e.author_name), 1),
6380
+ I("span", Tc, D(ve(e.created_at)), 1),
6381
+ e.updated_at === e.created_at ? A("", !0) : (f(), k("span", Ec, " (" + D(j(o).comments.edited) + ") ", 1))
6382
+ ]), I("div", Dc, [
6332
6383
  I("button", {
6333
6384
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6334
6385
  title: e.resolved_at ? j(o).comments.unresolve : j(o).comments.resolve,
@@ -6338,7 +6389,7 @@ var cc = {
6338
6389
  "stroke-width": 2,
6339
6390
  class: "tpl-resolve-icon",
6340
6391
  style: L({ color: e.resolved_at ? "var(--tpl-primary)" : void 0 })
6341
- }, null, 8, ["style"])], 8, Tc),
6392
+ }, null, 8, ["style"])], 8, Oc),
6342
6393
  _e(e) ? (f(), k("button", {
6343
6394
  key: 0,
6344
6395
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
@@ -6347,7 +6398,7 @@ var cc = {
6347
6398
  }, [V(j(vi), {
6348
6399
  size: 12,
6349
6400
  "stroke-width": 2
6350
- })], 8, Ec)) : A("", !0),
6401
+ })], 8, kc)) : A("", !0),
6351
6402
  _e(e) ? (f(), k("button", {
6352
6403
  key: 1,
6353
6404
  class: "tpl-comment-action tpl-comment-delete tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
@@ -6356,45 +6407,45 @@ var cc = {
6356
6407
  }, [V(j(Di), {
6357
6408
  size: 12,
6358
6409
  "stroke-width": 2
6359
- })], 8, Dc)) : A("", !0)
6410
+ })], 8, Ac)) : A("", !0)
6360
6411
  ])]),
6361
6412
  V(ie, { name: "tpl-resolve" }, {
6362
- default: b(() => [e.resolved_at ? (f(), k("div", Oc, [V(j(ei), {
6413
+ default: b(() => [e.resolved_at ? (f(), k("div", jc, [V(j(ei), {
6363
6414
  size: 10,
6364
6415
  "stroke-width": 2.5
6365
6416
  }), I("span", null, D(j(a)(j(o).comments.resolvedBy, { name: e.resolved_by_name ?? "" })), 1)])) : A("", !0)]),
6366
6417
  _: 2
6367
6418
  }, 1024),
6368
- e.block_id && te(e.block_id) ? (f(), k("span", kc, D(j(o).comments.missingBlock), 1)) : e.block_id ? (f(), k("button", {
6419
+ e.block_id && te(e.block_id) ? (f(), k("span", Mc, D(j(o).comments.missingBlock), 1)) : e.block_id ? (f(), k("button", {
6369
6420
  key: 1,
6370
6421
  class: "tpl:mt-1 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
6371
6422
  onClick: (t) => j(s).selectBlock(e.block_id ?? "")
6372
- }, " Block ", 8, Ac)) : A("", !0),
6373
- y.value === e.id ? (f(), k("div", jc, [c(I("textarea", {
6423
+ }, " Block ", 8, Nc)) : A("", !0),
6424
+ y.value === e.id ? (f(), k("div", Pc, [c(I("textarea", {
6374
6425
  "onUpdate:modelValue": n[4] ||= (e) => x.value = e,
6375
6426
  class: "tpl:w-full tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6376
6427
  rows: "3",
6377
6428
  onKeydown: (t) => xe(t, e.id)
6378
- }, null, 40, Mc), [[ae, x.value]]), I("div", Nc, [I("button", {
6429
+ }, null, 40, Fc), [[ae, x.value]]), I("div", Ic, [I("button", {
6379
6430
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6380
6431
  disabled: !x.value.trim() || j(u).isSubmitting.value,
6381
6432
  onClick: (t) => me(e.id)
6382
- }, D(j(o).comments.save), 9, Pc), I("button", {
6433
+ }, D(j(o).comments.save), 9, Lc), I("button", {
6383
6434
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6384
6435
  onClick: n[5] ||= (e) => B()
6385
- }, D(j(o).comments.cancel), 1)])])) : (f(), k("p", Fc, D(e.body), 1)),
6386
- w.value === e.id ? (f(), k("div", Ic, [
6387
- I("span", Lc, D(j(o).comments.deleteConfirm), 1),
6436
+ }, D(j(o).comments.cancel), 1)])])) : (f(), k("p", Rc, D(e.body), 1)),
6437
+ w.value === e.id ? (f(), k("div", zc, [
6438
+ I("span", Bc, D(j(o).comments.deleteConfirm), 1),
6388
6439
  I("button", {
6389
6440
  class: "tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-danger)] tpl:text-[var(--tpl-bg)]",
6390
6441
  onClick: (t) => he(e.id)
6391
- }, D(j(o).comments.delete), 9, Rc),
6442
+ }, D(j(o).comments.delete), 9, Vc),
6392
6443
  I("button", {
6393
6444
  class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6394
6445
  onClick: n[6] ||= (e) => de()
6395
6446
  }, D(j(o).comments.cancel), 1)
6396
6447
  ])) : A("", !0),
6397
- y.value !== e.id && w.value !== e.id ? (f(), k("div", zc, [I("button", {
6448
+ y.value !== e.id && w.value !== e.id ? (f(), k("div", Hc, [I("button", {
6398
6449
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6399
6450
  title: j(o).comments.reply,
6400
6451
  onClick: (t) => se(e.id)
@@ -6402,7 +6453,7 @@ var cc = {
6402
6453
  size: 13,
6403
6454
  "stroke-width": 2,
6404
6455
  class: "tpl:text-[var(--tpl-primary)]"
6405
- })], 8, Bc), (e.replies?.length ?? 0) > 0 ? (f(), k("button", {
6456
+ })], 8, Uc), (e.replies?.length ?? 0) > 0 ? (f(), k("button", {
6406
6457
  key: 0,
6407
6458
  class: "tpl:flex tpl:items-center tpl:gap-0.5 tpl:text-[11px] tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6408
6459
  onClick: (t) => oe(e.id)
@@ -6414,18 +6465,18 @@ var cc = {
6414
6465
  key: 1,
6415
6466
  size: 11,
6416
6467
  "stroke-width": 2
6417
- })), z(" " + D((e.replies?.length ?? 0) === 1 ? j(a)(j(o).comments.replyOne, { count: String(e.replies?.length ?? 0) }) : j(a)(j(o).comments.replyMany, { count: String(e.replies?.length ?? 0) })), 1)], 8, Vc)) : A("", !0)])) : A("", !0)
6468
+ })), z(" " + D((e.replies?.length ?? 0) === 1 ? j(a)(j(o).comments.replyOne, { count: String(e.replies?.length ?? 0) }) : j(a)(j(o).comments.replyMany, { count: String(e.replies?.length ?? 0) })), 1)], 8, Wc)) : A("", !0)])) : A("", !0)
6418
6469
  ]),
6419
6470
  V(ie, { name: "tpl-replies" }, {
6420
- default: b(() => [S.value.has(e.id) && (e.replies?.length ?? 0) > 0 ? (f(), k("div", Hc, [(f(!0), k(R, null, h(e.replies, (t, r) => (f(), k("div", {
6471
+ default: b(() => [S.value.has(e.id) && (e.replies?.length ?? 0) > 0 ? (f(), k("div", Gc, [(f(!0), k(R, null, h(e.replies, (t, r) => (f(), k("div", {
6421
6472
  key: t.id,
6422
6473
  class: F(["tpl-comment-reply-card tpl:relative tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-2.5", r < (e.replies?.length ?? 0) - 1 ? "tpl:mb-2" : ""])
6423
6474
  }, [
6424
- I("div", Uc, [I("div", Wc, [
6425
- I("span", Gc, D(_e(t) ? j(o).comments.ownedByYou : t.author_name), 1),
6426
- I("span", Kc, D(ve(t.created_at)), 1),
6427
- t.updated_at === t.created_at ? A("", !0) : (f(), k("span", qc, " (" + D(j(o).comments.edited) + ") ", 1))
6428
- ]), I("div", Jc, [_e(t) ? (f(), k("button", {
6475
+ I("div", Kc, [I("div", qc, [
6476
+ I("span", Jc, D(_e(t) ? j(o).comments.ownedByYou : t.author_name), 1),
6477
+ I("span", Yc, D(ve(t.created_at)), 1),
6478
+ t.updated_at === t.created_at ? A("", !0) : (f(), k("span", Xc, " (" + D(j(o).comments.edited) + ") ", 1))
6479
+ ]), I("div", Zc, [_e(t) ? (f(), k("button", {
6429
6480
  key: 0,
6430
6481
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6431
6482
  title: j(o).comments.edit,
@@ -6433,7 +6484,7 @@ var cc = {
6433
6484
  }, [V(j(vi), {
6434
6485
  size: 11,
6435
6486
  "stroke-width": 2
6436
- })], 8, Yc)) : A("", !0), _e(t) ? (f(), k("button", {
6487
+ })], 8, Qc)) : A("", !0), _e(t) ? (f(), k("button", {
6437
6488
  key: 1,
6438
6489
  class: "tpl-comment-action tpl-comment-delete tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6439
6490
  title: j(o).comments.delete,
@@ -6441,26 +6492,26 @@ var cc = {
6441
6492
  }, [V(j(Di), {
6442
6493
  size: 11,
6443
6494
  "stroke-width": 2
6444
- })], 8, Xc)) : A("", !0)])]),
6445
- y.value === t.id ? (f(), k("div", Zc, [c(I("textarea", {
6495
+ })], 8, $c)) : A("", !0)])]),
6496
+ y.value === t.id ? (f(), k("div", el, [c(I("textarea", {
6446
6497
  "onUpdate:modelValue": n[7] ||= (e) => x.value = e,
6447
6498
  class: "tpl:w-full tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6448
6499
  rows: "2",
6449
6500
  onKeydown: (e) => xe(e, t.id)
6450
- }, null, 40, Qc), [[ae, x.value]]), I("div", $c, [I("button", {
6501
+ }, null, 40, tl), [[ae, x.value]]), I("div", nl, [I("button", {
6451
6502
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6452
6503
  disabled: !x.value.trim() || j(u).isSubmitting.value,
6453
6504
  onClick: (e) => me(t.id)
6454
- }, D(j(o).comments.save), 9, el), I("button", {
6505
+ }, D(j(o).comments.save), 9, rl), I("button", {
6455
6506
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6456
6507
  onClick: n[8] ||= (e) => B()
6457
- }, D(j(o).comments.cancel), 1)])])) : (f(), k("p", tl, D(t.body), 1)),
6458
- w.value === t.id ? (f(), k("div", nl, [
6459
- I("span", rl, D(j(o).comments.deleteConfirm), 1),
6508
+ }, D(j(o).comments.cancel), 1)])])) : (f(), k("p", il, D(t.body), 1)),
6509
+ w.value === t.id ? (f(), k("div", al, [
6510
+ I("span", ol, D(j(o).comments.deleteConfirm), 1),
6460
6511
  I("button", {
6461
6512
  class: "tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-danger)] tpl:text-[var(--tpl-bg)]",
6462
6513
  onClick: (e) => he(t.id)
6463
- }, D(j(o).comments.delete), 9, il),
6514
+ }, D(j(o).comments.delete), 9, sl),
6464
6515
  I("button", {
6465
6516
  class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6466
6517
  onClick: n[9] ||= (e) => de()
@@ -6470,20 +6521,20 @@ var cc = {
6470
6521
  _: 2
6471
6522
  }, 1024),
6472
6523
  V(ie, { name: "tpl-replies" }, {
6473
- default: b(() => [_.value === e.id ? (f(), k("div", al, [I("div", ol, [c(I("textarea", {
6524
+ default: b(() => [_.value === e.id ? (f(), k("div", cl, [I("div", ll, [c(I("textarea", {
6474
6525
  "onUpdate:modelValue": n[10] ||= (e) => v.value = e,
6475
6526
  class: "tpl:flex-1 tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6476
6527
  placeholder: j(o).comments.replyPlaceholder,
6477
6528
  rows: "2",
6478
6529
  onKeydown: (t) => be(t, e.id)
6479
- }, null, 40, sl), [[ae, v.value]]), I("div", cl, [I("button", {
6530
+ }, null, 40, ul), [[ae, v.value]]), I("div", dl, [I("button", {
6480
6531
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-colors tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
6481
6532
  disabled: !v.value.trim() || j(u).isSubmitting.value,
6482
6533
  onClick: (t) => pe(e.id)
6483
6534
  }, [V(j(Ci), {
6484
6535
  size: 14,
6485
6536
  "stroke-width": 2
6486
- })], 8, ll), I("button", {
6537
+ })], 8, fl), I("button", {
6487
6538
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6488
6539
  onClick: n[11] ||= (e) => ce()
6489
6540
  }, [V(j(ji), {
@@ -6493,7 +6544,7 @@ var cc = {
6493
6544
  _: 2
6494
6545
  }, 1024)
6495
6546
  ]))), 128))]))]),
6496
- I("div", ul, [ne.value ? (f(), k("div", dl, D(j(o).comments.saveTemplateFirst), 1)) : (f(), k("div", fl, [c(I("textarea", {
6547
+ I("div", pl, [ne.value ? (f(), k("div", ml, D(j(o).comments.saveTemplateFirst), 1)) : (f(), k("div", hl, [c(I("textarea", {
6497
6548
  ref_key: "newCommentInput",
6498
6549
  ref: ee,
6499
6550
  "onUpdate:modelValue": n[12] ||= (e) => g.value = e,
@@ -6502,7 +6553,7 @@ var cc = {
6502
6553
  disabled: j(u).isSubmitting.value,
6503
6554
  rows: "2",
6504
6555
  onKeydown: ye
6505
- }, null, 40, pl), [[ae, g.value]]), I("button", {
6556
+ }, null, 40, gl), [[ae, g.value]]), I("button", {
6506
6557
  class: "tpl-comments-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
6507
6558
  disabled: !g.value.trim() || j(u).isSubmitting.value,
6508
6559
  onClick: fe
@@ -6515,33 +6566,33 @@ var cc = {
6515
6566
  key: 1,
6516
6567
  size: 16,
6517
6568
  "stroke-width": 2
6518
- }))], 8, ml)]))])
6569
+ }))], 8, _l)]))])
6519
6570
  ])) : A("", !0)]),
6520
6571
  _: 1
6521
6572
  }));
6522
6573
  }
6523
- }), gl = /* @__PURE__ */ e({ default: () => _l }), _l = /*#__PURE__*/ Ii(hl, [["__scopeId", "data-v-d204f573"]]), vl = {
6574
+ }), yl = /* @__PURE__ */ e({ default: () => bl }), bl = /*#__PURE__*/ Ii(vl, [["__scopeId", "data-v-d204f573"]]), xl = {
6524
6575
  key: 0,
6525
6576
  class: "tpl-design-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
6526
- }, yl = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, bl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, xl = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, Sl = {
6577
+ }, Sl = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, Cl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, wl = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, Tl = {
6527
6578
  key: 0,
6528
6579
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6529
- }, Cl = { class: "tpl:flex tpl:w-full tpl:flex-col tpl:items-center tpl:gap-3" }, wl = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Tl = {
6580
+ }, El = { class: "tpl:flex tpl:w-full tpl:flex-col tpl:items-center tpl:gap-3" }, Dl = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ol = {
6530
6581
  key: 1,
6531
6582
  class: "tpl:flex tpl:flex-col tpl:gap-4"
6532
- }, El = { class: "tpl:flex tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1 tpl:bg-[var(--tpl-bg-hover)]" }, Dl = {
6583
+ }, kl = { class: "tpl:flex tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1 tpl:bg-[var(--tpl-bg-hover)]" }, Al = {
6533
6584
  key: 0,
6534
6585
  class: "tpl:flex tpl:flex-col tpl:gap-2"
6535
- }, Ol = { class: "tpl:relative tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, kl = ["src", "alt"], Al = {
6586
+ }, jl = { class: "tpl:relative tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Ml = ["src", "alt"], Nl = {
6536
6587
  key: 1,
6537
6588
  class: "tpl:flex tpl:h-32 tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2"
6538
- }, jl = { class: "tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, Ml = { class: "tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, Nl = { class: "tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Pl = ["accept"], Fl = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, Il = { class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Ll = ["placeholder"], Rl = {
6589
+ }, Pl = { class: "tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, Fl = { class: "tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, Il = { class: "tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Ll = ["accept"], Rl = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, zl = { class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Bl = ["placeholder"], Vl = {
6539
6590
  key: 0,
6540
6591
  class: "tpl:flex tpl:flex-col tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:px-3 tpl:py-3 tpl:bg-[var(--tpl-warning-light)] tpl:border tpl:border-[var(--tpl-warning)]"
6541
- }, zl = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Bl = { class: "tpl:flex tpl:gap-2" }, Vl = {
6592
+ }, Hl = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Ul = { class: "tpl:flex tpl:gap-2" }, Wl = {
6542
6593
  key: 1,
6543
6594
  class: "tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6544
- }, Hl = ["disabled"], Ul = { class: "tpl:m-0 tpl:pt-1 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Wl = /*@__PURE__*/ B({
6595
+ }, Gl = ["disabled"], Kl = { class: "tpl:m-0 tpl:pt-1 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, ql = /*@__PURE__*/ B({
6545
6596
  __name: "DesignReferenceSidebar",
6546
6597
  props: {
6547
6598
  visible: { type: Boolean },
@@ -6549,7 +6600,7 @@ var cc = {
6549
6600
  },
6550
6601
  emits: ["close", "apply"],
6551
6602
  setup(e, { emit: t }) {
6552
- let n = e, r = t, { t: i } = Ki(), a = J(Ln, "DesignReferenceSidebar"), o = ds({
6603
+ let n = e, r = t, { t: i } = Ki(), a = J(Ln, "DesignReferenceSidebar"), o = ms({
6553
6604
  authManager: J(cr, "DesignReferenceSidebar"),
6554
6605
  getTemplateId: () => a.state.template?.id ?? null,
6555
6606
  onApply: (e) => r("apply", e)
@@ -6621,7 +6672,7 @@ var cc = {
6621
6672
  "leave-from-class": "tpl:translate-x-0",
6622
6673
  "leave-to-class": "tpl:translate-x-full"
6623
6674
  }, {
6624
- default: b(() => [e.visible ? (f(), k("div", vl, [I("div", yl, [I("div", bl, [V(j(pi), {
6675
+ default: b(() => [e.visible ? (f(), k("div", xl, [I("div", Sl, [I("div", Cl, [V(j(pi), {
6625
6676
  size: 13,
6626
6677
  "stroke-width": 2
6627
6678
  }), I("span", null, D(j(i).designReference.title), 1)]), I("button", {
@@ -6630,8 +6681,8 @@ var cc = {
6630
6681
  }, [V(j(ji), {
6631
6682
  size: 14,
6632
6683
  "stroke-width": 2
6633
- })])]), I("div", xl, [j(o).isGenerating.value ? (f(), k("div", Sl, [I("div", Cl, [V(Bi), I("p", wl, D(j(i).designReference.generating), 1)])])) : (f(), k("div", Tl, [
6634
- I("div", El, [I("button", {
6684
+ })])]), I("div", wl, [j(o).isGenerating.value ? (f(), k("div", Tl, [I("div", El, [V(Bi), I("p", Dl, D(j(i).designReference.generating), 1)])])) : (f(), k("div", Ol, [
6685
+ I("div", kl, [I("button", {
6635
6686
  class: "tpl:flex tpl:flex-1 tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-2 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",
6636
6687
  style: L({
6637
6688
  backgroundColor: l.value === "image" ? "var(--tpl-bg)" : "transparent",
@@ -6654,16 +6705,16 @@ var cc = {
6654
6705
  size: 12,
6655
6706
  "stroke-width": 2
6656
6707
  }), z(" " + D(j(i).designReference.uploadPdf), 1)], 4)]),
6657
- I("div", null, [u.value ? (f(), k("div", Dl, [I("div", Ol, [p.value ? (f(), k("img", {
6708
+ I("div", null, [u.value ? (f(), k("div", Al, [I("div", jl, [p.value ? (f(), k("img", {
6658
6709
  key: 0,
6659
6710
  src: p.value,
6660
6711
  alt: u.value.name,
6661
6712
  class: "tpl:h-auto tpl:max-h-48 tpl:w-full tpl:object-contain"
6662
- }, null, 8, kl)) : (f(), k("div", Al, [V(j(di), {
6713
+ }, null, 8, Ml)) : (f(), k("div", Nl, [V(j(di), {
6663
6714
  size: 32,
6664
6715
  "stroke-width": 1.5,
6665
6716
  class: "tpl:text-[var(--tpl-text-dim)]"
6666
- }), I("span", jl, D(u.value.name), 1)])), I("button", {
6717
+ }), I("span", Pl, D(u.value.name), 1)])), I("button", {
6667
6718
  class: "tpl:absolute tpl:top-2 tpl:right-2 tpl:rounded-full tpl:p-1 tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow)]",
6668
6719
  onClick: x
6669
6720
  }, [V(j(ji), {
@@ -6686,8 +6737,8 @@ var cc = {
6686
6737
  "stroke-width": 1.5,
6687
6738
  class: "tpl:text-[var(--tpl-text-dim)]"
6688
6739
  }),
6689
- I("span", Ml, D(j(i).designReference.dropHint), 1),
6690
- I("span", Nl, D(l.value === "image" ? j(i).designReference.acceptedImages : j(i).designReference.acceptedPdf), 1)
6740
+ I("span", Fl, D(j(i).designReference.dropHint), 1),
6741
+ I("span", Il, D(l.value === "image" ? j(i).designReference.acceptedImages : j(i).designReference.acceptedPdf), 1)
6691
6742
  ], 36)), I("input", {
6692
6743
  ref_key: "fileInput",
6693
6744
  ref: s,
@@ -6695,14 +6746,14 @@ var cc = {
6695
6746
  class: "tpl:hidden",
6696
6747
  accept: l.value === "image" ? "image/png,image/jpeg,image/webp" : "application/pdf",
6697
6748
  onChange: v
6698
- }, null, 40, Pl)]),
6699
- I("div", Fl, [I("label", Il, D(j(i).designReference.promptLabel), 1), c(I("textarea", {
6749
+ }, null, 40, Ll)]),
6750
+ I("div", Rl, [I("label", zl, D(j(i).designReference.promptLabel), 1), c(I("textarea", {
6700
6751
  "onUpdate:modelValue": n[4] ||= (e) => d.value = e,
6701
6752
  class: F(["tpl:min-h-[72px] tpl:w-full tpl:resize-none tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:font-sans tpl:text-sm tpl:outline-none tpl:transition-colors tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]", ["tpl-design-prompt-input"]]),
6702
6753
  placeholder: j(i).designReference.promptPlaceholder,
6703
6754
  rows: "3"
6704
- }, null, 8, Ll), [[ae, d.value]])]),
6705
- m.value ? (f(), k("div", Rl, [I("p", zl, D(j(i).designReference.replaceWarning), 1), I("div", Bl, [I("button", {
6755
+ }, null, 8, Bl), [[ae, d.value]])]),
6756
+ m.value ? (f(), k("div", Vl, [I("p", Hl, D(j(i).designReference.replaceWarning), 1), I("div", Ul, [I("button", {
6706
6757
  class: "tpl:flex-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:text-[var(--tpl-text-muted)] tpl:border tpl:border-[var(--tpl-border)]",
6707
6758
  style: { "background-color": "transparent" },
6708
6759
  onClick: E
@@ -6710,7 +6761,7 @@ var cc = {
6710
6761
  class: "tpl:flex-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6711
6762
  onClick: T
6712
6763
  }, D(j(i).designReference.replaceConfirm), 1)])])) : A("", !0),
6713
- j(o).error.value ? (f(), k("div", Vl, [V(j(Gr), {
6764
+ j(o).error.value ? (f(), k("div", Wl, [V(j(Gr), {
6714
6765
  size: 14,
6715
6766
  "stroke-width": 2,
6716
6767
  class: "tpl:mt-0.5 tpl:shrink-0"
@@ -6723,32 +6774,32 @@ var cc = {
6723
6774
  }, [V(j(pi), {
6724
6775
  size: 16,
6725
6776
  "stroke-width": 2
6726
- }), z(" " + D(j(i).designReference.generate), 1)], 8, Hl)),
6727
- I("p", Ul, D(j(i).aiMenu.disclaimer), 1)
6777
+ }), z(" " + D(j(i).designReference.generate), 1)], 8, Gl)),
6778
+ I("p", Kl, D(j(i).aiMenu.disclaimer), 1)
6728
6779
  ]))])])) : A("", !0)]),
6729
6780
  _: 1
6730
6781
  }));
6731
6782
  }
6732
- }), Gl = /* @__PURE__ */ e({ default: () => Kl }), Kl = /*#__PURE__*/ Ii(Wl, [["__scopeId", "data-v-bdbf8d0d"]]), ql = ["disabled", "title"], Jl = ["title"], Yl = {
6783
+ }), Jl = /* @__PURE__ */ e({ default: () => Yl }), Yl = /*#__PURE__*/ Ii(ql, [["__scopeId", "data-v-bdbf8d0d"]]), Xl = ["disabled", "title"], Zl = ["title"], Ql = {
6733
6784
  key: 0,
6734
6785
  class: "tpl-scale-in tpl:absolute tpl:top-full tpl:left-1/2 tpl:z-50 tpl:mt-2 tpl:w-72 tpl:-translate-x-1/2 tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:bg-[var(--tpl-bg-elevated)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]",
6735
6786
  style: {
6736
6787
  "backdrop-filter": "blur(8px)",
6737
6788
  "-webkit-backdrop-filter": "blur(8px)"
6738
6789
  }
6739
- }, Xl = { class: "tpl:border-b tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)] tpl:border-[var(--tpl-border)]" }, Zl = {
6790
+ }, $l = { class: "tpl:border-b tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)] tpl:border-[var(--tpl-border)]" }, eu = {
6740
6791
  key: 0,
6741
6792
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:py-8"
6742
- }, Ql = {
6793
+ }, tu = {
6743
6794
  key: 1,
6744
6795
  class: "tpl:px-3 tpl:py-6 tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
6745
- }, $l = {
6796
+ }, nu = {
6746
6797
  key: 2,
6747
6798
  class: "tpl:max-h-64 tpl:overflow-y-auto"
6748
- }, eu = ["disabled", "onClick"], tu = { class: "tpl:flex tpl:flex-col tpl:gap-0.5" }, nu = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, ru = {
6799
+ }, ru = ["disabled", "onClick"], iu = { class: "tpl:flex tpl:flex-col tpl:gap-0.5" }, au = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, ou = {
6749
6800
  key: 0,
6750
6801
  class: "tpl:rounded tpl:px-1 tpl:py-0.5 tpl:text-[10px] tpl:font-normal tpl:bg-[var(--tpl-bg-active)] tpl:text-[var(--tpl-text-muted)]"
6751
- }, iu = ["disabled", "title"], au = /*@__PURE__*/ B({
6802
+ }, su = ["disabled", "title"], cu = /*@__PURE__*/ B({
6752
6803
  __name: "SnapshotHistory",
6753
6804
  props: {
6754
6805
  snapshots: {},
@@ -6776,7 +6827,7 @@ var cc = {
6776
6827
  t !== -1 && (c.value = t, r("navigate", n.snapshots[t])), o.value = !1;
6777
6828
  }
6778
6829
  function _(e) {
6779
- let t = sc(e, a.snapshotHistory, i, 7);
6830
+ let t = uc(e, a.snapshotHistory, i, 7);
6780
6831
  return t === null ? new Date(e).toLocaleDateString(void 0, {
6781
6832
  month: "short",
6782
6833
  day: "numeric",
@@ -6799,7 +6850,7 @@ var cc = {
6799
6850
  }, [V(j(ni), {
6800
6851
  size: 14,
6801
6852
  "stroke-width": 2
6802
- })], 8, ql),
6853
+ })], 8, Xl),
6803
6854
  I("button", {
6804
6855
  class: "tpl:flex tpl:h-7 tpl:shrink-0 tpl:cursor-pointer tpl:items-center tpl:gap-0.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:border-none tpl:bg-transparent tpl:px-1.5 tpl:transition-colors tpl:duration-150 hover:tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
6805
6856
  title: j(a).snapshotHistory.tooltip,
@@ -6811,19 +6862,19 @@ var cc = {
6811
6862
  class: F(["tpl:transition-transform tpl:duration-150", { "tpl:rotate-180": o.value }]),
6812
6863
  size: 10,
6813
6864
  "stroke-width": 2
6814
- }, null, 8, ["class"])], 8, Jl),
6865
+ }, null, 8, ["class"])], 8, Zl),
6815
6866
  V(ie, { name: "tpl-dropdown" }, {
6816
- default: b(() => [o.value ? (f(), k("div", Yl, [I("div", Xl, D(j(a).snapshotHistory.dropdownTitle), 1), e.isLoading ? (f(), k("div", Zl, [V(j(Jr), {
6867
+ default: b(() => [o.value ? (f(), k("div", Ql, [I("div", $l, D(j(a).snapshotHistory.dropdownTitle), 1), e.isLoading ? (f(), k("div", eu, [V(j(Jr), {
6817
6868
  class: "tpl:animate-spin tpl:text-[var(--tpl-primary)]",
6818
6869
  size: 20,
6819
6870
  "stroke-width": 2
6820
- })])) : e.snapshots.length === 0 ? (f(), k("div", Ql, D(j(a).snapshotHistory.noSnapshots), 1)) : (f(), k("div", $l, [(f(!0), k(R, null, h(e.snapshots, (t) => (f(), k("button", {
6871
+ })])) : e.snapshots.length === 0 ? (f(), k("div", tu, D(j(a).snapshotHistory.noSnapshots), 1)) : (f(), k("div", nu, [(f(!0), k(R, null, h(e.snapshots, (t) => (f(), k("button", {
6821
6872
  key: t.id,
6822
6873
  class: "tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-center tpl:border-b tpl:border-b-[var(--tpl-border-light)] tpl:border-l-2 tpl:border-l-transparent tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-all tpl:duration-150 last:tpl:border-b-0 hover:tpl:border-l-[var(--tpl-primary)] hover:tpl:bg-[var(--tpl-bg-hover)]",
6823
6874
  style: { "background-color": "transparent" },
6824
6875
  disabled: e.isRestoring,
6825
6876
  onClick: (e) => g(t.id)
6826
- }, [I("div", tu, [I("div", nu, [I("span", null, D(_(t.created_at)), 1), t.is_autosave ? (f(), k("span", ru, D(j(a).snapshotHistory.auto), 1)) : A("", !0)])])], 8, eu))), 128))]))])) : A("", !0)]),
6877
+ }, [I("div", iu, [I("div", au, [I("span", null, D(_(t.created_at)), 1), t.is_autosave ? (f(), k("span", ou, D(j(a).snapshotHistory.auto), 1)) : A("", !0)])])], 8, ru))), 128))]))])) : A("", !0)]),
6827
6878
  _: 1
6828
6879
  }),
6829
6880
  I("button", {
@@ -6834,66 +6885,66 @@ var cc = {
6834
6885
  }, [V(j(ri), {
6835
6886
  size: 14,
6836
6887
  "stroke-width": 2
6837
- })], 8, iu)
6888
+ })], 8, su)
6838
6889
  ], 512));
6839
6890
  }
6840
- }), ou = /* @__PURE__ */ e({ default: () => su }), su = au;
6891
+ }), lu = /* @__PURE__ */ e({ default: () => uu }), uu = cu;
6841
6892
  //#endregion
6842
6893
  //#region src/cloud/utils/scoringStyles.ts
6843
- function cu(e) {
6894
+ function du(e) {
6844
6895
  return e >= 80 ? "var(--tpl-success)" : e >= 60 ? "var(--tpl-warning)" : "var(--tpl-danger)";
6845
6896
  }
6846
- function lu(e) {
6897
+ function fu(e) {
6847
6898
  return e >= 80 ? "var(--tpl-success-light)" : e >= 60 ? "var(--tpl-warning-light)" : "var(--tpl-danger-light)";
6848
6899
  }
6849
- function uu(e) {
6900
+ function pu(e) {
6850
6901
  return e === "high" ? "var(--tpl-danger)" : e === "medium" ? "var(--tpl-warning)" : "var(--tpl-text-muted)";
6851
6902
  }
6852
- function du(e) {
6903
+ function mu(e) {
6853
6904
  return e === "high" ? "var(--tpl-danger-light)" : e === "medium" ? "var(--tpl-warning-light)" : "var(--tpl-bg-hover)";
6854
6905
  }
6855
6906
  //#endregion
6856
6907
  //#region src/cloud/components/TemplateScoringPanel.vue?vue&type=script&setup=true&lang.ts
6857
- var fu = {
6908
+ var hu = {
6858
6909
  key: 0,
6859
6910
  class: "tpl-scoring-panel tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
6860
- }, pu = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, mu = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, hu = { class: "tpl:flex tpl:items-center tpl:gap-1" }, gu = ["title"], _u = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, vu = {
6911
+ }, gu = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, _u = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, vu = { class: "tpl:flex tpl:items-center tpl:gap-1" }, yu = ["title"], bu = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, xu = {
6861
6912
  key: 0,
6862
6913
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6863
- }, yu = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, bu = {
6914
+ }, Su = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Cu = {
6864
6915
  key: 1,
6865
6916
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6866
- }, xu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Su = {
6917
+ }, wu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Tu = {
6867
6918
  key: 2,
6868
6919
  class: "tpl:flex tpl:flex-col tpl:gap-4"
6869
- }, Cu = { class: "tpl:text-xs tpl:font-medium tpl:uppercase tpl:tracking-wider tpl:text-[var(--tpl-text-muted)]" }, wu = {
6920
+ }, Eu = { class: "tpl:text-xs tpl:font-medium tpl:uppercase tpl:tracking-wider tpl:text-[var(--tpl-text-muted)]" }, Du = {
6870
6921
  key: 0,
6871
6922
  class: "tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
6872
- }, Tu = {
6923
+ }, Ou = {
6873
6924
  key: 0,
6874
6925
  class: "tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6875
- }, Eu = ["onClick"], Du = { class: "tpl:flex-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, Ou = {
6926
+ }, ku = ["onClick"], Au = { class: "tpl:flex-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, ju = {
6876
6927
  key: 0,
6877
6928
  class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]"
6878
- }, ku = {
6929
+ }, Mu = {
6879
6930
  key: 0,
6880
6931
  class: "tpl:border-t tpl:border-[var(--tpl-border)]"
6881
- }, Au = {
6932
+ }, Nu = {
6882
6933
  key: 0,
6883
6934
  class: "tpl:px-3 tpl:py-3 tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
6884
- }, ju = { class: "tpl:flex tpl:items-start tpl:gap-2" }, Mu = { class: "tpl:flex-1 tpl:min-w-0" }, Nu = { class: "tpl:flex tpl:items-start tpl:gap-1.5" }, Pu = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Fu = {
6935
+ }, Pu = { class: "tpl:flex tpl:items-start tpl:gap-2" }, Fu = { class: "tpl:flex-1 tpl:min-w-0" }, Iu = { class: "tpl:flex tpl:items-start tpl:gap-1.5" }, Lu = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Ru = {
6885
6936
  key: 0,
6886
6937
  class: "tpl:mt-1 tpl:text-[11px] tpl:leading-snug tpl:text-[var(--tpl-text-dim)]"
6887
- }, Iu = {
6938
+ }, zu = {
6888
6939
  key: 1,
6889
6940
  class: "tpl:mt-2 tpl:flex tpl:justify-center"
6890
- }, Lu = ["disabled", "onClick"], Ru = {
6941
+ }, Bu = ["disabled", "onClick"], Vu = {
6891
6942
  key: 0,
6892
6943
  class: "tpl:mt-1.5 tpl:text-[11px] tpl:text-[var(--tpl-danger)]"
6893
- }, zu = {
6944
+ }, Hu = {
6894
6945
  key: 3,
6895
6946
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6896
- }, Bu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Vu = { class: "tpl:m-0 tpl:px-4 tpl:pb-2 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Hu = /*@__PURE__*/ B({
6947
+ }, Uu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Wu = { class: "tpl:m-0 tpl:px-4 tpl:pb-2 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Gu = /*@__PURE__*/ B({
6897
6948
  __name: "TemplateScoringPanel",
6898
6949
  props: { visible: { type: Boolean } },
6899
6950
  emits: ["close"],
@@ -6944,10 +6995,10 @@ var fu = {
6944
6995
  "leave-from-class": "tpl:translate-x-0",
6945
6996
  "leave-to-class": "tpl:translate-x-full"
6946
6997
  }, {
6947
- default: b(() => [e.visible ? (f(), k("div", fu, [I("div", pu, [I("div", mu, [V(j(Ti), {
6998
+ default: b(() => [e.visible ? (f(), k("div", hu, [I("div", gu, [I("div", _u, [V(j(Ti), {
6948
6999
  size: 13,
6949
7000
  "stroke-width": 2
6950
- }), I("span", null, D(j(i).scoring.title), 1)]), I("div", hu, [j(o).scoringResult.value && !j(o).isScoring.value ? (f(), k("button", {
7001
+ }), I("span", null, D(j(i).scoring.title), 1)]), I("div", vu, [j(o).scoringResult.value && !j(o).isScoring.value ? (f(), k("button", {
6951
7002
  key: 0,
6952
7003
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6953
7004
  title: j(i).scoring.rescore,
@@ -6955,19 +7006,19 @@ var fu = {
6955
7006
  }, [V(j(xi), {
6956
7007
  size: 14,
6957
7008
  "stroke-width": 2
6958
- })], 8, gu)) : A("", !0), I("button", {
7009
+ })], 8, yu)) : A("", !0), I("button", {
6959
7010
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6960
7011
  onClick: n[1] ||= (e) => r("close")
6961
7012
  }, [V(j(ji), {
6962
7013
  size: 14,
6963
7014
  "stroke-width": 2
6964
- })])])]), I("div", _u, [j(o).isScoring.value ? (f(), k("div", vu, [I("p", yu, D(j(i).scoring.scoring), 1), V(Bi, { class: "tpl:w-3/4" })])) : j(o).error.value && !j(o).scoringResult.value ? (f(), k("div", bu, [
7015
+ })])])]), I("div", bu, [j(o).isScoring.value ? (f(), k("div", xu, [I("p", Su, D(j(i).scoring.scoring), 1), V(Bi, { class: "tpl:w-3/4" })])) : j(o).error.value && !j(o).scoringResult.value ? (f(), k("div", Cu, [
6965
7016
  V(j(Gr), {
6966
7017
  size: 32,
6967
7018
  "stroke-width": 1.5,
6968
7019
  class: "tpl:text-[var(--tpl-danger)]"
6969
7020
  }),
6970
- I("p", xu, D(j(i).scoring.error), 1),
7021
+ I("p", wu, D(j(i).scoring.error), 1),
6971
7022
  I("button", {
6972
7023
  class: "tpl:mt-2 tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-muted)]",
6973
7024
  onClick: n[2] ||= (e) => m()
@@ -6975,19 +7026,19 @@ var fu = {
6975
7026
  size: 12,
6976
7027
  "stroke-width": 2
6977
7028
  }), z(" " + D(j(i).scoring.rescore), 1)])
6978
- ])) : j(o).scoringResult.value ? (f(), k("div", Su, [
7029
+ ])) : j(o).scoringResult.value ? (f(), k("div", Tu, [
6979
7030
  I("div", {
6980
7031
  class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:p-5",
6981
- style: L({ backgroundColor: j(lu)(j(o).scoringResult.value.score) })
7032
+ style: L({ backgroundColor: j(fu)(j(o).scoringResult.value.score) })
6982
7033
  }, [
6983
7034
  I("span", {
6984
7035
  class: "tpl:text-4xl tpl:font-bold tpl:tabular-nums",
6985
- style: L({ color: j(cu)(j(o).scoringResult.value.score) })
7036
+ style: L({ color: j(du)(j(o).scoringResult.value.score) })
6986
7037
  }, D(j(o).scoringResult.value.score), 5),
6987
- I("span", Cu, D(j(i).scoring.overallScore), 1),
6988
- _() > 0 ? (f(), k("span", wu, D(_()) + " " + D(j(i).scoring.findings), 1)) : A("", !0)
7038
+ I("span", Eu, D(j(i).scoring.overallScore), 1),
7039
+ _() > 0 ? (f(), k("span", Du, D(_()) + " " + D(j(i).scoring.findings), 1)) : A("", !0)
6989
7040
  ], 4),
6990
- j(o).fixError.value ? (f(), k("div", Tu, [V(j(Gr), {
7041
+ j(o).fixError.value ? (f(), k("div", Ou, [V(j(Gr), {
6991
7042
  size: 14,
6992
7043
  "stroke-width": 2,
6993
7044
  class: "tpl:mt-0.5 tpl:shrink-0"
@@ -7002,40 +7053,40 @@ var fu = {
7002
7053
  (f(), N(d(p[e]), {
7003
7054
  size: 14,
7004
7055
  "stroke-width": 2,
7005
- style: L({ color: j(cu)(j(o).scoringResult.value.categories[e].score) })
7056
+ style: L({ color: j(du)(j(o).scoringResult.value.categories[e].score) })
7006
7057
  }, null, 8, ["style"])),
7007
- I("span", Du, D(j(i).scoring.categories[e]), 1),
7058
+ I("span", Au, D(j(i).scoring.categories[e]), 1),
7008
7059
  I("span", {
7009
7060
  class: "tpl:rounded-full tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-semibold tpl:tabular-nums",
7010
7061
  style: L({
7011
- color: j(cu)(j(o).scoringResult.value.categories[e].score),
7012
- backgroundColor: j(lu)(j(o).scoringResult.value.categories[e].score)
7062
+ color: j(du)(j(o).scoringResult.value.categories[e].score),
7063
+ backgroundColor: j(fu)(j(o).scoringResult.value.categories[e].score)
7013
7064
  })
7014
7065
  }, D(j(o).scoringResult.value.categories[e].score), 5),
7015
- j(o).scoringResult.value.categories[e].findings.length > 0 ? (f(), k("span", Ou, D(j(o).scoringResult.value.categories[e].findings.length), 1)) : A("", !0),
7066
+ j(o).scoringResult.value.categories[e].findings.length > 0 ? (f(), k("span", ju, D(j(o).scoringResult.value.categories[e].findings.length), 1)) : A("", !0),
7016
7067
  V(j(ti), {
7017
7068
  size: 12,
7018
7069
  "stroke-width": 2,
7019
7070
  class: F(["tpl:transition-transform tpl:duration-200 tpl:text-[var(--tpl-text-dim)]", c.value[e] ? "tpl:rotate-0" : "tpl:-rotate-90"])
7020
7071
  }, null, 8, ["class"])
7021
- ], 8, Eu), c.value[e] ? (f(), k("div", ku, [j(o).scoringResult.value.categories[e].findings.length === 0 ? (f(), k("div", Au, D(j(i).scoring.noFindings), 1)) : A("", !0), (f(!0), k(R, null, h(j(o).scoringResult.value.categories[e].findings, (e) => (f(), k("div", {
7072
+ ], 8, ku), c.value[e] ? (f(), k("div", Mu, [j(o).scoringResult.value.categories[e].findings.length === 0 ? (f(), k("div", Nu, D(j(i).scoring.noFindings), 1)) : A("", !0), (f(!0), k(R, null, h(j(o).scoringResult.value.categories[e].findings, (e) => (f(), k("div", {
7022
7073
  key: e.id,
7023
7074
  class: "tpl:border-t tpl:px-3 tpl:py-2.5 first:tpl:border-t-0 tpl:border-[var(--tpl-border-light)]"
7024
- }, [I("div", ju, [(f(), N(d(j(e.severity === "high" ? Gr : e.severity === "medium" ? Zr : hi)), {
7075
+ }, [I("div", Pu, [(f(), N(d(j(e.severity === "high" ? Gr : e.severity === "medium" ? Zr : hi)), {
7025
7076
  size: 13,
7026
7077
  "stroke-width": 2,
7027
7078
  class: "tpl:mt-0.5 tpl:shrink-0",
7028
- style: L({ color: j(uu)(e.severity) })
7029
- }, null, 8, ["style"])), I("div", Mu, [
7030
- I("div", Nu, [I("span", {
7079
+ style: L({ color: j(pu)(e.severity) })
7080
+ }, null, 8, ["style"])), I("div", Fu, [
7081
+ I("div", Iu, [I("span", {
7031
7082
  class: "tpl:mt-0.5 tpl:shrink-0 tpl:rounded tpl:px-1 tpl:py-px tpl:text-[10px] tpl:font-medium tpl:leading-tight",
7032
7083
  style: L({
7033
- color: j(uu)(e.severity),
7034
- backgroundColor: j(du)(e.severity)
7084
+ color: j(pu)(e.severity),
7085
+ backgroundColor: j(mu)(e.severity)
7035
7086
  })
7036
- }, D(j(i).scoring.severity[e.severity]), 5), I("span", Pu, D(e.message), 1)]),
7037
- e.suggestion ? (f(), k("p", Fu, D(e.suggestion), 1)) : A("", !0),
7038
- e.blockId ? (f(), k("div", Iu, [I("button", {
7087
+ }, D(j(i).scoring.severity[e.severity]), 5), I("span", Lu, D(e.message), 1)]),
7088
+ e.suggestion ? (f(), k("p", Ru, D(e.suggestion), 1)) : A("", !0),
7089
+ e.blockId ? (f(), k("div", zu, [I("button", {
7039
7090
  class: "tpl-scoring-fix-btn tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded tpl:border tpl:px-3 tpl:py-1.5 tpl:text-[11px] tpl:font-medium tpl:transition-all tpl:duration-150 tpl:disabled:opacity-50 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-primary)]",
7040
7091
  style: { "background-color": "transparent" },
7041
7092
  disabled: j(o).fixingFindingId.value !== null,
@@ -7049,27 +7100,27 @@ var fu = {
7049
7100
  key: 1,
7050
7101
  size: 11,
7051
7102
  "stroke-width": 2
7052
- })), z(" " + D(j(o).fixingFindingId.value === e.id ? j(i).scoring.fixing : j(i).scoring.fix), 1)], 8, Lu), j(o).fixError.value ? (f(), k("p", Ru, D(j(o).fixError.value), 1)) : A("", !0)])) : A("", !0)
7103
+ })), z(" " + D(j(o).fixingFindingId.value === e.id ? j(i).scoring.fixing : j(i).scoring.fix), 1)], 8, Bu), j(o).fixError.value ? (f(), k("p", Vu, D(j(o).fixError.value), 1)) : A("", !0)])) : A("", !0)
7053
7104
  ])])]))), 128))])) : A("", !0)])), 64))
7054
- ])) : (f(), k("div", zu, [V(j(Ti), {
7105
+ ])) : (f(), k("div", Hu, [V(j(Ti), {
7055
7106
  size: 32,
7056
7107
  "stroke-width": 1.5,
7057
7108
  class: "tpl:text-[var(--tpl-text-dim)]"
7058
- }), I("p", Bu, D(j(i).scoring.emptyState), 1)])), I("p", Vu, D(j(i).aiMenu.disclaimer), 1)])])) : A("", !0)]),
7109
+ }), I("p", Uu, D(j(i).scoring.emptyState), 1)])), I("p", Wu, D(j(i).aiMenu.disclaimer), 1)])])) : A("", !0)]),
7059
7110
  _: 1
7060
7111
  }));
7061
7112
  }
7062
- }), Uu = /* @__PURE__ */ e({ default: () => Wu }), Wu = /*#__PURE__*/ Ii(Hu, [["__scopeId", "data-v-3a059e8d"]]), Gu = ["aria-busy"], Ku = {
7113
+ }), Ku = /* @__PURE__ */ e({ default: () => qu }), qu = /*#__PURE__*/ Ii(Gu, [["__scopeId", "data-v-c23c73d4"]]), Ju = ["aria-busy"], Yu = {
7063
7114
  id: "tpl-test-email-title",
7064
7115
  class: "tpl:mb-4 tpl:text-sm tpl:font-semibold tpl:text-[var(--tpl-text)]"
7065
- }, qu = { class: "tpl:mb-3" }, Ju = { class: "tpl:mb-1.5 tpl:block tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Yu = ["value"], Xu = ["disabled"], Zu = ["value"], Qu = {
7116
+ }, Xu = { class: "tpl:mb-3" }, Zu = { class: "tpl:mb-1.5 tpl:block tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Qu = ["value"], $u = ["disabled"], ed = ["value"], td = {
7066
7117
  key: 0,
7067
7118
  role: "alert",
7068
7119
  class: "tpl:mb-3 tpl:text-xs tpl:text-[var(--tpl-danger)]"
7069
- }, $u = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, ed = ["disabled"], td = ["disabled"], nd = {
7120
+ }, nd = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, rd = ["disabled"], id = ["disabled"], ad = {
7070
7121
  key: 0,
7071
7122
  class: "tpl:flex tpl:items-center tpl:gap-1.5"
7072
- }, rd = { key: 1 }, id = /*@__PURE__*/ B({
7123
+ }, od = { key: 1 }, sd = /*@__PURE__*/ B({
7073
7124
  __name: "TestEmailModal",
7074
7125
  props: {
7075
7126
  visible: { type: Boolean },
@@ -7092,7 +7143,7 @@ var fu = {
7092
7143
  function l(e) {
7093
7144
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), o()), e.key === "Escape" && s();
7094
7145
  }
7095
- return (t, n) => (f(), N(Ko, {
7146
+ return (t, n) => (f(), N(Yo, {
7096
7147
  visible: e.visible,
7097
7148
  onClose: s,
7098
7149
  onKeydown: l
@@ -7108,14 +7159,14 @@ var fu = {
7108
7159
  "box-shadow": "var(--tpl-shadow-xl)"
7109
7160
  }
7110
7161
  }, [
7111
- I("h3", Ku, D(j(i).testEmail.title), 1),
7112
- I("div", qu, [I("label", Ju, D(j(i).testEmail.recipientLabel), 1), e.allowedEmails.length === 1 ? (f(), k("input", {
7162
+ I("h3", Yu, D(j(i).testEmail.title), 1),
7163
+ I("div", Xu, [I("label", Zu, D(j(i).testEmail.recipientLabel), 1), e.allowedEmails.length === 1 ? (f(), k("input", {
7113
7164
  key: 0,
7114
7165
  type: "text",
7115
7166
  value: a.value,
7116
7167
  disabled: "",
7117
7168
  class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:opacity-70 tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]"
7118
- }, null, 8, Yu)) : c((f(), k("select", {
7169
+ }, null, 8, Qu)) : c((f(), k("select", {
7119
7170
  key: 1,
7120
7171
  "onUpdate:modelValue": n[0] ||= (e) => a.value = e,
7121
7172
  class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
@@ -7123,29 +7174,29 @@ var fu = {
7123
7174
  }, [(f(!0), k(R, null, h(e.allowedEmails, (e) => (f(), k("option", {
7124
7175
  key: e,
7125
7176
  value: e
7126
- }, D(e), 9, Zu))), 128))], 8, Xu)), [[w, a.value]])]),
7127
- e.error ? (f(), k("p", Qu, D(e.error), 1)) : A("", !0),
7128
- I("div", $u, [I("button", {
7177
+ }, D(e), 9, ed))), 128))], 8, $u)), [[w, a.value]])]),
7178
+ e.error ? (f(), k("p", td, D(e.error), 1)) : A("", !0),
7179
+ I("div", nd, [I("button", {
7129
7180
  type: "button",
7130
7181
  class: F(["tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]", { "tpl:cursor-not-allowed tpl:opacity-50": e.isSending }]),
7131
7182
  disabled: e.isSending,
7132
7183
  onClick: s
7133
- }, D(j(i).testEmail.cancel), 11, ed), I("button", {
7184
+ }, D(j(i).testEmail.cancel), 11, rd), I("button", {
7134
7185
  type: "button",
7135
7186
  class: "tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
7136
7187
  disabled: !a.value || e.isSending,
7137
7188
  onClick: o
7138
- }, [e.isSending ? (f(), k("span", nd, [V(j(Jr), {
7189
+ }, [e.isSending ? (f(), k("span", ad, [V(j(Jr), {
7139
7190
  class: "tpl:animate-spin",
7140
7191
  size: 12,
7141
7192
  "stroke-width": 2
7142
- }), z(" " + D(j(i).testEmail.sending), 1)])) : (f(), k("span", rd, D(j(i).testEmail.send), 1))], 8, td)])
7143
- ], 8, Gu)]),
7193
+ }), z(" " + D(j(i).testEmail.sending), 1)])) : (f(), k("span", od, D(j(i).testEmail.send), 1))], 8, id)])
7194
+ ], 8, Ju)]),
7144
7195
  _: 1
7145
7196
  }, 8, ["visible"]));
7146
7197
  }
7147
- }), ad = /* @__PURE__ */ e({ default: () => od }), od = id;
7198
+ }), cd = /* @__PURE__ */ e({ default: () => ld }), ld = sd;
7148
7199
  //#endregion
7149
- export { qi as $, qn as $t, Uo as A, De as An, Gr as At, Ga as B, ge as Bn, Gn as Bt, es as C, ut as Cn, ai as Ct, Jo as D, W as Dn, Zr as Dt, qo as E, st as En, ei as Et, ho as F, _e as Fn, Y as Ft, ya as G, ue as Gn, Kn as Gt, Fa as H, pe as Hn, pr as Ht, fo as I, he as In, lr as It, ra as J, Ln as Jt, ma as K, Jn as Kt, so as L, Se as Ln, nr as Lt, jo as M, we as Mn, Fr as Mt, To as N, ve as Nn, wr as Nt, Ko as O, We as On, Xr as Ot, So as P, Te as Pn, _r as Pt, Ji as Q, er as Qt, ao as R, Ce as Rn, cr as Rt, ts as S, bt as Sn, oi as St, Z as T, ct as Tn, ti as Tt, ja as U, de as Un, ur as Ut, Wa as V, xe as Vn, rr as Vt, ba as W, fe as Wn, Bn as Wt, $i as X, $n as Xt, ta as Y, Vn as Yt, Yi as Z, Xn as Zt, ps as _, Et as _n, mi as _t, gl as a, J as an, ji as at, ls as b, xt as bn, ci as bt, As as c, Tn as cn, Ei as ct, Cs as d, On as dn, Ci as dt, dr as en, Gi as et, Ss as f, rn as fn, xi as ft, vs as g, Ft as gn, hi as gt, ys as h, cn as hn, gi as ht, Gl as i, Un as in, Fi as it, Vo as j, be as jn, X as jt, Wo as k, ye as kn, Jr as kt, Ts as l, q as ln, Ti as lt, bs as m, sn as mn, _i as mt, Uu as n, ar as nn, Ui as nt, nc as o, gn as on, ki as ot, xs as p, nn as pn, vi as pt, fa as q, tr as qt, ou as r, Hn as rn, Ii as rt, js as s, wn as sn, Di as st, ad as t, fr as tn, Ki as tt, ws as u, jn as un, wi as ut, fs as v, dt as vn, pi as vt, $ as w, lt as wn, ri as wt, as as x, _t as xn, si as xt, us as y, yt as yn, li as yt, Ka as z, Ee as zn, Wn as zt };
7200
+ export { Ji as $, er as $t, Ko as A, ye as An, Jr as At, Ja as B, Ee as Bn, Wn as Bt, rs as C, bt as Cn, oi as Ct, Zo as D, st as Dn, ei as Dt, Xo as E, ct as En, ti as Et, vo as F, Te as Fn, _r as Ft, ba as G, fe as Gn, Bn as Gt, Ra as H, xe as Hn, rr as Ht, ho as I, _e as In, Y as It, fa as J, tr as Jt, ya as K, ue as Kn, Kn as Kt, uo as L, he as Ln, lr as Lt, Po as M, be as Mn, X as Mt, Oo as N, we as Nn, Fr as Nt, Yo as O, W as On, Zr as Ot, To as P, ve as Pn, wr as Pt, Yi as Q, Xn as Qt, co as R, Se as Rn, nr as Rt, is as S, _t as Sn, si as St, Z as T, lt as Tn, ri as Tt, Pa as U, pe as Un, pr as Ut, qa as V, ge as Vn, Gn as Vt, Sa as W, de as Wn, ur as Wt, ta as X, Vn as Xt, ra as Y, Ln as Yt, $i as Z, $n as Zt, gs as _, Ft as _n, hi as _t, yl as a, Un as an, Fi as at, fs as b, yt as bn, li as bt, Ns as c, wn as cn, Di as ct, Es as d, jn as dn, wi as dt, qn as en, qi as et, Ts as f, On as fn, Ci as ft, xs as g, cn as gn, gi as gt, Ss as h, sn as hn, _i as ht, Jl as i, Hn as in, Ii as it, Wo as j, De as jn, Gr as jt, qo as k, We as kn, Xr as kt, Os as l, Tn as ln, Ei as lt, Cs as m, nn as mn, vi as mt, Ku as n, fr as nn, Ki as nt, ac as o, J as on, ji as ot, ws as p, rn as pn, xi as pt, ma as q, Jn as qt, lu as r, ar as rn, Ui as rt, Ps as s, gn as sn, ki as st, cd as t, dr as tn, Gi as tt, Ds as u, q as un, Ti as ut, hs as v, Et as vn, mi as vt, $ as w, ut as wn, ai as wt, cs as x, xt as xn, ci as xt, ps as y, dt as yn, pi as yt, Ya as z, Ce as zn, cr as zt };
7150
7201
 
7151
- //# sourceMappingURL=features-DxWz_Enw.js.map
7202
+ //# sourceMappingURL=features-DU6lA8l1.js.map