@chaibuilder/sdk 4.0.0-beta.47 → 4.0.0-beta.49

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 (122) hide show
  1. package/dist/{2SSKDMRQ-CVHl6i14.cjs → 2SSKDMRQ-CjvuNdPo.cjs} +1 -1
  2. package/dist/{2SSKDMRQ-D9rlRpnI.js → 2SSKDMRQ-Dvf9zadl.js} +2 -2
  3. package/dist/{AP7HFJJL-D18sv0Wh.cjs → AP7HFJJL-DYFttFoI.cjs} +1 -1
  4. package/dist/{AP7HFJJL-CBrphwP9.js → AP7HFJJL-q4dJdyFs.js} +1 -1
  5. package/dist/{IconPicker-CSewv0kY.js → IconPicker-Bf163F7t.js} +1 -1
  6. package/dist/{IconPicker-CxEGCcVZ.cjs → IconPicker-JWhYq2Gp.cjs} +1 -1
  7. package/dist/{WDYDFRGG-C0G8c0hR.cjs → WDYDFRGG-BEksfGMC.cjs} +1 -1
  8. package/dist/{WDYDFRGG-BCmjXFs0.js → WDYDFRGG-O9GIrtX0.js} +2 -2
  9. package/dist/{actions-registery-BQ31lpix.cjs → actions-registery-BHbZHkE3.cjs} +11 -3
  10. package/dist/{actions-registery-B1VeX52Y.js → actions-registery-gJb_wq2F.js} +25 -13
  11. package/dist/actions.cjs +1 -1
  12. package/dist/actions.d.ts +10 -3
  13. package/dist/actions.js +6 -4
  14. package/dist/{active-in-another-tab-BhbPijx9.js → active-in-another-tab-B4Ur0JP7.js} +2 -2
  15. package/dist/{active-in-another-tab-CMmhCRma.cjs → active-in-another-tab-BPdx4lWh.cjs} +1 -1
  16. package/dist/{add-new-language-page-ChQgjFwb.cjs → add-new-language-page-BfUp5Ua2.cjs} +1 -1
  17. package/dist/{add-new-language-page-C0sayTSF.js → add-new-language-page-CRR93tLq.js} +3 -3
  18. package/dist/{add-new-page-DLf5Tfb7.cjs → add-new-page-B8NGK6WS.cjs} +1 -1
  19. package/dist/{add-new-page-DLKzuaNM.js → add-new-page-Ppy5-y5j.js} +2 -2
  20. package/dist/ai-panel-default-lang-BXYQye3N.js +333 -0
  21. package/dist/ai-panel-default-lang-VhgmHFoQ.cjs +3 -0
  22. package/dist/ai-panel-other-lang-DaCf-cq4.js +148 -0
  23. package/dist/ai-panel-other-lang-Ds0EXeUC.cjs +1 -0
  24. package/dist/{ai-prompt-input-DNb1FKXQ.js → ai-prompt-input-7iWk72w5.js} +253 -258
  25. package/dist/ai-prompt-input-nZ5_Dm7X.cjs +1 -0
  26. package/dist/{ai-translation-prompt-B2MfzTjb.js → ai-translation-prompt-1OUs1P7n.js} +1 -1
  27. package/dist/{ai-translation-prompt-CL3yk8K1.cjs → ai-translation-prompt-B16cK-1Q.cjs} +1 -1
  28. package/dist/{change-password-modal-CbMifP62.js → change-password-modal-CdvJR1Ln.js} +10 -10
  29. package/dist/{change-password-modal-D_NFPZxI.cjs → change-password-modal-D5eXjiYq.cjs} +1 -1
  30. package/dist/{code-editor-53rOkfhX.js → code-editor-CyLjDiEp.js} +1 -1
  31. package/dist/{code-editor-CCsljULB.cjs → code-editor-SWbfFj1E.cjs} +1 -1
  32. package/dist/{continue-editing-in-this-client-hB4O3CHJ.js → continue-editing-in-this-client-BrSvK-Ay.js} +2 -2
  33. package/dist/{continue-editing-in-this-client-3QLL7tQH.cjs → continue-editing-in-this-client-Cmi-GkYZ.cjs} +1 -1
  34. package/dist/core.cjs +1 -1
  35. package/dist/core.js +1 -1
  36. package/dist/{css-import-modal-Bmi3LrEJ.cjs → css-import-modal-Bdwgd05S.cjs} +1 -1
  37. package/dist/{css-import-modal-DCivkVh2.js → css-import-modal-Be47CBJn.js} +1 -1
  38. package/dist/{delete-page-BW2NxLZu.js → delete-page-C99K2qzS.js} +15 -15
  39. package/dist/{delete-page-CxVfKrBz.cjs → delete-page-DLohaU-U.cjs} +1 -1
  40. package/dist/{design-token-usage-WTVjf9c-.js → design-token-usage-D1lWCJ3L.js} +1 -1
  41. package/dist/{design-token-usage-5jsa9ojN.cjs → design-token-usage-eY2wQ0l3.cjs} +1 -1
  42. package/dist/{digital-asset-manager-dNK-BYdI.js → digital-asset-manager-BZMb6sC7.js} +3 -3
  43. package/dist/{digital-asset-manager-DlFCWUP4.cjs → digital-asset-manager-Z5aJxkq0.cjs} +1 -1
  44. package/dist/{duplicate-page-BbB2anQO.js → duplicate-page-CDc2X0eW.js} +12 -12
  45. package/dist/{duplicate-page-0o6G-oY_.cjs → duplicate-page-D5Gtvqdv.cjs} +1 -1
  46. package/dist/{dynamic-page-selector-Ds3MqxTF.cjs → dynamic-page-selector-DZHhX008.cjs} +1 -1
  47. package/dist/{dynamic-page-selector-rFO8457w.js → dynamic-page-selector-DvNBXo6o.js} +2 -2
  48. package/dist/{image-editor-BnVkes6Q.js → image-editor-BBvvi9Vm.js} +1 -1
  49. package/dist/{image-editor-DqItmbk1.cjs → image-editor-DwhTYkVR.cjs} +1 -1
  50. package/dist/index-BVwFJWDq.cjs +5 -0
  51. package/dist/{index-DTNHTRZu.cjs → index-DCJDQs1a.cjs} +8 -8
  52. package/dist/{index-BYjniKhj.js → index-LBTm1Jmk.js} +838 -806
  53. package/dist/{index-B7HAfx-2.js → index-OuHV9Ann.js} +16 -9
  54. package/dist/{json-diff-viewer-B4rnFiN_.cjs → json-diff-viewer-Cb1CmRqP.cjs} +1 -1
  55. package/dist/{json-diff-viewer-CKlyO9eW.js → json-diff-viewer-DG6qMOBS.js} +6 -6
  56. package/dist/{lang-panel-YT96E5Xj.js → lang-panel-B3USOxGq.js} +9 -9
  57. package/dist/{lang-panel-DiVz4Cay.cjs → lang-panel-DxoJ0v4y.cjs} +1 -1
  58. package/dist/{manage-design-tokens-LwImeKaK.js → manage-design-tokens-6YGIctip.js} +2 -2
  59. package/dist/{manage-design-tokens-modal-BEElCTcN.cjs → manage-design-tokens-modal-BSSCXH8Y.cjs} +1 -1
  60. package/dist/{manage-design-tokens-modal-DFVcoyra.js → manage-design-tokens-modal-CzsnN49F.js} +2 -2
  61. package/dist/{manage-design-tokens-BwrIc6dS.cjs → manage-design-tokens-udLBvkHA.cjs} +1 -1
  62. package/dist/{mark-as-template-DtDkh6jB.cjs → mark-as-template-B9yLcasI.cjs} +1 -1
  63. package/dist/{mark-as-template-D2Hpz0IE.js → mark-as-template-CP_F9ZQ4.js} +2 -2
  64. package/dist/{models-D0RH2u4C.cjs → models-CQaC3EBW.cjs} +1 -1
  65. package/dist/{models-BCu-p_QK.js → models-DZ9C6CvE.js} +4 -5
  66. package/dist/{nested-path-selector-content-TqjBbNys.js → nested-path-selector-content-DmtCI3q9.js} +1 -1
  67. package/dist/{nested-path-selector-content-CJfN8Hhw.cjs → nested-path-selector-content-aTdu-o0e.cjs} +1 -1
  68. package/dist/{no-language-page-content-CcD-fgMa.cjs → no-language-page-content-C-MCdPXt.cjs} +1 -1
  69. package/dist/{no-language-page-content-Ce3wniZT.js → no-language-page-content-D8t5dfgh.js} +2 -2
  70. package/dist/{no-language-page-dialog-CU1zXsYv.js → no-language-page-dialog-C_fHI2zI.js} +2 -2
  71. package/dist/{no-language-page-dialog-B7fhPdob.cjs → no-language-page-dialog-D4QIAHnE.cjs} +1 -1
  72. package/dist/{page-creator-C7XEqUx_.cjs → page-creator-Cz_ah-qE.cjs} +1 -1
  73. package/dist/{page-creator-wg3uymVG.js → page-creator-DKEkuGCO.js} +33 -33
  74. package/dist/{page-lock-BuVma3e5.js → page-lock-CwZKJ4IE.js} +2 -2
  75. package/dist/{page-lock-CINb2air.cjs → page-lock-DdCvtA-I.cjs} +1 -1
  76. package/dist/{page-locked-dialog-s-3ROcy0.cjs → page-locked-dialog-CrTDBoC4.cjs} +1 -1
  77. package/dist/{page-locked-dialog-C7_1gjO5.js → page-locked-dialog-DqLlooUz.js} +11 -11
  78. package/dist/{page-manager-new-CKWSLVrb.cjs → page-manager-new-ah6QYar2.cjs} +1 -1
  79. package/dist/{page-manager-new-zlobCGqL.js → page-manager-new-ttsrxdW9.js} +42 -42
  80. package/dist/{page-manager-search-and-filter-BaOsl_5u.cjs → page-manager-search-and-filter-D7AupT6_.cjs} +1 -1
  81. package/dist/{page-manager-search-and-filter-BU_iNmHy.js → page-manager-search-and-filter-bsqZ6wnI.js} +2 -2
  82. package/dist/{page-revisions-content-BmaNPNoS.cjs → page-revisions-content-B6hsIla7.cjs} +1 -1
  83. package/dist/{page-revisions-content-D6l_d2jW.js → page-revisions-content-C5O8_Fms.js} +16 -16
  84. package/dist/pages.cjs +1 -1
  85. package/dist/pages.d.ts +66 -1
  86. package/dist/pages.js +19 -19
  87. package/dist/{publish-pages-content-2LG6JOrm.cjs → publish-pages-content-BrajJUcP.cjs} +1 -1
  88. package/dist/{publish-pages-content-CQteRtBA.js → publish-pages-content-KZVMHT6V.js} +32 -32
  89. package/dist/{rte-widget-modal-KzT2hLFt.cjs → rte-widget-modal-CiTwsXTr.cjs} +1 -1
  90. package/dist/{rte-widget-modal-CFk0Izg5.js → rte-widget-modal-IU8JzPuZ.js} +1 -1
  91. package/dist/{save-to-lib-D1V3bNZX.js → save-to-lib-DMnv7ENo.js} +50 -50
  92. package/dist/{save-to-lib-D82Vrekv.cjs → save-to-lib-Dc700Aop.cjs} +1 -1
  93. package/dist/{selected-block-display-BHx9N14K.cjs → selected-block-display-CAFEOrLV.cjs} +1 -1
  94. package/dist/{selected-block-display-BbUH5RaW.js → selected-block-display-CidmQ-wz.js} +2 -2
  95. package/dist/{seo-panel-CyBmGg6k.js → seo-panel-Br8gxDxu.js} +148 -158
  96. package/dist/{seo-panel-CPsjZLtL.cjs → seo-panel-CMY-adM-.cjs} +2 -2
  97. package/dist/{shared-json-ld-DyU9wqrE.cjs → shared-json-ld-CMH-eRUq.cjs} +1 -1
  98. package/dist/{shared-json-ld-SGykyppC.js → shared-json-ld-uvMmwCYp.js} +26 -26
  99. package/dist/{slug-input-BzpnOdXG.cjs → slug-input-CiHC5l3r.cjs} +1 -1
  100. package/dist/{slug-input-DpMI4nEB.js → slug-input-DLWTMTsO.js} +1 -1
  101. package/dist/supabase-actions.cjs +1 -1
  102. package/dist/supabase-actions.js +1 -1
  103. package/dist/{take-over-request-wTVLAotu.cjs → take-over-request-IRLgF1dG.cjs} +1 -1
  104. package/dist/{take-over-request-D97Fg-xB.js → take-over-request-KdR1_h_K.js} +5 -5
  105. package/dist/{translation-warning-modal-Xk6oYGFS.cjs → translation-warning-modal-CLZ9tC1F.cjs} +1 -1
  106. package/dist/{translation-warning-modal-Du-CnfyH.js → translation-warning-modal-CzNt6LDO.js} +1 -1
  107. package/dist/types.d.ts +6 -0
  108. package/dist/{unmark-as-template-BHk2F0ck.js → unmark-as-template-C5ovsEBP.js} +2 -2
  109. package/dist/{unmark-as-template-BRnMhh7n.cjs → unmark-as-template-F7TdgWjI.cjs} +1 -1
  110. package/dist/{unpublish-page-BOEjCHLB.js → unpublish-page-0fR1o0b7.js} +8 -8
  111. package/dist/{unpublish-page-Bu75lH33.cjs → unpublish-page-CUr8Xub6.cjs} +1 -1
  112. package/dist/{unpublished-partials-modal-C0_0qNvV.js → unpublished-partials-modal-BhNAub_z.js} +1 -1
  113. package/dist/{unpublished-partials-modal-BS_GddEG.cjs → unpublished-partials-modal-Cv5R9-hi.cjs} +1 -1
  114. package/dist/{web-preview-DcOhTGup.cjs → web-preview-CuMYekVJ.cjs} +1 -1
  115. package/dist/{web-preview-C3bbIF6T.js → web-preview-D9pXonAv.js} +1 -1
  116. package/package.json +1 -1
  117. package/dist/ai-panel-default-lang-DsGjoITc.cjs +0 -3
  118. package/dist/ai-panel-default-lang-Dy_4L5pH.js +0 -317
  119. package/dist/ai-panel-other-lang-1RYtb71B.js +0 -132
  120. package/dist/ai-panel-other-lang-CL3coL7Z.cjs +0 -1
  121. package/dist/ai-prompt-input-BhTL_-mT.cjs +0 -1
  122. package/dist/index-BeGLwvqs.cjs +0 -5
