@templatical/editor 0.0.4 → 0.0.5

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 (108) hide show
  1. package/dist/{AiChatSidebar-CjfhTZwo.js → AiChatSidebar-DwME3f-a.js} +84 -70
  2. package/dist/{AiFeatureMenu-K44aZa_P.js → AiFeatureMenu-DJvWL1GZ.js} +23 -23
  3. package/dist/CloudEditor-Fe0ssRgi.js +1082 -0
  4. package/dist/{CollaboratorBar-BuCEcdbB.js → CollaboratorBar-DTT0EkZn.js} +1 -1
  5. package/dist/{CommentsSidebar-2lcqMfIP.js → CommentsSidebar-DrJhQRXK.js} +131 -131
  6. package/dist/{DesignReferenceSidebar-CNMu4Zrx.js → DesignReferenceSidebar-DdOht5zn.js} +49 -49
  7. package/dist/{ModuleBrowserModal-CvQ0xyQf.js → ModuleBrowserModal-CiV_jOEM.js} +58 -58
  8. package/dist/{ModulePreviewCanvas-Be2B3Y07.js → ModulePreviewCanvas-Bmy6Y1WE.js} +1 -1
  9. package/dist/ParagraphEditor-CoQ3NlS7.js +688 -0
  10. package/dist/{SaveModuleDialog-BaaeH5Xm.js → SaveModuleDialog-CD2ZYq1o.js} +25 -25
  11. package/dist/{SnapshotHistory-BPfjiuu1.js → SnapshotHistory-DltsKvhP.js} +1 -1
  12. package/dist/TemplateScoringPanel-DmnmUE3y.js +254 -0
  13. package/dist/{TestEmailModal-DIAlB3e_.js → TestEmailModal-Dl633j9o.js} +2 -2
  14. package/dist/{TitleEditor-D9DPjQkX.js → TitleEditor-C7fds2Nc.js} +3 -3
  15. package/dist/{TplModal-CmTSvCY-.js → TplModal-C5_CF-qn.js} +1 -1
  16. package/dist/{blockTypeIcons-D1RTWOkx.js → blockTypeIcons-BrKZB10B.js} +1 -1
  17. package/dist/cdn/chunks/AiChatSidebar-X_Bv3Qys.js +2 -0
  18. package/dist/cdn/chunks/{AiFeatureMenu-lxVm1RjH.js → AiFeatureMenu-C5UQmEgV.js} +16 -16
  19. package/dist/cdn/chunks/AiFeatureMenu-C5UQmEgV.js.map +1 -0
  20. package/dist/cdn/chunks/CloudEditor-DeTolKnf.js +1056 -0
  21. package/dist/cdn/chunks/CloudEditor-DeTolKnf.js.map +1 -0
  22. package/dist/cdn/chunks/{CollaboratorBar-D2PKtlOw.js → CollaboratorBar-DO1nxSrr.js} +3 -3
  23. package/dist/cdn/chunks/{CollaboratorBar-D2PKtlOw.js.map → CollaboratorBar-DO1nxSrr.js.map} +1 -1
  24. package/dist/cdn/chunks/CommentsSidebar-4MTw_hue.js +2 -0
  25. package/dist/cdn/chunks/DesignReferenceSidebar-Bswh4Yx4.js +2 -0
  26. package/dist/cdn/chunks/{ModuleBrowserModal-CxDXzkKS.js → ModuleBrowserModal-ChBr3aXj.js} +52 -52
  27. package/dist/cdn/chunks/ModuleBrowserModal-ChBr3aXj.js.map +1 -0
  28. package/dist/cdn/chunks/{ModulePreviewCanvas-DEfHampA.js → ModulePreviewCanvas-DkSvri9H.js} +2 -2
  29. package/dist/cdn/chunks/{ModulePreviewCanvas-DEfHampA.js.map → ModulePreviewCanvas-DkSvri9H.js.map} +1 -1
  30. package/dist/cdn/chunks/ParagraphEditor-DU3oUKA7.js +539 -0
  31. package/dist/cdn/chunks/ParagraphEditor-DU3oUKA7.js.map +1 -0
  32. package/dist/cdn/chunks/{RichTextEditorContent-DWUzizsC.js → RichTextEditorContent-BrsW1p9s.js} +4 -4
  33. package/dist/cdn/chunks/{RichTextEditorContent-DWUzizsC.js.map → RichTextEditorContent-BrsW1p9s.js.map} +1 -1
  34. package/dist/cdn/chunks/{SaveModuleDialog-DVna2xUl.js → SaveModuleDialog-CjqKkTEc.js} +24 -24
  35. package/dist/cdn/chunks/SaveModuleDialog-CjqKkTEc.js.map +1 -0
  36. package/dist/cdn/chunks/SnapshotHistory-KME4xmn_.js +2 -0
  37. package/dist/cdn/chunks/TemplateScoringPanel-DgB3xDN6.js +2 -0
  38. package/dist/cdn/chunks/TestEmailModal-DdpvRbYf.js +2 -0
  39. package/dist/cdn/chunks/{TitleEditor-DDf_OcHS.js → TitleEditor-C8FYbadT.js} +9 -9
  40. package/dist/cdn/chunks/{TitleEditor-DDf_OcHS.js.map → TitleEditor-C8FYbadT.js.map} +1 -1
  41. package/dist/cdn/chunks/{blockTypeIcons-BnobReQm.js → blockTypeIcons-5QwYklNq.js} +3 -3
  42. package/dist/cdn/chunks/{blockTypeIcons-BnobReQm.js.map → blockTypeIcons-5QwYklNq.js.map} +1 -1
  43. package/dist/cdn/chunks/{dist-CJcMnY7o.js → dist-BF5c3Dr-.js} +1 -1
  44. package/dist/cdn/chunks/dist-BGzvIxcJ.js +2 -0
  45. package/dist/cdn/chunks/dist-CFemF8rI.js +2 -0
  46. package/dist/cdn/chunks/dist-Co6uFhFK.js +2 -0
  47. package/dist/cdn/chunks/{dist-BkETaOfw.js → dist-DCikBY9K.js} +1 -1
  48. package/dist/cdn/chunks/dist-DUILafAC.js +2 -0
  49. package/dist/cdn/chunks/dist-DghiKH0A.js +2 -0
  50. package/dist/cdn/chunks/dist-Dw8ckvfK.js +2 -0
  51. package/dist/cdn/chunks/dist-H07p0KAw.js +2 -0
  52. package/dist/cdn/chunks/{dist-B878xb_62.js → dist-KYv9v_1z2.js} +11 -11
  53. package/dist/cdn/chunks/{dist-B878xb_62.js.map → dist-KYv9v_1z2.js.map} +1 -1
  54. package/dist/cdn/chunks/{dist-DLWHlekl.js → dist-MjnKIc0W.js} +1 -1
  55. package/dist/cdn/chunks/{dist-CllLxIMQ.js → dist-odp0vGRv.js} +1 -1
  56. package/dist/cdn/chunks/{extensions-B_kcV0tK.js → extensions-Bj7USRLr.js} +20 -20
  57. package/dist/cdn/chunks/{extensions-B_kcV0tK.js.map → extensions-Bj7USRLr.js.map} +1 -1
  58. package/dist/cdn/chunks/{features-ofOGnSC0.js → features-Ds0XUfte.js} +1235 -1198
  59. package/dist/cdn/chunks/features-Ds0XUfte.js.map +1 -0
  60. package/dist/cdn/chunks/{icons-bIb7PBOE.js → icons-fWsuSvgd.js} +2 -2
  61. package/dist/cdn/chunks/{icons-bIb7PBOE.js.map → icons-fWsuSvgd.js.map} +1 -1
  62. package/dist/cdn/chunks/{media-library-BIYzV2Y2.js → media-library-BGQm_OyC.js} +528 -528
  63. package/dist/cdn/chunks/{media-library-BIYzV2Y2.js.map → media-library-BGQm_OyC.js.map} +1 -1
  64. package/dist/cdn/chunks/{src-BuW9oYtm.js → src-3i8rPuqd.js} +4 -4
  65. package/dist/cdn/chunks/{src-BuW9oYtm.js.map → src-3i8rPuqd.js.map} +1 -1
  66. package/dist/cdn/chunks/{styleConstants-1KwsBMxJ.js → styleConstants-DFe3I4Op.js} +6 -6
  67. package/dist/cdn/chunks/{styleConstants-1KwsBMxJ.js.map → styleConstants-DFe3I4Op.js.map} +1 -1
  68. package/dist/cdn/chunks/{styles-DQFExz-T.js → styles-Dgijy53u.js} +1224 -1096
  69. package/dist/cdn/chunks/styles-Dgijy53u.js.map +1 -0
  70. package/dist/cdn/chunks/{tiptap-DplY-S-k.js → tiptap-BhxaWR8R.js} +2 -2
  71. package/dist/cdn/chunks/{tiptap-DplY-S-k.js.map → tiptap-BhxaWR8R.js.map} +1 -1
  72. package/dist/cdn/editor.css +1 -1
  73. package/dist/cdn/editor.js +110 -139
  74. package/dist/cdn/editor.js.map +1 -1
  75. package/dist/{dist-BkIys9zn.js → dist-Ci5lFuUy.js} +1 -1
  76. package/dist/{extensions-DEjfEFhD.js → extensions-DWx_jj8v.js} +1 -1
  77. package/dist/{styleConstants-D4SOZGBV.js → styleConstants-Cxw88naD.js} +5 -5
  78. package/dist/{styles-CgLaxDfu.js → styles-fdXNRqI3.js} +1341 -1213
  79. package/dist/templatical-editor.css +1 -1
  80. package/dist/templatical-editor.js +99 -129
  81. package/dist/templatical-editor.umd.cjs +55 -64
  82. package/dist/{useEditorCore-CjwRMl7K.js → useEditorCore-DUGD6pq_.js} +1054 -1033
  83. package/package.json +4 -2
  84. package/dist/CloudEditor-DFyuRxUV.js +0 -926
  85. package/dist/ParagraphEditor-CcMPnbDr.js +0 -652
  86. package/dist/TemplateScoringPanel-D58A23Vq.js +0 -249
  87. package/dist/cdn/chunks/AiChatSidebar-CmPTbTFG.js +0 -2
  88. package/dist/cdn/chunks/AiFeatureMenu-lxVm1RjH.js.map +0 -1
  89. package/dist/cdn/chunks/CloudEditor-Bmp5IlWi.js +0 -900
  90. package/dist/cdn/chunks/CloudEditor-Bmp5IlWi.js.map +0 -1
  91. package/dist/cdn/chunks/CommentsSidebar-BOelj4Ca.js +0 -2
  92. package/dist/cdn/chunks/DesignReferenceSidebar-Bf6rg0A7.js +0 -2
  93. package/dist/cdn/chunks/ModuleBrowserModal-CxDXzkKS.js.map +0 -1
  94. package/dist/cdn/chunks/ParagraphEditor-DHdu6lb3.js +0 -503
  95. package/dist/cdn/chunks/ParagraphEditor-DHdu6lb3.js.map +0 -1
  96. package/dist/cdn/chunks/SaveModuleDialog-DVna2xUl.js.map +0 -1
  97. package/dist/cdn/chunks/SnapshotHistory-BFF2SsTN.js +0 -2
  98. package/dist/cdn/chunks/TemplateScoringPanel-gi8wc_m7.js +0 -2
  99. package/dist/cdn/chunks/TestEmailModal-Qtd6aC-6.js +0 -2
  100. package/dist/cdn/chunks/dist-B6AUkMyh.js +0 -2
  101. package/dist/cdn/chunks/dist-Bf1Op9A1.js +0 -2
  102. package/dist/cdn/chunks/dist-CWsl6S1K.js +0 -2
  103. package/dist/cdn/chunks/dist-Cs0wFwdw.js +0 -2
  104. package/dist/cdn/chunks/dist-DS3_HVpX.js +0 -2
  105. package/dist/cdn/chunks/dist-DTXopj1a.js +0 -2
  106. package/dist/cdn/chunks/dist-DnwLoNLm.js +0 -2
  107. package/dist/cdn/chunks/features-ofOGnSC0.js.map +0 -1
  108. package/dist/cdn/chunks/styles-DQFExz-T.js.map +0 -1
