@oneclick.dev/cms-core-modules 0.0.122 → 0.0.124

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 (162) hide show
  1. package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
  2. package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
  3. package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
  4. package/dist/Detail-BESGmY7z.js +1 -0
  5. package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
  6. package/dist/Detail-CNiLIEh9.js +1 -0
  7. package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
  8. package/dist/Detail-t3tOcy3X.js +1 -0
  9. package/dist/Editor-D4evcdhv.mjs +768 -0
  10. package/dist/Editor-gLLtuJbY.js +1 -0
  11. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
  12. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
  13. package/dist/Knowledge-B66vxz--.js +1 -0
  14. package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
  15. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
  16. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
  17. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
  18. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
  19. package/dist/Overview-BE4uYPx0.mjs +745 -0
  20. package/dist/Overview-CQRpFhbJ.mjs +286 -0
  21. package/dist/Overview-CTs7sX4d.js +1 -0
  22. package/dist/Overview-Cj89XXKN.js +1 -0
  23. package/dist/Overview-D_c18mbR.mjs +248 -0
  24. package/dist/Overview-g4Rcj245.js +1 -0
  25. package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
  26. package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
  27. package/dist/TableDataWidget-7qvC3Egd.js +1 -0
  28. package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
  29. package/dist/TableOverviewCard-AFq-puJs.js +1 -0
  30. package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
  31. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
  32. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
  33. package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
  34. package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
  35. package/dist/TableView-6mdrL3zx.js +4 -0
  36. package/dist/TableView-Du5nOE6R.mjs +8228 -0
  37. package/dist/Test-CzmOmi53.mjs +447 -0
  38. package/dist/Test-USDtNFY1.js +1 -0
  39. package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
  40. package/dist/UserDetail-KRIfxaYd.js +1 -0
  41. package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
  42. package/dist/agenda-r9Gl85GL.js +1 -0
  43. package/dist/cms-core-modules.css +1 -1
  44. package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
  45. package/dist/dateRangePresets-CPWqst_x.js +1 -0
  46. package/dist/fuse-Deb-Iq39.mjs +1473 -0
  47. package/dist/fuse-_CGUd5Zq.js +1 -0
  48. package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
  49. package/dist/index-CQuN5rKx.js +1 -0
  50. package/dist/index-CnDGeInm.js +1 -0
  51. package/dist/index-CqDTc5Ig.mjs +20 -0
  52. package/dist/index-CyvvAdt4.js +1 -0
  53. package/dist/index-DIRD7t5_.mjs +20 -0
  54. package/dist/index-OJuBYR60.mjs +57 -0
  55. package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
  56. package/dist/index.cjs.js +1 -1
  57. package/dist/index.mjs +671 -118
  58. package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
  59. package/dist/orders-DUa2PVoa.js +1 -0
  60. package/dist/reports-ChCsd1Gk.mjs +1107 -0
  61. package/dist/reports-DmJPm8uP.js +158 -0
  62. package/dist/row-item-C1dUyimV.mjs +204 -0
  63. package/dist/row-item-Cyo3m3MZ.js +1 -0
  64. package/dist/server-handlers.cjs.js +1 -1
  65. package/dist/server-handlers.mjs +1764 -605
  66. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
  67. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
  68. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
  69. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
  70. package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
  71. package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
  72. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
  73. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
  74. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
  75. package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
  76. package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
  77. package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
  78. package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
  79. package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
  80. package/dist/src/firebaseAuthManager/config.d.ts +151 -0
  81. package/dist/src/firebaseAuthManager/index.d.ts +163 -0
  82. package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
  83. package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
  84. package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
  85. package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
  86. package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
  87. package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
  88. package/dist/src/firebaseAuthManager/server.d.ts +162 -0
  89. package/dist/src/firebaseAuthManager/types.d.ts +84 -0
  90. package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
  91. package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
  92. package/dist/src/formBuilder/config.d.ts +31 -0
  93. package/dist/src/formBuilder/index.d.ts +44 -0
  94. package/dist/src/formBuilder/index.vue.d.ts +14 -0
  95. package/dist/src/formBuilder/lib/forms.d.ts +11 -0
  96. package/dist/src/formBuilder/metadata.d.ts +2 -0
  97. package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
  98. package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
  99. package/dist/src/formBuilder/permissions.d.ts +5 -0
  100. package/dist/src/formBuilder/routes.d.ts +5 -0
  101. package/dist/src/formBuilder/server.d.ts +87 -0
  102. package/dist/src/formBuilder/tools.d.ts +1 -0
  103. package/dist/src/formBuilder/types.d.ts +46 -0
  104. package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
  105. package/dist/src/helpbot/config.d.ts +17 -0
  106. package/dist/src/helpbot/index.d.ts +29 -0
  107. package/dist/src/helpbot/index.vue.d.ts +2 -0
  108. package/dist/src/helpbot/metadata.d.ts +2 -0
  109. package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
  110. package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
  111. package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
  112. package/dist/src/helpbot/permissions.d.ts +5 -0
  113. package/dist/src/helpbot/routes.d.ts +5 -0
  114. package/dist/src/helpbot/types.d.ts +42 -0
  115. package/dist/src/index.d.ts +3 -0
  116. package/dist/src/server-handlers.d.ts +2 -0
  117. package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
  118. package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
  119. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
  120. package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
  121. package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
  122. package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
  123. package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
  124. package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
  125. package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
  126. package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
  127. package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
  128. package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
  129. package/dist/src/table/index.d.ts +339 -0
  130. package/dist/src/table/tool-sandbox.d.ts +13 -0
  131. package/dist/src/table/tool-utils.d.ts +11 -0
  132. package/dist/src/table/tools.d.ts +333 -1
  133. package/dist/src/table/types.d.ts +79 -0
  134. package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
  135. package/dist/tool-sandbox-DoF1PsyS.js +115 -0
  136. package/dist/types-9N-DKxNj.mjs +250 -0
  137. package/dist/types-BMraG1kN.js +1 -0
  138. package/dist/types-Cem0vPo_.js +1 -0
  139. package/dist/types-ibC3-e1N.mjs +2630 -0
  140. package/dist/useHelpbotApi-BIIungOh.js +1 -0
  141. package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
  142. package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
  143. package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
  144. package/dist/vee-validate-zod-BQElPD0m.js +1 -0
  145. package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
  146. package/package.json +17 -17
  147. package/src/formBuilder/tools.ts +1 -0
  148. package/src/table/tools.ts +304 -1
  149. package/dist/Detail-BCUUNWvp.js +0 -1
  150. package/dist/Detail-DGg_xXZc.js +0 -1
  151. package/dist/Detail-Sc2qZdxj.js +0 -1
  152. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
  153. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
  154. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
  155. package/dist/TableView-Ctnep-Qu.mjs +0 -6247
  156. package/dist/TableView-DJqyJL9L.js +0 -4
  157. package/dist/agenda-B54F8cEr.js +0 -1
  158. package/dist/orders-BMosTk6r.js +0 -1
  159. package/dist/reports-BQT_GZzU.js +0 -158
  160. package/dist/reports-DksZCTOw.mjs +0 -837
  161. package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
  162. package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