@@ -0,0 +1,333 @@
1
+ import { jsxs as R, Fragment as X, jsx as m } from "react/jsx-runtime";
2
+ import { ab as Y, ac as Z, ad as tt, r as et, a as nt, ae as rt } from "./index-OuHV9Ann.js";
3
+ import { C as st, a as ot, b as at, R as it, c as ct, d as lt, T as ut, M as dt, e as mt, f as ft, h as pt, S as ht, i as gt } from "./selected-block-display-CidmQ-wz.js";
4
+ import { Bot as At } from "lucide-react";
5
+ import { useCallback as kt, Fragment as yt, Suspense as It, lazy as bt, startTransition as Q } from "react";
6
+ import { toast as St } from "sonner";
7
+ import { l as Ct, m as Et } from "./index-LBTm1Jmk.js";
8
+ import { g as U } from "./apply-binding-vAuN-TGV.js";
9
+ import { useQueryClient as vt } from "@tanstack/react-query";
10
+ const wt = () => {
11
+ const { addPredefinedBlock: I } = Y(), F = Z(), b = tt(), x = vt(), N = async (o, n) => {
12
+ if (!n) return;
13
+ const e = U(n);
14
+ await I(e, o.parentId, o.position);
15
+ }, w = async (o, n) => {
16
+ if (!o.blockId || !n) return;
17
+ const e = U(n);
18
+ await F(o.blockId, e);
19
+ }, C = async (o) => {
20
+ !o.ids || o.ids.length === 0 || await b(o.ids);
21
+ };
22
+ let d = null;
23
+ const H = (o, n) => {
24
+ const e = document.getElementById("canvas-iframe");
25
+ if (!e)
26
+ return null;
27
+ const l = e == null ? void 0 : e.contentDocument;
28
+ if (!l)
29
+ return null;
30
+ l.querySelectorAll("[data-stream-canvas]").forEach((f) => f.remove());
31
+ let s = null;
32
+ if (o && o !== "undefined" && (s = l.querySelector(`[data-block-id="${o}"]`)), s || (s = l.body), !s)
33
+ return null;
34
+ if (d = l.createElement("div"), d.setAttribute("data-stream-canvas", "true"), n !== void 0 && n >= 0 && s.children) {
35
+ const f = Math.min(n, s.children.length);
36
+ f < s.children.length ? s.insertBefore(d, s.children[f]) : s.appendChild(d);
37
+ } else
38
+ s.appendChild(d);
39
+ return d;
40
+ }, P = (o) => {
41
+ var s;
42
+ const n = document.getElementById("canvas-iframe");
43
+ if (!n)
44
+ return null;
45
+ const e = n == null ? void 0 : n.contentDocument;
46
+ if (!e)
47
+ return null;
48
+ e.querySelectorAll("[data-stream-canvas]").forEach((f) => f.remove());
49
+ const u = e.querySelector(`[data-block-id="${o}"]`);
50
+ return u ? (d = e.createElement("div"), d.setAttribute("data-stream-canvas", "true"), (s = u.parentNode) == null || s.insertBefore(d, u.nextSibling), u.style.display = "none", d) : null;
51
+ }, L = (o) => {
52
+ const n = document.getElementById("canvas-iframe");
53
+ (n == null ? void 0 : n.contentWindow) && o.scrollIntoView({ behavior: "smooth", block: "end" });
54
+ }, B = (o, n, e) => {
55
+ const l = H(n, e);
56
+ l && (l.innerHTML = o, L(l));
57
+ }, T = (o, n) => {
58
+ const e = P(n);
59
+ e && (e.innerHTML = o, L(e));
60
+ }, O = (o) => {
61
+ const n = o.match(/^--ACTION=(.+)--$/);
62
+ if (!n) return null;
63
+ let l = n[1].replace(/--/g, "").split("|");
64
+ const s = { type: l[0] };
65
+ return l.forEach((f) => {
66
+ const t = f.trim();
67
+ if (t.startsWith("PARENT=")) {
68
+ const g = t.substring(7);
69
+ s.parentId = g === "undefined" ? void 0 : g;
70
+ } else t.startsWith("POS=") ? s.position = parseInt(t.substring(4)) : t.startsWith("ID=") ? s.blockId = t.substring(3) : t.startsWith("IDS=") && (s.ids = t.substring(4).split(",").map((g) => g.trim()));
71
+ }), s;
72
+ };
73
+ return kt(
74
+ async (o, n) => {
75
+ const e = new TextDecoder();
76
+ let l = "", u = "", s = !1, f = null;
77
+ const t = {
78
+ isInAction: !1,
79
+ currentAction: null,
80
+ htmlBuffer: "",
81
+ isCapturingHtml: !1
82
+ }, g = async (r) => {
83
+ const a = r.trim();
84
+ if (a === "--START--") {
85
+ s = !0;
86
+ return;
87
+ }
88
+ if (s) {
89
+ if (a === "--END--") {
90
+ t.currentAction && (t.htmlBuffer || t.currentAction.type === "REMOVE") && await M(t.currentAction, t.htmlBuffer), d && (d.remove(), d = null);
91
+ return;
92
+ }
93
+ if (a.startsWith("--THINKING=")) {
94
+ const i = a.substring(11);
95
+ n((c) => {
96
+ const p = [...c], h = p[p.length - 1];
97
+ if (h && h.role === "assistant" && h.isReasoning)
98
+ h.content = i, h.isStreaming = !1;
99
+ else {
100
+ const $ = {
101
+ id: Date.now().toString(),
102
+ role: "assistant",
103
+ content: i,
104
+ isReasoning: !0,
105
+ isStreaming: !1
106
+ };
107
+ p.push($);
108
+ }
109
+ return p;
110
+ });
111
+ return;
112
+ }
113
+ if (a.startsWith("--TASK=")) {
114
+ const i = a.substring(7), c = `task-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, p = {
115
+ id: c,
116
+ role: "assistant",
117
+ content: i.replace(/--$/, ""),
118
+ isTask: !0,
119
+ isTaskLoading: !0,
120
+ isTaskCompleted: !1
121
+ };
122
+ f = c, n((h) => [...h, p]);
123
+ return;
124
+ }
125
+ if (a.startsWith("--MSG=")) {
126
+ const i = a.substring(6), c = {
127
+ id: Date.now().toString(),
128
+ role: "assistant",
129
+ content: i.replace(/--$/g, ""),
130
+ isReasoning: !1,
131
+ isStreaming: !1
132
+ };
133
+ n((p) => [...p, c]);
134
+ return;
135
+ }
136
+ if (a.startsWith("--ACTION=")) {
137
+ t.currentAction && (t.htmlBuffer || t.currentAction.type === "REMOVE") && await M(t.currentAction, t.htmlBuffer), t.currentAction = O(a), t.htmlBuffer = "", t.isInAction = !0;
138
+ return;
139
+ }
140
+ if (a === "--ENDACTION--") {
141
+ t.currentAction && (t.htmlBuffer || t.currentAction.type === "REMOVE") && await M(t.currentAction, t.htmlBuffer), f && (n((i) => i.map((c) => c.isTask ? { ...c, isTaskCompleted: !0 } : c)), f = null), t.currentAction = null, t.htmlBuffer = "", t.isInAction = !1;
142
+ return;
143
+ }
144
+ if (a === "--HTML--") {
145
+ t.isCapturingHtml = !0;
146
+ return;
147
+ }
148
+ if (a === "--ENDHTML--") {
149
+ t.isCapturingHtml = !1;
150
+ return;
151
+ }
152
+ if (a.startsWith("--HTML--") && a.includes("--ENDHTML--")) {
153
+ const i = a.match(/^--HTML--(.+?)--ENDHTML--$/);
154
+ if (i && t.currentAction) {
155
+ const c = i[1];
156
+ t.htmlBuffer += c, t.currentAction.type === "ADD" ? B(t.htmlBuffer, t.currentAction.parentId, t.currentAction.position) : t.currentAction.type === "EDIT" && t.currentAction.blockId && T(t.htmlBuffer, t.currentAction.blockId);
157
+ }
158
+ return;
159
+ }
160
+ t.isCapturingHtml && t.currentAction && (t.htmlBuffer += r + `
161
+ `, t.currentAction.type === "ADD" ? B(t.htmlBuffer, t.currentAction.parentId, t.currentAction.position) : t.currentAction.type === "EDIT" && t.currentAction.blockId && T(t.htmlBuffer, t.currentAction.blockId));
162
+ }
163
+ }, M = async (r, a) => {
164
+ try {
165
+ switch (r.type) {
166
+ case "ADD":
167
+ await N(r, a);
168
+ break;
169
+ case "EDIT":
170
+ await w(r, a);
171
+ break;
172
+ case "REMOVE":
173
+ await C(r);
174
+ break;
175
+ }
176
+ n((i) => i.filter((c) => !c.isTask));
177
+ } catch (i) {
178
+ console.log(i);
179
+ }
180
+ };
181
+ try {
182
+ for (; ; ) {
183
+ const { done: r, value: a } = await o.read();
184
+ if (r) break;
185
+ const i = e.decode(a, { stream: !0 });
186
+ l += i, u += i;
187
+ const c = u.split(`
188
+ `);
189
+ u = c.pop() || "";
190
+ for (const p of c)
191
+ await g(p);
192
+ }
193
+ u && await g(u), x.invalidateQueries({
194
+ queryKey: ["AI_USAGE"]
195
+ });
196
+ } catch (r) {
197
+ console.log(r);
198
+ }
199
+ },
200
+ [b]
201
+ );
202
+ }, Bt = bt(() => import("./ai-prompt-input-7iWk72w5.js")), Ft = ({
203
+ t: I,
204
+ fetch: F,
205
+ input: b,
206
+ messages: x,
207
+ setInput: N,
208
+ isLoading: w,
209
+ setMessages: C,
210
+ handleStop: d,
211
+ setIsLoading: H,
212
+ currentBlock: P,
213
+ fallbackLang: L,
214
+ setCurrentBlock: B,
215
+ setAbortController: T,
216
+ selectedModel: O,
217
+ onModelChange: o
218
+ }) => {
219
+ const { models: n } = Ct(), e = Et(), l = n.find((r) => r.id === "google/gemini-3-flash") || n[0], u = O || l.id, s = et(), [, f] = nt(), t = rt(), g = wt(), M = async (r, a, i, c) => {
220
+ var V, _;
221
+ if (!r || w) return;
222
+ B(s);
223
+ const p = t(s ? { blockId: s._id, additionalCoreBlocks: ["Icon"] } : { additionalCoreBlocks: ["Icon"] });
224
+ if (s && !p) {
225
+ St.error(I("Something went wrong. Please try again."));
226
+ return;
227
+ }
228
+ const h = {
229
+ id: Date.now().toString(),
230
+ role: "user",
231
+ content: gt({
232
+ language: L,
233
+ userInput: a || r,
234
+ currentHtml: p
235
+ }),
236
+ userMessage: r
237
+ }, $ = {
238
+ id: (Date.now() + 1).toString(),
239
+ role: "assistant",
240
+ content: "",
241
+ isReasoning: !0,
242
+ isStreaming: !0
243
+ };
244
+ C((A) => [...A, h, $]), H(!0);
245
+ const J = new AbortController();
246
+ T(J);
247
+ const S = c || u;
248
+ (V = e.onAIEvent) == null || V.call(e, { type: "stream_start", model: S, timestamp: Date.now() });
249
+ try {
250
+ const A = {
251
+ messages: [h].map((k) => ({
252
+ role: k.role,
253
+ content: k.content
254
+ })),
255
+ model: c || u,
256
+ context: e.context
257
+ };
258
+ i && (A.image = i);
259
+ const W = await F({ body: { action: "ASK_AI", data: A }, streamResponse: !0 });
260
+ if (!W.ok)
261
+ throw new Error(I("Failed to get AI response"));
262
+ const y = (_ = W.body) == null ? void 0 : _.getReader();
263
+ if (!y) throw new Error(I("Response body is not readable"));
264
+ await g(y, C), C((k) => (Q(() => {
265
+ var K, j, G, z;
266
+ const D = k.filter((q) => q.role === "assistant" && !q.isReasoning && !q.isTask), E = ((K = D[D.length - 1]) == null ? void 0 : K.content) || "", v = Date.now();
267
+ (j = e.onSuccess) == null || j.call(e, { content: E, model: S, timestamp: v }), (G = e.onComplete) == null || G.call(e, { success: !0, content: E, model: S, timestamp: v }), (z = e.onAIEvent) == null || z.call(e, {
268
+ type: "completion",
269
+ content: E,
270
+ model: S,
271
+ timestamp: v
272
+ });
273
+ }), k));
274
+ } catch (A) {
275
+ if (A.name !== "AbortError") {
276
+ const W = {
277
+ id: (Date.now() + 1).toString(),
278
+ role: "assistant",
279
+ content: I("Sorry, I encountered an error. Please try again.")
280
+ };
281
+ C((y) => [...y, W]), Q(() => {
282
+ var D, E, v;
283
+ const y = A instanceof Error ? A.message : String(A), k = Date.now();
284
+ (D = e.onError) == null || D.call(e, { error: y, model: S, timestamp: k }), (E = e.onComplete) == null || E.call(e, { success: !1, error: y, model: S, timestamp: k }), (v = e.onAIEvent) == null || v.call(e, { type: "error", error: y, model: S, timestamp: k });
285
+ });
286
+ }
287
+ } finally {
288
+ N(""), H(!1), B(null), T(null);
289
+ }
290
+ };
291
+ return /* @__PURE__ */ R(X, { children: [
292
+ /* @__PURE__ */ R(st, { className: "no-scrollbar", children: [
293
+ /* @__PURE__ */ R(ot, { className: "gap-2 px-0", children: [
294
+ x.length === 0 && /* @__PURE__ */ m(
295
+ at,
296
+ {
297
+ icon: /* @__PURE__ */ m(At, { size: 48, className: "text-gray-300" }),
298
+ title: "Start a conversation",
299
+ description: I("Start a conversation with the AI assistant to add/edit current page")
300
+ }
301
+ ),
302
+ x.map(
303
+ (r) => r.role !== "system" && /* @__PURE__ */ m(yt, { children: r.isReasoning ? /* @__PURE__ */ R(it, { isStreaming: r.isStreaming, defaultOpen: !0, children: [
304
+ /* @__PURE__ */ m(ct, { className: "text-xs [&_p]:text-muted-foreground" }),
305
+ /* @__PURE__ */ m(lt, { className: "p-0 text-xs", children: r.content })
306
+ ] }) : r.isTask && !r.isTaskCompleted ? /* @__PURE__ */ m(ut, { content: r.content, isLoading: r.isTaskLoading }) : /* @__PURE__ */ m(dt, { from: r.role, children: /* @__PURE__ */ m(mt, { className: "p-0", children: r.role === "assistant" ? /* @__PURE__ */ m(ft, { className: "p-0 text-xs", children: r.content }) : /* @__PURE__ */ m("div", { className: "p-0 text-xs", children: r.userMessage || r.content }) }) }) }, r.id)
307
+ )
308
+ ] }),
309
+ /* @__PURE__ */ m(pt, {})
310
+ ] }),
311
+ /* @__PURE__ */ R("div", { className: "border-gray-200 pb-2", children: [
312
+ /* @__PURE__ */ m(ht, { onRemove: () => f([]), isLoading: w }),
313
+ /* @__PURE__ */ m(It, { fallback: /* @__PURE__ */ m("div", { children: "Loading..." }), children: /* @__PURE__ */ m(
314
+ Bt,
315
+ {
316
+ input: b,
317
+ setInput: N,
318
+ onSend: M,
319
+ onStop: d,
320
+ isLoading: w,
321
+ selectedLang: "",
322
+ currentBlock: s || P,
323
+ disabled: (b == null ? void 0 : b.length) === 0,
324
+ selectedModel: u,
325
+ onModelChange: o
326
+ }
327
+ ) })
328
+ ] })
329
+ ] });
330
+ };
331
+ export {
332
+ Ft as default
333
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),T=require("./index-DCJDQs1a.cjs"),p=require("./selected-block-display-CAFEOrLV.cjs"),Z=require("lucide-react"),C=require("react"),ee=require("sonner"),J=require("./index-BVwFJWDq.cjs"),X=require("./apply-binding-CBSjMYSk.cjs"),te=require("@tanstack/react-query"),ne=()=>{const{addPredefinedBlock:b}=T.useAddBlock(),W=T.useReplaceBlock(),S=T.useRemoveBlocks(),N=te.useQueryClient(),H=async(o,n)=>{if(!n)return;const t=X.getBlocksFromHTML(n);await b(t,o.parentId,o.position)},w=async(o,n)=>{if(!o.blockId||!n)return;const t=X.getBlocksFromHTML(n);await W(o.blockId,t)},x=async o=>{!o.ids||o.ids.length===0||await S(o.ids)};let m=null;const q=(o,n)=>{const t=document.getElementById("canvas-iframe");if(!t)return null;const u=t==null?void 0:t.contentDocument;if(!u)return null;u.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());let s=null;if(o&&o!=="undefined"&&(s=u.querySelector(`[data-block-id="${o}"]`)),s||(s=u.body),!s)return null;if(m=u.createElement("div"),m.setAttribute("data-stream-canvas","true"),n!==void 0&&n>=0&&s.children){const f=Math.min(n,s.children.length);f<s.children.length?s.insertBefore(m,s.children[f]):s.appendChild(m)}else s.appendChild(m);return m},F=o=>{var s;const n=document.getElementById("canvas-iframe");if(!n)return null;const t=n==null?void 0:n.contentDocument;if(!t)return null;t.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());const d=t.querySelector(`[data-block-id="${o}"]`);return d?(m=t.createElement("div"),m.setAttribute("data-stream-canvas","true"),(s=d.parentNode)==null||s.insertBefore(m,d.nextSibling),d.style.display="none",m):null},L=o=>{const n=document.getElementById("canvas-iframe");(n==null?void 0:n.contentWindow)&&o.scrollIntoView({behavior:"smooth",block:"end"})},M=(o,n,t)=>{const u=q(n,t);u&&(u.innerHTML=o,L(u))},D=(o,n)=>{const t=F(n);t&&(t.innerHTML=o,L(t))},O=o=>{const n=o.match(/^--ACTION=(.+)--$/);if(!n)return null;let u=n[1].replace(/--/g,"").split("|");const s={type:u[0]};return u.forEach(f=>{const e=f.trim();if(e.startsWith("PARENT=")){const A=e.substring(7);s.parentId=A==="undefined"?void 0:A}else e.startsWith("POS=")?s.position=parseInt(e.substring(4)):e.startsWith("ID=")?s.blockId=e.substring(3):e.startsWith("IDS=")&&(s.ids=e.substring(4).split(",").map(A=>A.trim()))}),s};return C.useCallback(async(o,n)=>{const t=new TextDecoder;let u="",d="",s=!1,f=null;const e={isInAction:!1,currentAction:null,htmlBuffer:"",isCapturingHtml:!1},A=async r=>{const i=r.trim();if(i==="--START--"){s=!0;return}if(s){if(i==="--END--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),m&&(m.remove(),m=null);return}if(i.startsWith("--THINKING=")){const a=i.substring(11);n(l=>{const h=[...l],g=h[h.length-1];if(g&&g.role==="assistant"&&g.isReasoning)g.content=a,g.isStreaming=!1;else{const $={id:Date.now().toString(),role:"assistant",content:a,isReasoning:!0,isStreaming:!1};h.push($)}return h});return}if(i.startsWith("--TASK=")){const a=i.substring(7),l=`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,h={id:l,role:"assistant",content:a.replace(/--$/,""),isTask:!0,isTaskLoading:!0,isTaskCompleted:!1};f=l,n(g=>[...g,h]);return}if(i.startsWith("--MSG=")){const a=i.substring(6),l={id:Date.now().toString(),role:"assistant",content:a.replace(/--$/g,""),isReasoning:!1,isStreaming:!1};n(h=>[...h,l]);return}if(i.startsWith("--ACTION=")){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),e.currentAction=O(i),e.htmlBuffer="",e.isInAction=!0;return}if(i==="--ENDACTION--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),f&&(n(a=>a.map(l=>l.isTask?{...l,isTaskCompleted:!0}:l)),f=null),e.currentAction=null,e.htmlBuffer="",e.isInAction=!1;return}if(i==="--HTML--"){e.isCapturingHtml=!0;return}if(i==="--ENDHTML--"){e.isCapturingHtml=!1;return}if(i.startsWith("--HTML--")&&i.includes("--ENDHTML--")){const a=i.match(/^--HTML--(.+?)--ENDHTML--$/);if(a&&e.currentAction){const l=a[1];e.htmlBuffer+=l,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId)}return}e.isCapturingHtml&&e.currentAction&&(e.htmlBuffer+=r+`
2
+ `,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId))}},R=async(r,i)=>{try{switch(r.type){case"ADD":await H(r,i);break;case"EDIT":await w(r,i);break;case"REMOVE":await x(r);break}n(a=>a.filter(l=>!l.isTask))}catch(a){console.log(a)}};try{for(;;){const{done:r,value:i}=await o.read();if(r)break;const a=t.decode(i,{stream:!0});u+=a,d+=a;const l=d.split(`
3
+ `);d=l.pop()||"";for(const h of l)await A(h)}d&&await A(d),N.invalidateQueries({queryKey:["AI_USAGE"]})}catch(r){console.log(r)}},[S])},re=C.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-nZ5_Dm7X.cjs"))),se=({t:b,fetch:W,input:S,messages:N,setInput:H,isLoading:w,setMessages:x,handleStop:m,setIsLoading:q,currentBlock:F,fallbackLang:L,setCurrentBlock:M,setAbortController:D,selectedModel:O,onModelChange:o})=>{const{models:n}=J.useAIModels(),t=J.useAIConfig(),u=n.find(r=>r.id==="google/gemini-3-flash")||n[0],d=O||u.id,s=T.useSelectedBlock(),[,f]=T.useSelectedBlockIds(),e=T.useBlocksHtmlForAi(),A=ne(),R=async(r,i,a,l)=>{var _,K;if(!r||w)return;M(s);const h=e(s?{blockId:s._id,additionalCoreBlocks:["Icon"]}:{additionalCoreBlocks:["Icon"]});if(s&&!h){ee.toast.error(b("Something went wrong. Please try again."));return}const g={id:Date.now().toString(),role:"user",content:p.getUserPrompt({language:L,userInput:i||r,currentHtml:h}),userMessage:r},$={id:(Date.now()+1).toString(),role:"assistant",content:"",isReasoning:!0,isStreaming:!0};x(k=>[...k,g,$]),q(!0);const Y=new AbortController;D(Y);const v=l||d;(_=t.onAIEvent)==null||_.call(t,{type:"stream_start",model:v,timestamp:Date.now()});try{const k={messages:[g].map(y=>({role:y.role,content:y.content})),model:l||d,context:t.context};a&&(k.image=a);const P=await W({body:{action:"ASK_AI",data:k},streamResponse:!0});if(!P.ok)throw new Error(b("Failed to get AI response"));const I=(K=P.body)==null?void 0:K.getReader();if(!I)throw new Error(b("Response body is not readable"));await A(I,x),x(y=>(C.startTransition(()=>{var G,Q,z,U;const j=y.filter(V=>V.role==="assistant"&&!V.isReasoning&&!V.isTask),B=((G=j[j.length-1])==null?void 0:G.content)||"",E=Date.now();(Q=t.onSuccess)==null||Q.call(t,{content:B,model:v,timestamp:E}),(z=t.onComplete)==null||z.call(t,{success:!0,content:B,model:v,timestamp:E}),(U=t.onAIEvent)==null||U.call(t,{type:"completion",content:B,model:v,timestamp:E})}),y))}catch(k){if(k.name!=="AbortError"){const P={id:(Date.now()+1).toString(),role:"assistant",content:b("Sorry, I encountered an error. Please try again.")};x(I=>[...I,P]),C.startTransition(()=>{var j,B,E;const I=k instanceof Error?k.message:String(k),y=Date.now();(j=t.onError)==null||j.call(t,{error:I,model:v,timestamp:y}),(B=t.onComplete)==null||B.call(t,{success:!1,error:I,model:v,timestamp:y}),(E=t.onAIEvent)==null||E.call(t,{type:"error",error:I,model:v,timestamp:y})})}}finally{H(""),q(!1),M(null),D(null)}};return c.jsxs(c.Fragment,{children:[c.jsxs(p.Conversation,{className:"no-scrollbar",children:[c.jsxs(p.ConversationContent,{className:"gap-2 px-0",children:[N.length===0&&c.jsx(p.ConversationEmptyState,{icon:c.jsx(Z.Bot,{size:48,className:"text-gray-300"}),title:"Start a conversation",description:b("Start a conversation with the AI assistant to add/edit current page")}),N.map(r=>r.role!=="system"&&c.jsx(C.Fragment,{children:r.isReasoning?c.jsxs(p.Reasoning,{isStreaming:r.isStreaming,defaultOpen:!0,children:[c.jsx(p.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),c.jsx(p.ReasoningContent,{className:"p-0 text-xs",children:r.content})]}):r.isTask&&!r.isTaskCompleted?c.jsx(p.TaskMessage,{content:r.content,isLoading:r.isTaskLoading}):c.jsx(p.Message,{from:r.role,children:c.jsx(p.MessageContent,{className:"p-0",children:r.role==="assistant"?c.jsx(p.MessageResponse,{className:"p-0 text-xs",children:r.content}):c.jsx("div",{className:"p-0 text-xs",children:r.userMessage||r.content})})})},r.id))]}),c.jsx(p.ConversationScrollButton,{})]}),c.jsxs("div",{className:"border-gray-200 pb-2",children:[c.jsx(p.SelectedBlockDisplay,{onRemove:()=>f([]),isLoading:w}),c.jsx(C.Suspense,{fallback:c.jsx("div",{children:"Loading..."}),children:c.jsx(re,{input:S,setInput:H,onSend:R,onStop:m,isLoading:w,selectedLang:"",currentBlock:s||F,disabled:(S==null?void 0:S.length)===0,selectedModel:d,onModelChange:o})})]})]})};exports.default=se;
@@ -0,0 +1,148 @@
1
+ import { jsxs as g, Fragment as L, jsx as s } from "react/jsx-runtime";
2
+ import { r as ee, a as te, s as se, t as oe } from "./index-OuHV9Ann.js";
3
+ import { C as ne, a as re, b as ae, R as le, c as ce, d as ie, T as de, M as me, e as ue, f as he, S as pe, g as Se } from "./selected-block-display-CidmQ-wz.js";
4
+ import { Bot as ye } from "lucide-react";
5
+ import { useRef as Te, useEffect as ke, Suspense as P, lazy as _, Fragment as ge, startTransition as F } from "react";
6
+ import { useTranslation as fe } from "react-i18next";
7
+ import { l as we, m as xe } from "./index-LBTm1Jmk.js";
8
+ const Ae = _(() => import("./ai-translation-prompt-1OUs1P7n.js")), Me = _(() => import("./ai-prompt-input-7iWk72w5.js")), Ce = ({
9
+ fetch: j,
10
+ input: m,
11
+ messages: f,
12
+ setInput: A,
13
+ isLoading: u,
14
+ handleStop: z,
15
+ setMessages: M,
16
+ setIsLoading: w,
17
+ selectedLang: h,
18
+ currentBlock: U,
19
+ fallbackLang: q,
20
+ abortController: x,
21
+ setAbortController: J,
22
+ setCurrentBlock: N,
23
+ selectedModel: K,
24
+ onModelChange: V
25
+ }) => {
26
+ const { t: r } = fe(), { models: b } = we(), t = xe(), W = b.find((e) => e.id === "google/gemini-3-flash") || b[0], E = K || W.id, $ = Te(null), p = ee(), [, G] = te(), R = se(), H = oe(), Q = () => {
27
+ var e;
28
+ (e = $.current) == null || e.scrollIntoView({ behavior: "smooth" });
29
+ };
30
+ ke(() => {
31
+ Q();
32
+ }, [f, u]);
33
+ const v = async (e, B, X) => {
34
+ var D, O;
35
+ p && N(p);
36
+ const I = (e == null ? void 0 : e.toLowerCase()) === "translate", C = {
37
+ id: Date.now().toString(),
38
+ role: "user",
39
+ content: Se({
40
+ fallbackLang: q,
41
+ userInput: B || e,
42
+ language: h,
43
+ blocks: I ? R() : R(h)
44
+ }),
45
+ userMessage: B || e || r("Translate the content")
46
+ }, Y = {
47
+ id: (Date.now() + 1).toString(),
48
+ role: "assistant",
49
+ content: "Thinking...",
50
+ isReasoning: !0,
51
+ isStreaming: !0
52
+ };
53
+ w(!0);
54
+ const Z = new AbortController();
55
+ J(Z), M((a) => [...a, C, Y]), w(!0);
56
+ const n = X || E;
57
+ (D = t.onAIEvent) == null || D.call(t, { type: "stream_start", model: n, timestamp: Date.now() });
58
+ try {
59
+ const a = {
60
+ messages: [C],
61
+ initiator: I ? "TRANSLATE_CONTENT" : "UPDATE_CONTENT",
62
+ model: n,
63
+ context: t.context
64
+ }, l = await j({ body: { action: "ASK_AI", data: a }, streamResponse: !0 });
65
+ if (!l.ok)
66
+ throw new Error(r("Failed to get AI response"));
67
+ const c = (O = l.body) == null ? void 0 : O.getReader(), S = new TextDecoder();
68
+ let o = "";
69
+ if (!c) throw new Error(r("Response body is not readable"));
70
+ for (; ; ) {
71
+ const { done: d, value: T } = await c.read();
72
+ if (d)
73
+ break;
74
+ const k = S.decode(T, { stream: !0 });
75
+ o += k, M((i) => (i[i.length - 1].content = o, [...i]));
76
+ }
77
+ const y = JSON.parse(o == null ? void 0 : o.replace("```json", "").replace("```", ""));
78
+ H(y), F(() => {
79
+ var T, k, i;
80
+ const d = Date.now();
81
+ (T = t.onSuccess) == null || T.call(t, { content: o, model: n, timestamp: d }), (k = t.onComplete) == null || k.call(t, { success: !0, content: o, model: n, timestamp: d }), (i = t.onAIEvent) == null || i.call(t, {
82
+ type: "completion",
83
+ content: o,
84
+ model: n,
85
+ timestamp: d
86
+ });
87
+ });
88
+ } catch (a) {
89
+ x == null || x.abort(), F(() => {
90
+ var S, o, y;
91
+ const l = a instanceof Error ? a.message : String(a), c = Date.now();
92
+ (S = t.onError) == null || S.call(t, { error: l, model: n, timestamp: c }), (o = t.onComplete) == null || o.call(t, { success: !1, error: l, model: n, timestamp: c }), (y = t.onAIEvent) == null || y.call(t, { type: "error", error: l, model: n, timestamp: c });
93
+ });
94
+ } finally {
95
+ w(!1), A(""), N(null);
96
+ }
97
+ };
98
+ return /* @__PURE__ */ g(L, { children: [
99
+ /* @__PURE__ */ s("div", { className: "py-2", children: /* @__PURE__ */ s(P, { fallback: /* @__PURE__ */ s("div", { children: r("Loading...") }), children: /* @__PURE__ */ s(
100
+ Ae,
101
+ {
102
+ isLoading: u,
103
+ selectedBlock: p,
104
+ selectedLang: h,
105
+ onClick: v
106
+ }
107
+ ) }) }),
108
+ /* @__PURE__ */ s(ne, { children: /* @__PURE__ */ g(re, { className: "gap-4 px-0", children: [
109
+ f.length === 0 && /* @__PURE__ */ s(
110
+ ae,
111
+ {
112
+ icon: /* @__PURE__ */ s(ye, { size: 48, className: "text-gray-300" }),
113
+ title: r("Start a conversation with the AI assistant to translate/edit your content"),
114
+ description: r(
115
+ "Only content can be edited in secondary languages. To edit layout, styles and more, switch to the default language."
116
+ )
117
+ }
118
+ ),
119
+ f.map(
120
+ (e) => e.role !== "system" && /* @__PURE__ */ s(ge, { children: e.isReasoning ? /* @__PURE__ */ g(le, { isStreaming: e.isStreaming, defaultOpen: !0, children: [
121
+ /* @__PURE__ */ s(ce, { className: "text-xs [&_p]:text-muted-foreground" }),
122
+ /* @__PURE__ */ s(ie, { className: "p-0 text-xs", children: e.content })
123
+ ] }) : e.isTask ? /* @__PURE__ */ s(de, { content: e.content, isLoading: e.isTaskLoading }) : /* @__PURE__ */ s(me, { from: e.role, children: /* @__PURE__ */ s(ue, { className: "p-0", children: e.role === "assistant" ? /* @__PURE__ */ s(he, { className: "p-0 text-xs", children: e.content }) : /* @__PURE__ */ s("div", { className: "p-0 text-xs", children: e.userMessage || e.content }) }) }) }, e.id)
124
+ )
125
+ ] }) }),
126
+ /* @__PURE__ */ g("div", { className: "border-gray-200 pb-2", children: [
127
+ /* @__PURE__ */ s(pe, { onRemove: () => G([]), isLoading: u }),
128
+ /* @__PURE__ */ s(P, { fallback: /* @__PURE__ */ s("div", { children: r("Loading...") }), children: /* @__PURE__ */ s(
129
+ Me,
130
+ {
131
+ input: m,
132
+ setInput: A,
133
+ onSend: v,
134
+ onStop: z,
135
+ isLoading: u,
136
+ selectedLang: h,
137
+ currentBlock: p || U,
138
+ disabled: (m == null ? void 0 : m.length) === 0,
139
+ selectedModel: E,
140
+ onModelChange: V
141
+ }
142
+ ) })
143
+ ] })
144
+ ] });
145
+ };
146
+ export {
147
+ Ce as default
148
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),g=require("./index-DCJDQs1a.cjs"),n=require("./selected-block-display-CAFEOrLV.cjs"),L=require("lucide-react"),r=require("react"),ee=require("react-i18next"),O=require("./index-BVwFJWDq.cjs"),te=r.lazy(()=>Promise.resolve().then(()=>require("./ai-translation-prompt-B16cK-1Q.cjs"))),se=r.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-nZ5_Dm7X.cjs"))),ne=({fetch:_,input:x,messages:w,setInput:b,isLoading:m,handleStop:F,setMessages:A,setIsLoading:v,selectedLang:j,currentBlock:z,fallbackLang:U,abortController:R,setAbortController:J,setCurrentBlock:M,selectedModel:K,onModelChange:V})=>{const{t:l}=ee.useTranslation(),{models:N}=O.useAIModels(),s=O.useAIConfig(),W=N.find(e=>e.id==="google/gemini-3-flash")||N[0],E=K||W.id,G=r.useRef(null),p=g.useSelectedBlock(),[,H]=g.useSelectedBlockIds(),B=g.useI18nBlocks(),Q=g.useStreamMultipleBlocksProps(),X=()=>{var e;(e=G.current)==null||e.scrollIntoView({behavior:"smooth"})};r.useEffect(()=>{X()},[w,m]);const I=async(e,f,Y)=>{var C,D;p&&M(p);const q=(e==null?void 0:e.toLowerCase())==="translate",P={id:Date.now().toString(),role:"user",content:n.getTranslationUserPrompt({fallbackLang:U,userInput:f||e,language:j,blocks:q?B():B(j)}),userMessage:f||e||l("Translate the content")},Z={id:(Date.now()+1).toString(),role:"assistant",content:"Thinking...",isReasoning:!0,isStreaming:!0};v(!0);const $=new AbortController;J($),A(c=>[...c,P,Z]),v(!0);const a=Y||E;(C=s.onAIEvent)==null||C.call(s,{type:"stream_start",model:a,timestamp:Date.now()});try{const c={messages:[P],initiator:q?"TRANSLATE_CONTENT":"UPDATE_CONTENT",model:a,context:s.context},i=await _({body:{action:"ASK_AI",data:c},streamResponse:!0});if(!i.ok)throw new Error(l("Failed to get AI response"));const d=(D=i.body)==null?void 0:D.getReader(),y=new TextDecoder;let o="";if(!d)throw new Error(l("Response body is not readable"));for(;;){const{done:h,value:T}=await d.read();if(h)break;const k=y.decode(T,{stream:!0});o+=k,A(u=>(u[u.length-1].content=o,[...u]))}const S=JSON.parse(o==null?void 0:o.replace("```json","").replace("```",""));Q(S),r.startTransition(()=>{var T,k,u;const h=Date.now();(T=s.onSuccess)==null||T.call(s,{content:o,model:a,timestamp:h}),(k=s.onComplete)==null||k.call(s,{success:!0,content:o,model:a,timestamp:h}),(u=s.onAIEvent)==null||u.call(s,{type:"completion",content:o,model:a,timestamp:h})})}catch(c){R==null||R.abort(),r.startTransition(()=>{var y,o,S;const i=c instanceof Error?c.message:String(c),d=Date.now();(y=s.onError)==null||y.call(s,{error:i,model:a,timestamp:d}),(o=s.onComplete)==null||o.call(s,{success:!1,error:i,model:a,timestamp:d}),(S=s.onAIEvent)==null||S.call(s,{type:"error",error:i,model:a,timestamp:d})})}finally{v(!1),b(""),M(null)}};return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"py-2",children:t.jsx(r.Suspense,{fallback:t.jsx("div",{children:l("Loading...")}),children:t.jsx(te,{isLoading:m,selectedBlock:p,selectedLang:j,onClick:I})})}),t.jsx(n.Conversation,{children:t.jsxs(n.ConversationContent,{className:"gap-4 px-0",children:[w.length===0&&t.jsx(n.ConversationEmptyState,{icon:t.jsx(L.Bot,{size:48,className:"text-gray-300"}),title:l("Start a conversation with the AI assistant to translate/edit your content"),description:l("Only content can be edited in secondary languages. To edit layout, styles and more, switch to the default language.")}),w.map(e=>e.role!=="system"&&t.jsx(r.Fragment,{children:e.isReasoning?t.jsxs(n.Reasoning,{isStreaming:e.isStreaming,defaultOpen:!0,children:[t.jsx(n.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),t.jsx(n.ReasoningContent,{className:"p-0 text-xs",children:e.content})]}):e.isTask?t.jsx(n.TaskMessage,{content:e.content,isLoading:e.isTaskLoading}):t.jsx(n.Message,{from:e.role,children:t.jsx(n.MessageContent,{className:"p-0",children:e.role==="assistant"?t.jsx(n.MessageResponse,{className:"p-0 text-xs",children:e.content}):t.jsx("div",{className:"p-0 text-xs",children:e.userMessage||e.content})})})},e.id))]})}),t.jsxs("div",{className:"border-gray-200 pb-2",children:[t.jsx(n.SelectedBlockDisplay,{onRemove:()=>H([]),isLoading:m}),t.jsx(r.Suspense,{fallback:t.jsx("div",{children:l("Loading...")}),children:t.jsx(se,{input:x,setInput:b,onSend:I,onStop:F,isLoading:m,selectedLang:j,currentBlock:p||z,disabled:(x==null?void 0:x.length)===0,selectedModel:E,onModelChange:V})})]})]})};exports.default=ne;