@@ -1,40 +1,51 @@
1
1
  import { o as e, s as t } from "./dist-CG-vEqSU.js";
2
- import { C as n, f as ee, g as te, r as ne } from "./keys-C0MQRs8d.js";
3
- import { n as r, t as i } from "./_plugin-vue_export-helper-B1-bu7yR.js";
2
+ import { C as n, T as r, f as ee, g as te, r as ne } from "./keys-C0MQRs8d.js";
3
+ import { n as i, t as a } from "./_plugin-vue_export-helper-B1-bu7yR.js";
4
4
  import { t as re } from "./circle-alert-E2vYPs5r.js";
5
5
  import { t as ie } from "./loader-circle-BTQQxC3l.js";
6
6
  import { t as ae } from "./send-C0ltAQrv.js";
7
- import { t as a } from "./sparkles-KhBCGlqB.js";
7
+ import { t as o } from "./sparkles-KhBCGlqB.js";
8
8
  import { t as oe } from "./trash-2-OwjZ-guZ.js";
9
- import { t as se } from "./x-CGlq2XQe.js";
10
- import { t as ce } from "./LoadingTrack-vK8W2PJf.js";
11
- import { Fragment as o, Transition as le, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, inject as m, nextTick as h, normalizeClass as ue, openBlock as g, ref as _, renderList as v, toDisplayString as y, unref as b, vModelText as de, watch as x, withCtx as fe, withDirectives as pe } from "vue";
12
- import { useAiChat as S } from "@templatical/core/cloud";
13
- var C = r("redo-2", [["path", {
9
+ import { t as s } from "./x-CGlq2XQe.js";
10
+ import { t as se } from "./LoadingTrack-vK8W2PJf.js";
11
+ import { Fragment as c, Transition as ce, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, inject as le, nextTick as ue, normalizeClass as de, onBeforeUnmount as g, openBlock as _, ref as v, renderList as y, toDisplayString as b, unref as x, vModelText as fe, watch as S, withCtx as pe, withDirectives as C } from "vue";
12
+ import { useAiChat as w } from "@templatical/core/cloud";
13
+ var T = i("redo-2", [["path", {
14
14
  d: "m15 14 5-5-5-5",
15
15
  key: "12vg1m"
16
16
  }], ["path", {
17
17
  d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",
18
18
  key: "6uklza"
19
- }]]), w = r("undo-2", [["path", {
19
+ }]]), E = i("undo-2", [["path", {
20
20
  d: "M9 14 4 9l5-5",
21
21
  key: "102s5s"
22
22
  }], ["path", {
23
23
  d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",
24
24
  key: "f3b9sd"
25
- }]]), T = {
25
+ }]]);
26
+ //#endregion
27
+ //#region src/composables/useAliveFlag.ts
28
+ function D() {
29
+ let e = { alive: !0 };
30
+ return g(() => {
31
+ e.alive = !1;
32
+ }), e;
33
+ }
34
+ //#endregion
35
+ //#region src/cloud/components/AiChatSidebar.vue?vue&type=script&setup=true&lang.ts
36
+ var O = {
26
37
  key: 0,
27
38
  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)]"