@@ -0,0 +1,266 @@
1
+ import { defineComponent as Y, ref as c, onMounted as ee, openBlock as d, createElementBlock as b, createVNode as h, unref as w, createElementVNode as l, toDisplayString as y, createCommentVNode as z, createBlock as N, createTextVNode as te } from "vue";
2
+ import { Loader2 as I, CheckCircle2 as re, XCircle as le, AlertTriangle as j, Play as oe } from "lucide-vue-next";
3
+ import { u as se } from "./useTableAgentTools-DcN3kYRL.mjs";
4
+ import { _ as ae, b as B, s as L, i as O, r as ne, a as M } from "./TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs";
5
+ import { r as ie } from "./tool-sandbox-DdkMLkDK.mjs";
6
+ const ue = { class: "w-full" }, ce = {
7
+ key: 0,
8
+ class: "flex items-center gap-2 py-3 text-xs text-muted-foreground"
9
+ }, de = {
10
+ key: 1,
11
+ class: "rounded-xl border bg-background p-4"
12
+ }, ve = { class: "flex items-center gap-2 text-sm font-semibold text-emerald-600 dark:text-emerald-400" }, fe = {
13
+ key: 2,
14
+ class: "rounded-xl border bg-background p-4"
15
+ }, me = { class: "flex items-center gap-2 text-sm font-semibold text-muted-foreground" }, pe = {
16
+ key: 3,
17
+ class: "flex items-start gap-2 rounded-xl border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive"
18
+ }, be = {
19
+ key: 4,
20
+ class: "overflow-hidden rounded-xl border bg-background"
21
+ }, ge = { class: "border-b bg-amber-50/70 p-4 dark:bg-amber-950/20" }, we = { class: "flex items-start gap-3" }, xe = { class: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-amber-500/15" }, he = { class: "min-w-0" }, ye = { class: "text-sm font-semibold" }, _e = {
22
+ key: 0,
23
+ class: "mt-1 text-[11px] text-muted-foreground"
24
+ }, Ae = { class: "p-3" }, Re = {
25
+ key: 0,
26
+ class: "mt-3 text-xs text-destructive"
27
+ }, ke = { class: "mt-3 flex items-center gap-2" }, Ce = ["disabled"], Te = ["disabled"], Ne = /* @__PURE__ */ Y({
28
+ __name: "TableRowActionCard",
29
+ props: {
30
+ projectSlug: {},
31
+ toolName: {},
32
+ instanceId: {},
33
+ instanceName: {},
34
+ moduleType: {},
35
+ resolvedArgs: {},
36
+ status: {}
37
+ },
38
+ emits: ["submit"],
39
+ setup(P, { emit: V }) {
40
+ const o = P, q = V, _ = c(!0), p = c(!1), u = c(null), v = c("confirm"), s = c(null), D = c(-1), a = c(null), x = c([]), f = c(null), C = c(null), { loadRows: Z, runStoredRowAction: F } = se(o);
41
+ function U(e, t) {
42
+ const n = e.filter((m) => m.id === t);
43
+ if (n.length === 1) return n[0];
44
+ const i = t.trim().toLocaleLowerCase(), r = e.filter((m) => String(m.label).trim().toLocaleLowerCase() === i);
45
+ if (r.length === 1) return r[0];
46
+ throw r.length > 1 ? new Error(`More than one row action is named "${t}". Use its action ID.`) : new Error(`No configured row action matches "${t}".`);
47
+ }
48
+ async function X(e, t) {
49
+ if (e.visible === void 0 || e.visible === null || e.visible === "" || e.visible === !0 || e.visible === "true") return !0;
50
+ if (e.visible === !1 || e.visible === "false") return !1;
51
+ const i = String(e.visible).trim().match(/^\{\{([\s\S]*)\}\}$/);
52
+ if (!i) return !1;
53
+ const r = { item: { data: t } };
54
+ for (const [g, k] of Object.entries(t || {}))
55
+ /^[$A-Z_][0-9A-Z_$]*$/i.test(g) && !["constructor", "prototype", "__proto__"].includes(g) && (r[g] = k);
56
+ return await ie(
57
+ `const value = (${i[1]}); return value === true || value === 'true';`,
58
+ r,
59
+ { timeoutMs: 750, maxInputBytes: 1024 * 1024, maxOutputBytes: 1024 }
60
+ ) === !0;
61
+ }
62
+ function G() {
63
+ if (o.status !== "completed") return !1;
64
+ const e = o.resolvedArgs?._cachedData;
65
+ return !e || typeof e != "object" || Array.isArray(e) ? !1 : e.executed !== !0 && e.cancelled !== !0 && typeof e.error != "string" ? (u.value = "The saved row-action result is unavailable.", v.value = "error", _.value = !1, !0) : (C.value = e, s.value = e.row || null, x.value = e.columns || O(s.value ? [s.value] : []).slice(0, 8), u.value = e.error || null, v.value = e.cancelled ? "cancelled" : e.executed ? "success" : "error", _.value = !1, !0);
66
+ }
67
+ function R(e) {
68
+ let t;
69
+ try {
70
+ t = L(e, 256 * 1024);
71
+ } catch {
72
+ t = {
73
+ executed: e?.executed === !0,
74
+ cancelled: e?.cancelled === !0,
75
+ action: e?.action || null,
76
+ rowReference: e?.rowReference || null,
77
+ resultOmitted: "The detailed result was too large to store in chat."
78
+ };
79
+ }
80
+ C.value = t, o.status !== "completed" && q("submit", t);
81
+ }
82
+ function S(e) {
83
+ return Object.fromEntries(x.value.map((t) => [
84
+ t.property,
85
+ M(e, t.property)
86
+ ]));
87
+ }
88
+ function H() {
89
+ const e = String(o.resolvedArgs?.action || "").trim(), t = Array.isArray(o.resolvedArgs?.match) ? o.resolvedArgs.match : [];
90
+ if (!e) throw new Error("A configured row action ID or label is required.");
91
+ if (!t.length) throw new Error("At least one exact row match is required before an action can run.");
92
+ return { requestedAction: e, match: t };
93
+ }
94
+ async function $(e = !1) {
95
+ const { requestedAction: t, match: n } = H(), i = await Z({
96
+ startDate: o.resolvedArgs?.startDate,
97
+ endDate: o.resolvedArgs?.endDate,
98
+ dateProperty: o.resolvedArgs?.dateProperty,
99
+ useDefaultDateRange: o.resolvedArgs?.useDefaultDateRange
100
+ }, { freshMetadata: e }), r = U(i.actions, t), m = i.rows.filter((T) => n.every((A) => {
101
+ if (!A || typeof A.property != "string") return !1;
102
+ const W = ne(A.property, i.columns)?.property || A.property;
103
+ return Object.is(M(T, W), A.value);
104
+ }));
105
+ if (m.length !== 1) {
106
+ const T = m.length === 0 ? "No rows match" : `${m.length} rows match`;
107
+ throw new Error(`${T} the supplied identity. Refine the match until it identifies exactly one row.`);
108
+ }
109
+ const g = m[0], k = i.sourceRows.indexOf(g);
110
+ if (k < 0) throw new Error("The selected row could not be mapped back to the table data.");
111
+ if (!await X(r, g))
112
+ throw new Error(`The "${r.label}" action is not available for this row.`);
113
+ return { result: i, action: r, row: g, rowIndex: k };
114
+ }
115
+ function E(e) {
116
+ f.value = e.result, a.value = e.action, s.value = e.row, D.value = e.rowIndex;
117
+ const t = e.result.columns.length ? e.result.columns : O([e.row]);
118
+ x.value = t.filter((n) => n.visible !== !1 && !n._remove).slice(0, 8);
119
+ }
120
+ async function J() {
121
+ if (!G()) {
122
+ _.value = !0, u.value = null;
123
+ try {
124
+ E(await $());
125
+ } catch (e) {
126
+ u.value = e?.message || "Could not prepare the row action.", v.value = "error", R({
127
+ executed: !1,
128
+ error: u.value,
129
+ action: o.resolvedArgs?.action || null,
130
+ availableActions: f.value?.actions?.map((t) => ({ id: t.id, label: t.label })) || []
131
+ });
132
+ } finally {
133
+ _.value = !1;
134
+ }
135
+ }
136
+ }
137
+ async function K() {
138
+ if (!(p.value || !a.value || !s.value || !f.value)) {
139
+ p.value = !0, u.value = null;
140
+ try {
141
+ E(await $(!0));
142
+ const e = await F(
143
+ a.value,
144
+ s.value,
145
+ D.value,
146
+ f.value.sourceRows
147
+ ), t = B(s.value, f.value.rows, f.value.columns);
148
+ let n = null;
149
+ try {
150
+ n = L(e.flowResult ?? null, 64 * 1024);
151
+ } catch {
152
+ n = { omitted: "The flow result was too large to store in chat." };
153
+ }
154
+ const i = {
155
+ executed: !0,
156
+ cancelled: !1,
157
+ action: { id: a.value.id, label: a.value.label },
158
+ row: S(s.value),
159
+ rowReference: t,
160
+ columns: x.value.map((r) => ({
161
+ property: r.property,
162
+ label: r.label || r.property,
163
+ type: r.type || "text"
164
+ })),
165
+ flowResult: n,
166
+ tableEffects: e.effects.map((r) => ({
167
+ type: r.type,
168
+ index: r.index,
169
+ merge: r.merge
170
+ }))
171
+ };
172
+ v.value = "success", R(i);
173
+ } catch (e) {
174
+ u.value = e?.message || "The row action failed.", v.value = "error", R({
175
+ executed: !1,
176
+ cancelled: !1,
177
+ error: u.value,
178
+ action: a.value ? { id: a.value.id, label: a.value.label } : o.resolvedArgs?.action,
179
+ rowReference: s.value && f.value ? B(s.value, f.value.rows, f.value.columns) : null
180
+ });
181
+ } finally {
182
+ p.value = !1;
183
+ }
184
+ }
185
+ }
186
+ function Q() {
187
+ p.value || (v.value = "cancelled", R({
188
+ executed: !1,
189
+ cancelled: !0,
190
+ action: a.value ? { id: a.value.id, label: a.value.label } : o.resolvedArgs?.action,
191
+ row: s.value ? S(s.value) : null,
192
+ columns: x.value
193
+ }));
194
+ }
195
+ return ee(J), (e, t) => (d(), b("div", ue, [
196
+ _.value ? (d(), b("div", ce, [
197
+ h(w(I), { class: "size-4 animate-spin" }),
198
+ t[0] || (t[0] = l("span", null, "Finding the row and action…", -1))
199
+ ])) : v.value === "success" ? (d(), b("div", de, [
200
+ l("div", ve, [
201
+ h(w(re), { class: "size-5" }),
202
+ l("span", null, y(C.value?.action?.label || "Row action") + " completed", 1)
203
+ ]),
204
+ t[1] || (t[1] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, "The table’s configured action flow finished successfully.", -1))
205
+ ])) : v.value === "cancelled" ? (d(), b("div", fe, [
206
+ l("div", me, [
207
+ h(w(le), { class: "size-5" }),
208
+ t[2] || (t[2] = l("span", null, "Action cancelled", -1))
209
+ ]),
210
+ t[3] || (t[3] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, "No row action was run.", -1))
211
+ ])) : v.value === "error" ? (d(), b("div", pe, [
212
+ h(w(j), { class: "mt-0.5 size-4 shrink-0" }),
213
+ l("span", null, y(u.value), 1)
214
+ ])) : (d(), b("div", be, [
215
+ l("div", ge, [
216
+ l("div", we, [
217
+ l("div", xe, [
218
+ h(w(j), { class: "size-4 text-amber-600 dark:text-amber-400" })
219
+ ]),
220
+ l("div", he, [
221
+ l("p", ye, "Confirm “" + y(a.value?.label) + "”", 1),
222
+ t[4] || (t[4] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, " This runs the action flow configured on this table and may change external data. ", -1)),
223
+ o.resolvedArgs?.confirmationMessage ? (d(), b("p", _e, " Agent note: " + y(o.resolvedArgs.confirmationMessage), 1)) : z("", !0)
224
+ ])
225
+ ])
226
+ ]),
227
+ l("div", Ae, [
228
+ h(ae, {
229
+ title: "Selected row",
230
+ rows: s.value ? [s.value] : [],
231
+ columns: x.value,
232
+ view: "card",
233
+ "max-rows": 1
234
+ }, null, 8, ["rows", "columns"]),
235
+ u.value ? (d(), b("p", Re, y(u.value), 1)) : z("", !0),
236
+ l("div", ke, [
237
+ l("button", {
238
+ type: "button",
239
+ class: "inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",
240
+ disabled: p.value,
241
+ onClick: K
242
+ }, [
243
+ p.value ? (d(), N(w(I), {
244
+ key: 0,
245
+ class: "size-3 animate-spin"
246
+ })) : (d(), N(w(oe), {
247
+ key: 1,
248
+ class: "size-3"
249
+ })),
250
+ te(" " + y(p.value ? "Running…" : `Run ${a.value?.label}`), 1)
251
+ ], 8, Ce),
252
+ l("button", {
253
+ type: "button",
254
+ class: "rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted disabled:opacity-50",
255
+ disabled: p.value,
256
+ onClick: Q
257
+ }, " Cancel ", 8, Te)
258
+ ])
259
+ ])
260
+ ]))
261
+ ]));
262
+ }
263
+ });
264
+ export {
265
+ Ne as default
266
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),b=require("lucide-vue-next"),P=require("./useTableAgentTools-D5mzGf3A.js"),u=require("./TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js"),M=require("./tool-sandbox-DoF1PsyS.js"),Z={class:"w-full"},F={key:0,class:"flex items-center gap-2 py-3 text-xs text-muted-foreground"},U={key:1,class:"rounded-xl border bg-background p-4"},X={class:"flex items-center gap-2 text-sm font-semibold text-emerald-600 dark:text-emerald-400"},G={key:2,class:"rounded-xl border bg-background p-4"},H={class:"flex items-center gap-2 text-sm font-semibold text-muted-foreground"},J={key:3,class:"flex items-start gap-2 rounded-xl border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive"},K={key:4,class:"overflow-hidden rounded-xl border bg-background"},Q={class:"border-b bg-amber-50/70 p-4 dark:bg-amber-950/20"},W={class:"flex items-start gap-3"},Y={class:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-amber-500/15"},ee={class:"min-w-0"},te={class:"text-sm font-semibold"},re={key:0,class:"mt-1 text-[11px] text-muted-foreground"},le={class:"p-3"},oe={key:0,class:"mt-3 text-xs text-destructive"},ae={class:"mt-3 flex items-center gap-2"},ne=["disabled"],se=["disabled"],ce=e.defineComponent({__name:"TableRowActionCard",props:{projectSlug:{},toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(R,{emit:B}){const o=R,T=B,w=e.ref(!0),f=e.ref(!1),i=e.ref(null),d=e.ref("confirm"),a=e.ref(null),A=e.ref(-1),n=e.ref(null),g=e.ref([]),v=e.ref(null),_=e.ref(null),{loadRows:C,runStoredRowAction:S}=P.useTableAgentTools(o);function D(t,r){const s=t.filter(m=>m.id===r);if(s.length===1)return s[0];const c=r.trim().toLocaleLowerCase(),l=t.filter(m=>String(m.label).trim().toLocaleLowerCase()===c);if(l.length===1)return l[0];throw l.length>1?new Error(`More than one row action is named "${r}". Use its action ID.`):new Error(`No configured row action matches "${r}".`)}async function z(t,r){if(t.visible===void 0||t.visible===null||t.visible===""||t.visible===!0||t.visible==="true")return!0;if(t.visible===!1||t.visible==="false")return!1;const c=String(t.visible).trim().match(/^\{\{([\s\S]*)\}\}$/);if(!c)return!1;const l={item:{data:r}};for(const[p,h]of Object.entries(r||{}))/^[$A-Z_][0-9A-Z_$]*$/i.test(p)&&!["constructor","prototype","__proto__"].includes(p)&&(l[p]=h);return await M.runSandboxedTableCode(`const value = (${c[1]}); return value === true || value === 'true';`,l,{timeoutMs:750,maxInputBytes:1024*1024,maxOutputBytes:1024})===!0}function $(){if(o.status!=="completed")return!1;const t=o.resolvedArgs?._cachedData;return!t||typeof t!="object"||Array.isArray(t)?!1:t.executed!==!0&&t.cancelled!==!0&&typeof t.error!="string"?(i.value="The saved row-action result is unavailable.",d.value="error",w.value=!1,!0):(_.value=t,a.value=t.row||null,g.value=t.columns||u.inferTableColumns(a.value?[a.value]:[]).slice(0,8),i.value=t.error||null,d.value=t.cancelled?"cancelled":t.executed?"success":"error",w.value=!1,!0)}function y(t){let r;try{r=u.serializeBounded(t,256*1024)}catch{r={executed:t?.executed===!0,cancelled:t?.cancelled===!0,action:t?.action||null,rowReference:t?.rowReference||null,resultOmitted:"The detailed result was too large to store in chat."}}_.value=r,o.status!=="completed"&&T("submit",r)}function E(t){return Object.fromEntries(g.value.map(r=>[r.property,u.resolveProperty(t,r.property)]))}function I(){const t=String(o.resolvedArgs?.action||"").trim(),r=Array.isArray(o.resolvedArgs?.match)?o.resolvedArgs.match:[];if(!t)throw new Error("A configured row action ID or label is required.");if(!r.length)throw new Error("At least one exact row match is required before an action can run.");return{requestedAction:t,match:r}}async function N(t=!1){const{requestedAction:r,match:s}=I(),c=await C({startDate:o.resolvedArgs?.startDate,endDate:o.resolvedArgs?.endDate,dateProperty:o.resolvedArgs?.dateProperty,useDefaultDateRange:o.resolvedArgs?.useDefaultDateRange},{freshMetadata:t}),l=D(c.actions,r),m=c.rows.filter(k=>s.every(x=>{if(!x||typeof x.property!="string")return!1;const O=u.resolveColumn(x.property,c.columns)?.property||x.property;return Object.is(u.resolveProperty(k,O),x.value)}));if(m.length!==1){const k=m.length===0?"No rows match":`${m.length} rows match`;throw new Error(`${k} the supplied identity. Refine the match until it identifies exactly one row.`)}const p=m[0],h=c.sourceRows.indexOf(p);if(h<0)throw new Error("The selected row could not be mapped back to the table data.");if(!await z(l,p))throw new Error(`The "${l.label}" action is not available for this row.`);return{result:c,action:l,row:p,rowIndex:h}}function V(t){v.value=t.result,n.value=t.action,a.value=t.row,A.value=t.rowIndex;const r=t.result.columns.length?t.result.columns:u.inferTableColumns([t.row]);g.value=r.filter(s=>s.visible!==!1&&!s._remove).slice(0,8)}async function j(){if(!$()){w.value=!0,i.value=null;try{V(await N())}catch(t){i.value=t?.message||"Could not prepare the row action.",d.value="error",y({executed:!1,error:i.value,action:o.resolvedArgs?.action||null,availableActions:v.value?.actions?.map(r=>({id:r.id,label:r.label}))||[]})}finally{w.value=!1}}}async function q(){if(!(f.value||!n.value||!a.value||!v.value)){f.value=!0,i.value=null;try{V(await N(!0));const t=await S(n.value,a.value,A.value,v.value.sourceRows),r=u.buildRowReference(a.value,v.value.rows,v.value.columns);let s=null;try{s=u.serializeBounded(t.flowResult??null,64*1024)}catch{s={omitted:"The flow result was too large to store in chat."}}const c={executed:!0,cancelled:!1,action:{id:n.value.id,label:n.value.label},row:E(a.value),rowReference:r,columns:g.value.map(l=>({property:l.property,label:l.label||l.property,type:l.type||"text"})),flowResult:s,tableEffects:t.effects.map(l=>({type:l.type,index:l.index,merge:l.merge}))};d.value="success",y(c)}catch(t){i.value=t?.message||"The row action failed.",d.value="error",y({executed:!1,cancelled:!1,error:i.value,action:n.value?{id:n.value.id,label:n.value.label}:o.resolvedArgs?.action,rowReference:a.value&&v.value?u.buildRowReference(a.value,v.value.rows,v.value.columns):null})}finally{f.value=!1}}}function L(){f.value||(d.value="cancelled",y({executed:!1,cancelled:!0,action:n.value?{id:n.value.id,label:n.value.label}:o.resolvedArgs?.action,row:a.value?E(a.value):null,columns:g.value}))}return e.onMounted(j),(t,r)=>(e.openBlock(),e.createElementBlock("div",Z,[w.value?(e.openBlock(),e.createElementBlock("div",F,[e.createVNode(e.unref(b.Loader2),{class:"size-4 animate-spin"}),r[0]||(r[0]=e.createElementVNode("span",null,"Finding the row and action…",-1))])):d.value==="success"?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("div",X,[e.createVNode(e.unref(b.CheckCircle2),{class:"size-5"}),e.createElementVNode("span",null,e.toDisplayString(_.value?.action?.label||"Row action")+" completed",1)]),r[1]||(r[1]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"},"The table’s configured action flow finished successfully.",-1))])):d.value==="cancelled"?(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",H,[e.createVNode(e.unref(b.XCircle),{class:"size-5"}),r[2]||(r[2]=e.createElementVNode("span",null,"Action cancelled",-1))]),r[3]||(r[3]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"},"No row action was run.",-1))])):d.value==="error"?(e.openBlock(),e.createElementBlock("div",J,[e.createVNode(e.unref(b.AlertTriangle),{class:"mt-0.5 size-4 shrink-0"}),e.createElementVNode("span",null,e.toDisplayString(i.value),1)])):(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createElementVNode("div",Y,[e.createVNode(e.unref(b.AlertTriangle),{class:"size-4 text-amber-600 dark:text-amber-400"})]),e.createElementVNode("div",ee,[e.createElementVNode("p",te,"Confirm “"+e.toDisplayString(n.value?.label)+"”",1),r[4]||(r[4]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"}," This runs the action flow configured on this table and may change external data. ",-1)),o.resolvedArgs?.confirmationMessage?(e.openBlock(),e.createElementBlock("p",re," Agent note: "+e.toDisplayString(o.resolvedArgs.confirmationMessage),1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",le,[e.createVNode(u._sfc_main,{title:"Selected row",rows:a.value?[a.value]:[],columns:g.value,view:"card","max-rows":1},null,8,["rows","columns"]),i.value?(e.openBlock(),e.createElementBlock("p",oe,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[e.createElementVNode("button",{type:"button",class:"inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",disabled:f.value,onClick:q},[f.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-3 animate-spin"})):(e.openBlock(),e.createBlock(e.unref(b.Play),{key:1,class:"size-3"})),e.createTextVNode(" "+e.toDisplayString(f.value?"Running…":`Run ${n.value?.label}`),1)],8,ne),e.createElementVNode("button",{type:"button",class:"rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted disabled:opacity-50",disabled:f.value,onClick:L}," Cancel ",8,se)])])]))]))}});exports.default=ce;