28
- }, E = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, D = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, O = { class: "tpl:flex tpl:items-center tpl:gap-1" }, k = ["title"], A = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, j = {
39
+ }, k = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, A = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, j = { class: "tpl:flex tpl:items-center tpl:gap-1" }, M = ["title"], N = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, P = {
29
40
  key: 0,
30
41
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
31
- }, M = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, N = {
42
+ }, F = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, I = {
32
43
  key: 1,
33
44
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
34
- }, P = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, F = {
45
+ }, L = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, R = {
35
46
  key: 2,
36
47
  class: "tpl:flex tpl:flex-col tpl:gap-4"
37
- }, I = {
48
+ }, z = {
38
49
  key: 0,
39
50
  class: "tpl:self-end tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm",
40
51
  style: {
@@ -43,10 +54,10 @@ var C = r("redo-2", [["path", {
43
54
  "max-width": "85%",
44
55
  "box-shadow": "var(--tpl-shadow)"
45
56
  }
46
- }, L = {
57
+ }, B = {
47
58
  key: 1,
48
59
  class: "tpl:flex tpl:flex-col tpl:gap-2"
49
- }, R = {
60
+ }, me = {
50
61
  key: 1,
51
62
  class: "tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm tpl:whitespace-pre-wrap",
52
63
  style: {
@@ -55,66 +66,69 @@ var C = r("redo-2", [["path", {
55
66
  color: "var(--tpl-text)",
56
67
  "box-shadow": "var(--tpl-shadow)"
57
68
  }
58
- }, z = {
69
+ }, he = {
59
70
  key: 0,
60
71
  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",
61
72
  style: {
62
73
  "background-color": "var(--tpl-danger-light)",
63
74
  color: "var(--tpl-danger)"
64
75
  }
65
- }, B = {
76
+ }, ge = {
66
77
  key: 1,
67
78
  class: "tpl:absolute tpl:right-0 tpl:bottom-0 tpl:left-0 tpl:z-10 tpl:px-3 tpl:pb-3",
68
79
  style: {
69
80
  "background-color": "color-mix(\n in srgb,\n var(--tpl-bg) 50%,\n transparent\n )",
70
81
  "backdrop-filter": "blur(2px)"
71
82
  }
72
- }, me = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, he = ["onClick"], ge = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, _e = { 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)]" }, ve = ["placeholder", "disabled"], ye = ["disabled"], be = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, V = /* @__PURE__ */ i(/* @__PURE__ */ p({
83
+ }, _e = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, ve = ["onClick"], ye = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, be = { 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)]" }, xe = ["placeholder", "disabled"], Se = ["disabled"], Ce = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, V = /* @__PURE__ */ a(/* @__PURE__ */ h({
73
84
  __name: "AiChatSidebar",
74
85
  props: {
75
86
  visible: { type: Boolean },
76
87
  onApply: { type: Function }
77
88
  },
78
89
  emits: ["close"],
79
- setup(r, { emit: i }) {
80
- let p = r, V = i, H = m(n), U = m(ee), xe = m(ne), W = m(te, []), G = S({
81
- authManager: xe,
82
- getTemplateId: () => U.state.template?.id ?? null,
83
- onApply: p.onApply,
90
+ setup(i, { emit: a }) {
91
+ let h = i, g = a, V = r(n, "AiChatSidebar"), H = r(ee, "AiChatSidebar"), we = r(ne, "AiChatSidebar"), U = le(te, []), W = D(), G = w({
92
+ authManager: we,
93
+ getTemplateId: () => H.state.template?.id ?? null,
94
+ onApply: h.onApply,
84
95
  onError: void 0
85
- }), K = _(""), q = _(null), J = _(!1), Y = _(0), { pause: X, resume: Se } = e(() => {
96
+ }), K = v(""), q = v(null), J = v(!1), Y = v(0), { pause: X, resume: Te } = e(() => {
86
97
  let e = G.suggestions.value?.length ?? 0;
87
98
  Y.value < e ? Y.value++ : X();
88
- }, 150, { immediate: !1 }), { start: Ce } = t(() => Se(), 100, { immediate: !1 });
89
- x(() => G.suggestions.value?.length ?? 0, (e) => {
99
+ }, 150, { immediate: !1 }), { start: Ee } = t(() => Te(), 100, { immediate: !1 });
100
+ S(() => G.suggestions.value?.length ?? 0, (e) => {
90
101
  if (X(), e === 0) {
91
102
  Y.value = 0;
92
103
  return;
93
104
  }
94
- Y.value = 0, Ce();
105
+ Y.value = 0, Ee();
95
106
  });
96
107
  function Z() {
97
- h(() => {
108
+ ue(() => {
98
109
  q.value && (q.value.scrollTop = q.value.scrollHeight);
99
110
  });
100
111
  }
101
- x(() => G.messages.value?.length ?? 0, () => Z()), x(() => p.visible, async (e) => {
102
- e && !J.value && (J.value = !0, await G.loadConversation(), (G.messages.value?.length ?? 0) === 0 && U.content.value.blocks.length === 0 && G.loadSuggestions(U.content.value, W));
112
+ S(() => G.messages.value?.length ?? 0, () => Z()), S(() => h.visible, async (e) => {
113
+ if (e && !J.value) {
114
+ if (J.value = !0, await G.loadConversation(), !W.alive) return;
115
+ (G.messages.value?.length ?? 0) === 0 && H.content.value.blocks.length === 0 && G.loadSuggestions(H.content.value, U);
116
+ }
103
117
  });
104
118
  async function Q() {
105
119
  let e = K.value.trim();
106
- !e || G.isGenerating.value || (K.value = "", G.error.value = null, G.failedPrompt.value = null, Z(), await G.sendPrompt(e, U.content.value, W), G.failedPrompt.value && (K.value = G.failedPrompt.value), Z());
120
+ !e || G.isGenerating.value || (K.value = "", G.error.value = null, G.failedPrompt.value = null, Z(), await G.sendPrompt(e, H.content.value, U), W.alive && (G.failedPrompt.value && (K.value = G.failedPrompt.value), Z()));
107
121
  }
108
122
  function $(e) {
109
123
  return e.replace(/```json[\s\S]*?```/g, "").replace(/```json[\s\S]*/g, "").trim();
110
124
  }
111
- function we(e) {
125
+ function De(e) {
112
126
  X(), K.value = e, Q();
113
127
  }
114
- function Te(e) {
128
+ function Oe(e) {
115
129
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), Q());
116
130
  }
117
- return (e, t) => (g(), s(le, {
131
+ return (e, t) => (_(), l(ce, {
118
132
  "enter-active-class": "tpl-ai-slide-enter-active",
119
133
  "enter-from-class": "tpl:translate-x-full",
120
134
  "enter-to-class": "tpl:translate-x-0",
@@ -122,42 +136,42 @@ var C = r("redo-2", [["path", {
122
136
  "leave-from-class": "tpl:translate-x-0",
123
137
  "leave-to-class": "tpl:translate-x-full"
124
138
  }, {
125
- default: fe(() => [r.visible ? (g(), l("div", T, [
126
- u("div", E, [u("div", D, [f(b(a), {
139
+ default: pe(() => [i.visible ? (_(), d("div", O, [
140
+ f("div", k, [f("div", A, [m(x(o), {
127
141
  size: 13,
128
142
  "stroke-width": 2
129
- }), u("span", null, y(b(H).aiChat.title), 1)]), u("div", O, [(b(G).messages.value?.length ?? 0) > 0 ? (g(), l("button", {
143
+ }), f("span", null, b(x(V).aiChat.title), 1)]), f("div", j, [(x(G).messages.value?.length ?? 0) > 0 ? (_(), d("button", {
130
144
  key: 0,
131
145
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
132
- title: b(H).aiChat.clear,
133
- onClick: t[0] ||= (e) => b(G).clearChat()
134
- }, [f(b(oe), {
146
+ title: x(V).aiChat.clear,
147
+ onClick: t[0] ||= (e) => x(G).clearChat()
148
+ }, [m(x(oe), {
135
149
  size: 14,
136
150
  "stroke-width": 2
137
- })], 8, k)) : c("", !0), u("button", {
151
+ })], 8, M)) : u("", !0), f("button", {
138
152
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
139
- onClick: t[1] ||= (e) => V("close")
140
- }, [f(b(se), {
153
+ onClick: t[1] ||= (e) => g("close")
154
+ }, [m(x(s), {
141
155
  size: 14,
142
156
  "stroke-width": 2
143
157
  })])])]),
144
- u("div", A, [
145
- u("div", {
158
+ f("div", N, [
159
+ f("div", {
146
160
  ref_key: "messagesContainer",
147
161
  ref: q,
148
162
  class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4"
149
- }, [b(G).isLoadingHistory.value ? (g(), l("div", j, [f(b(ie), {
163
+ }, [x(G).isLoadingHistory.value ? (_(), d("div", P, [m(x(ie), {
150
164
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
151
165
  size: 24,
152
166
  "stroke-width": 2
153
- }), u("p", M, y(b(H).aiChat.loadingHistory), 1)])) : (b(G).messages.value?.length ?? 0) === 0 ? (g(), l("div", N, [f(b(a), {
167
+ }), f("p", F, b(x(V).aiChat.loadingHistory), 1)])) : (x(G).messages.value?.length ?? 0) === 0 ? (_(), d("div", I, [m(x(o), {
154
168
  size: 32,
155
169
  "stroke-width": 1.5,
156
170
  class: "tpl:text-[var(--tpl-text-dim)]"
157
- }), u("p", P, y(b(H).aiChat.placeholder), 1)])) : (g(), l("div", F, [(g(!0), l(o, null, v(b(G).messages.value, (e, n) => (g(), l("div", {
171
+ }), f("p", L, b(x(V).aiChat.placeholder), 1)])) : (_(), d("div", R, [(_(!0), d(c, null, y(x(G).messages.value, (e, n) => (_(), d("div", {
158
172
  key: e.id,
159
173
  class: "tpl:flex tpl:flex-col tpl:gap-2"
160
- }, [e.role === "user" ? (g(), l("div", I, y(e.content), 1)) : (g(), l("div", L, [!$(e.content) && b(G).isGenerating.value && n === (b(G).messages.value?.length ?? 0) - 1 ? (g(), s(ce, { key: 0 })) : (g(), l("div", R, y($(e.content) || b(H).aiChat.applied), 1)), e.id === b(G).lastApplyMessageId.value && !b(G).isGenerating.value ? (g(), l("button", {
174
+ }, [e.role === "user" ? (_(), d("div", z, b(e.content), 1)) : (_(), d("div", B, [!$(e.content) && x(G).isGenerating.value && n === (x(G).messages.value?.length ?? 0) - 1 ? (_(), l(se, { key: 0 })) : (_(), d("div", me, b($(e.content) || x(V).aiChat.applied), 1)), e.id === x(G).lastApplyMessageId.value && !x(G).isGenerating.value ? (_(), d("button", {
161
175
  key: 2,
162
176
  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",
163
177
  style: {
@@ -165,50 +179,50 @@ var C = r("redo-2", [["path", {
165
179
  color: "var(--tpl-text-muted)",
166
180
  "background-color": "transparent"
167
181
  },
168
- onClick: t[2] ||= (e) => b(G).toggleLastRevert()
169
- }, [b(G).isLastChangeReverted.value ? (g(), l(o, { key: 0 }, [f(b(C), {
182
+ onClick: t[2] ||= (e) => x(G).toggleLastRevert()
183
+ }, [x(G).isLastChangeReverted.value ? (_(), d(c, { key: 0 }, [m(x(T), {
170
184
  size: 12,
171
185
  "stroke-width": 2
172
- }), d(" " + y(b(H).aiChat.reapply), 1)], 64)) : (g(), l(o, { key: 1 }, [f(b(w), {
186
+ }), p(" " + b(x(V).aiChat.reapply), 1)], 64)) : (_(), d(c, { key: 1 }, [m(x(E), {
173
187
  size: 12,
174
188
  "stroke-width": 2
175
- }), d(" " + y(b(H).aiChat.revert), 1)], 64))])) : c("", !0)]))]))), 128))]))], 512),
176
- b(G).error.value ? (g(), l("div", z, [f(b(re), {
189
+ }), p(" " + b(x(V).aiChat.revert), 1)], 64))])) : u("", !0)]))]))), 128))]))], 512),
190
+ x(G).error.value ? (_(), d("div", he, [m(x(re), {
177
191
  size: 14,
178
192
  "stroke-width": 2,
179
193
  class: "tpl:mt-0.5 tpl:shrink-0"
180
- }), u("span", null, y(b(G).error.value === "ai_apply_failed" ? b(H).aiChat.applyFailed : b(H).aiChat.error), 1)])) : c("", !0),
181
- (b(G).suggestions.value?.length ?? 0) > 0 ? (g(), l("div", B, [u("div", me, [(g(!0), l(o, null, v(b(G).suggestions.value ?? [], (e, t) => (g(), l("button", {
194
+ }), f("span", null, b(x(G).error.value === "ai_apply_failed" ? x(V).aiChat.applyFailed : x(V).aiChat.error), 1)])) : u("", !0),
195
+ (x(G).suggestions.value?.length ?? 0) > 0 ? (_(), d("div", ge, [f("div", _e, [(_(!0), d(c, null, y(x(G).suggestions.value ?? [], (e, t) => (_(), d("button", {
182
196
  key: t,
183
- class: ue(["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", (b(G).suggestions.value?.length ?? 0) - 1 - t < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
197
+ class: de(["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", (x(G).suggestions.value?.length ?? 0) - 1 - t < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
184
198
  style: {
185
199
  "border-color": "var(--tpl-border)",
186
200
  color: "var(--tpl-primary)",
187
201
  "background-color": "var(--tpl-bg)",
188
202
  "box-shadow": "var(--tpl-shadow)"
189
203
  },
190
- onClick: (t) => we(e)
191
- }, y(e), 11, he))), 128))])])) : c("", !0)
204
+ onClick: (t) => De(e)
205
+ }, b(e), 11, ve))), 128))])])) : u("", !0)
192
206
  ]),
193
- u("div", ge, [u("div", _e, [pe(u("textarea", {
207
+ f("div", ye, [f("div", be, [C(f("textarea", {
194
208
  "onUpdate:modelValue": t[3] ||= (e) => K.value = e,
195
209
  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)]",
196
- placeholder: b(H).aiChat.inputPlaceholder,
197
- disabled: b(G).isGenerating.value,
210
+ placeholder: x(V).aiChat.inputPlaceholder,
211
+ disabled: x(G).isGenerating.value,
198
212
  rows: "3",
199
- onKeydown: Te
200
- }, null, 40, ve), [[de, K.value]]), u("button", {
213
+ onKeydown: Oe
214
+ }, null, 40, xe), [[fe, K.value]]), f("button", {
201
215
  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)]",
202
- disabled: !K.value.trim() || b(G).isGenerating.value,
216
+ disabled: !K.value.trim() || x(G).isGenerating.value,
203
217
  onClick: Q
204
- }, [f(b(ae), {
218
+ }, [m(x(ae), {
205
219
  size: 16,
206
220
  "stroke-width": 2
207
- })], 8, ye)]), u("p", be, y(b(H).aiMenu.disclaimer), 1)])
208
- ])) : c("", !0)]),
221
+ })], 8, Se)]), f("p", Ce, b(x(V).aiMenu.disclaimer), 1)])
222
+ ])) : u("", !0)]),
209
223
  _: 1
210
224
  }));
211
225
  }
212
- }), [["__scopeId", "data-v-2735cdb5"]]);
226
+ }), [["__scopeId", "data-v-da2a9f9a"]]);
213
227
  //#endregion
214
228
  export { V as default };
@@ -1,11 +1,11 @@
1
- import "./useEditorCore-CjwRMl7K.js";
2
- import { t as e } from "./keys-C0MQRs8d.js";
3
- import { t } from "./useI18n-D6m7ZUgY.js";
4
- import { t as n } from "./_plugin-vue_export-helper-B1-bu7yR.js";
5
- import { t as r } from "./image-up-X4xIq4ea.js";
6
- import { t as i } from "./shield-check-f-qv4RKs.js";
7
- import { t as a } from "./sparkles-KhBCGlqB.js";
8
- import { Fragment as o, computed as s, createBlock as c, createElementBlock as l, createElementVNode as u, defineComponent as d, inject as f, normalizeStyle as p, openBlock as m, renderList as h, resolveDynamicComponent as g, toDisplayString as _ } from "vue";
1
+ import "./useEditorCore-DUGD6pq_.js";
2
+ import { T as e, t } from "./keys-C0MQRs8d.js";
3
+ import { t as n } from "./useI18n-D6m7ZUgY.js";
4
+ import { t as r } from "./_plugin-vue_export-helper-B1-bu7yR.js";
5
+ import { t as i } from "./image-up-X4xIq4ea.js";
6
+ import { t as a } from "./shield-check-f-qv4RKs.js";
7
+ import { t as o } from "./sparkles-KhBCGlqB.js";
8
+ import { Fragment as s, computed as c, createBlock as l, createElementBlock as u, createElementVNode as d, defineComponent as f, normalizeStyle as p, openBlock as m, renderList as h, resolveDynamicComponent as g, toDisplayString as _ } from "vue";
9
9
  //#region src/cloud/components/AiFeatureMenu.vue?vue&type=script&setup=true&lang.ts
10
10
  var v = {
11
11
  class: "tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg-elevated)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]",
@@ -13,51 +13,51 @@ var v = {
13
13
  "backdrop-filter": "blur(8px)",
14
14
  "-webkit-backdrop-filter": "blur(8px)"
15
15
  }
16
- }, y = ["onClick"], b = { class: "tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5" }, x = { class: "tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, S = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]" }, C = /* @__PURE__ */ n(/* @__PURE__ */ d({
16
+ }, y = ["onClick"], b = { class: "tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5" }, x = { class: "tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, S = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]" }, C = /* @__PURE__ */ r(/* @__PURE__ */ f({
17
17
  __name: "AiFeatureMenu",
18
18
  props: { activeFeature: {} },
19
19
  emits: ["select"],
20
- setup(n, { emit: d }) {
21
- let C = d, { t: w } = t(), T = f(e), E = {
20
+ setup(r, { emit: f }) {
21
+ let C = f, { t: w } = n(), T = e(t, "AiFeatureMenu"), E = {
22
22
  "ai-chat": "chat",
23
23
  "design-reference": "designToTemplate",
24
24
  scoring: "scoring"
25
25
  }, D = [
26
26
  {
27
27
  key: "ai-chat",
28
- icon: a
28
+ icon: o
29
29
  },
30
30
  {
31
31
  key: "design-reference",
32
- icon: r
32
+ icon: i
33
33
  },
34
34
  {
35
35
  key: "scoring",
36
- icon: i
36
+ icon: a
37
37
  }
38
- ], O = s(() => D.filter((e) => T.isFeatureEnabled(E[e.key])));
38
+ ], O = c(() => D.filter((e) => T.isFeatureEnabled(E[e.key])));
39
39
  function k(e) {
40
40
  return e === "ai-chat" ? w.aiMenu.aiAssistant : e === "design-reference" ? w.aiMenu.designToTemplate : w.aiMenu.templateScore;
41
41
  }
42
42
  function A(e) {
43
43
  return e === "ai-chat" ? w.aiMenu.aiAssistantDesc : e === "design-reference" ? w.aiMenu.designToTemplateDesc : w.aiMenu.templateScoreDesc;
44
44
  }
45
- return (e, t) => (m(), l("div", v, [(m(!0), l(o, null, h(O.value, (e) => (m(), l("button", {
45
+ return (e, t) => (m(), u("div", v, [(m(!0), u(s, null, h(O.value, (e) => (m(), u("button", {
46
46
  key: e.key,
47
47
  class: "tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors tpl:duration-100",
48
- style: p({ backgroundColor: n.activeFeature === e.key ? "var(--tpl-primary-light)" : "transparent" }),
48
+ style: p({ backgroundColor: r.activeFeature === e.key ? "var(--tpl-primary-light)" : "transparent" }),
49
49
  onClick: (t) => C("select", e.key)
50
- }, [u("div", {
50
+ }, [d("div", {
51
51
  class: "tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]",
52
52
  style: p({
53
- backgroundColor: n.activeFeature === e.key ? "var(--tpl-primary)" : "var(--tpl-bg-active)",
54
- color: n.activeFeature === e.key ? "var(--tpl-bg)" : "var(--tpl-text-muted)"
53
+ backgroundColor: r.activeFeature === e.key ? "var(--tpl-primary)" : "var(--tpl-bg-active)",
54
+ color: r.activeFeature === e.key ? "var(--tpl-bg)" : "var(--tpl-text-muted)"
55
55
  })
56
- }, [(m(), c(g(e.icon), {
56
+ }, [(m(), l(g(e.icon), {
57
57
  size: 15,
58
58
  "stroke-width": 2
59
- }))], 4), u("div", b, [u("span", x, _(k(e.key)), 1), u("span", S, _(A(e.key)), 1)])], 12, y))), 128))]));
59
+ }))], 4), d("div", b, [d("span", x, _(k(e.key)), 1), d("span", S, _(A(e.key)), 1)])], 12, y))), 128))]));
60
60
  }
61
- }), [["__scopeId", "data-v-7980235a"]]);
61
+ }), [["__scopeId", "data-v-638e1be2"]]);
62
62
  //#endregion
63
63
  export { C as default };