@burdenoff/microfe-bigconsole 2026.924.3 → 2026.925.2
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.
- package/dist/bigconsole/BigConsoleRoot.js +94 -84
- package/dist/bigconsole/BigConsoleRoot.js.map +1 -1
- package/dist/bigconsole/assistant/previewController.js +6 -6
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +142 -145
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +73 -61
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +5 -5
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +1 -1
- package/dist/bigconsole/components/embed/types.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +4 -4
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +5 -5
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js +2 -4
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js.map +1 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.js +92 -89
- package/dist/bigconsole/hooks/useDataSinkOperations.js.map +1 -1
- package/dist/bigconsole/hooks/useImportDataSink.js +96 -91
- package/dist/bigconsole/hooks/useImportDataSink.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +79 -77
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +36 -35
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js.map +1 -1
- package/dist/bigconsole/utils/quota.js +51 -23
- package/dist/bigconsole/utils/quota.js.map +1 -1
- package/dist/generated/wspace-operations.js +0 -1
- package/dist/generated/wspace-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import { useAppNavigate as e } from "../contexts/NavigationContext.js";
|
|
2
2
|
import "../contexts/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { reportBigConsoleQuotaError as t } from "../utils/quota.js";
|
|
4
|
+
import { Section as n, SectionStack as r } from "../components/common/Section.js";
|
|
4
5
|
import "../components/common/index.js";
|
|
5
|
-
import
|
|
6
|
-
import { BIGCONSOLE_PERMISSIONS as
|
|
7
|
-
import { isNative as
|
|
6
|
+
import i from "../hooks/useDataSinkOperations.js";
|
|
7
|
+
import { BIGCONSOLE_PERMISSIONS as a } from "../../constants/permissions.js";
|
|
8
|
+
import { isNative as ee, nativeCopyText as te, nativeToast as ne } from "../../utils/nativeBridge.js";
|
|
8
9
|
import re from "../components/datasink/CacheTTLSelector.js";
|
|
9
|
-
import
|
|
10
|
-
import { memo as
|
|
11
|
-
import { useParams as
|
|
12
|
-
import { AccessDenied as
|
|
13
|
-
import { usePermissions as
|
|
14
|
-
import { AlertCircle as d, ArrowLeft as f, Check as
|
|
15
|
-
import { Button as
|
|
10
|
+
import o from "../components/datasink/RefreshTypeSelector.js";
|
|
11
|
+
import { memo as s, useCallback as c, useEffect as l, useMemo as ie, useState as u } from "react";
|
|
12
|
+
import { useParams as ae } from "react-router";
|
|
13
|
+
import { AccessDenied as oe, PermissionButton as se } from "@burdenoff/fe-libs/shared/components";
|
|
14
|
+
import { usePermissions as ce } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
15
|
+
import { AlertCircle as d, ArrowLeft as f, Check as le, Copy as ue, Database as p, Eye as m, ListChecks as h, Loader2 as g, Save as _, Settings as de } from "lucide-react";
|
|
16
|
+
import { Button as v, IllustratedEmptyState as fe, Input as y, Label as b, PagePurpose as pe, Textarea as x } from "@burdenoff/fe-libs/ui";
|
|
16
17
|
import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
17
|
-
import { useI18n as
|
|
18
|
+
import { useI18n as me } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
18
19
|
//#region src/bigconsole/pages/DataSinkBuilderPage.tsx
|
|
19
|
-
function
|
|
20
|
+
function he(e) {
|
|
20
21
|
return e.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "").substring(0, 64);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
+
function ge(e, t) {
|
|
23
24
|
let n = {};
|
|
24
25
|
if (e.name.trim() ? e.name.length < 2 ? n.name = t("bigconsole.dataSinks.builder.validation.nameMinLength", "Name must be at least 2 characters") : e.name.length > 100 && (n.name = t("bigconsole.dataSinks.builder.validation.nameMaxLength", "Name must be less than 100 characters")) : n.name = t("bigconsole.dataSinks.builder.validation.nameRequired", "Name is required"), e.key.trim() ? /^[a-z0-9_]+$/.test(e.key) ? e.key.length > 64 && (n.key = t("bigconsole.dataSinks.builder.validation.keyMaxLength", "Key must be less than 64 characters")) : n.key = t("bigconsole.dataSinks.builder.validation.keyFormat", "Key can only contain lowercase letters, numbers, and underscores") : n.key = t("bigconsole.dataSinks.builder.validation.keyRequired", "Key is required"), e.data && e.data.trim()) try {
|
|
25
26
|
JSON.parse(e.data);
|
|
@@ -28,25 +29,25 @@ function he(e, t) {
|
|
|
28
29
|
}
|
|
29
30
|
return n;
|
|
30
31
|
}
|
|
31
|
-
var T =
|
|
32
|
-
let { dataSinkId:
|
|
32
|
+
var T = s(function() {
|
|
33
|
+
let { dataSinkId: s } = ae(), T = e(), { t: E } = me(), D = s !== "new" && !!s, { hasPermission: _e, isLoading: ve } = ce(), ye = _e(a.DATASINK_READ), be = D ? a.DATASINK_UPDATE : a.DATASINK_CREATE, [O, k] = u({
|
|
33
34
|
name: "",
|
|
34
35
|
key: "",
|
|
35
36
|
description: "",
|
|
36
37
|
ttl: 300,
|
|
37
38
|
refresh: { type: "manual" },
|
|
38
39
|
data: "{}"
|
|
39
|
-
}), [A, j] =
|
|
40
|
-
|
|
41
|
-
D &&
|
|
40
|
+
}), [A, j] = u({}), [M, N] = u(!1), [P, F] = u(!1), [I, L] = u(null), [xe, R] = u(!1), [z, B] = u(!1), [V, H] = u(null), [U, W] = u(null), { loading: Se, error: G, dataSinks: Ce, fetchDataSink: K, createDataSink: q, updateDataSink: J, getDataSinkData: Y } = i({ skipFetch: !0 }), X = D ? Ce.find((e) => e.id === s) : null;
|
|
41
|
+
l(() => {
|
|
42
|
+
D && s && !X && K(s);
|
|
42
43
|
}, [
|
|
43
44
|
D,
|
|
44
|
-
|
|
45
|
+
s,
|
|
45
46
|
X,
|
|
46
47
|
K
|
|
47
48
|
]);
|
|
48
|
-
let [Z,
|
|
49
|
-
|
|
49
|
+
let [Z, we] = u(!1);
|
|
50
|
+
l(() => {
|
|
50
51
|
if (X && !Z) {
|
|
51
52
|
let e = "";
|
|
52
53
|
if (X.data) try {
|
|
@@ -70,20 +71,20 @@ var T = a(function() {
|
|
|
70
71
|
} : void 0
|
|
71
72
|
} : { type: "manual" },
|
|
72
73
|
data: e
|
|
73
|
-
}), N(!0),
|
|
74
|
+
}), N(!0), we(!0), j({});
|
|
74
75
|
}
|
|
75
76
|
}, [X, Z]);
|
|
76
|
-
let
|
|
77
|
+
let Te = c((e) => {
|
|
77
78
|
let t = e.target.value;
|
|
78
79
|
k((e) => ({
|
|
79
80
|
...e,
|
|
80
81
|
name: t,
|
|
81
|
-
key: M ? e.key :
|
|
82
|
+
key: M ? e.key : he(t)
|
|
82
83
|
})), j((e) => ({
|
|
83
84
|
...e,
|
|
84
85
|
name: void 0
|
|
85
86
|
}));
|
|
86
|
-
}, [M]),
|
|
87
|
+
}, [M]), Ee = c((e) => {
|
|
87
88
|
let t = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "");
|
|
88
89
|
k((e) => ({
|
|
89
90
|
...e,
|
|
@@ -92,22 +93,22 @@ var T = a(function() {
|
|
|
92
93
|
...e,
|
|
93
94
|
key: void 0
|
|
94
95
|
}));
|
|
95
|
-
}, []),
|
|
96
|
+
}, []), De = c((e) => {
|
|
96
97
|
k((t) => ({
|
|
97
98
|
...t,
|
|
98
99
|
description: e.target.value
|
|
99
100
|
}));
|
|
100
|
-
}, []),
|
|
101
|
+
}, []), Oe = c((e) => {
|
|
101
102
|
k((t) => ({
|
|
102
103
|
...t,
|
|
103
104
|
ttl: e || 0
|
|
104
105
|
}));
|
|
105
|
-
}, []),
|
|
106
|
+
}, []), Q = c((e) => {
|
|
106
107
|
k((t) => ({
|
|
107
108
|
...t,
|
|
108
109
|
refresh: e
|
|
109
110
|
}));
|
|
110
|
-
}, []),
|
|
111
|
+
}, []), ke = c((e) => {
|
|
111
112
|
k((t) => ({
|
|
112
113
|
...t,
|
|
113
114
|
data: e.target.value
|
|
@@ -115,7 +116,7 @@ var T = a(function() {
|
|
|
115
116
|
...e,
|
|
116
117
|
data: void 0
|
|
117
118
|
}));
|
|
118
|
-
}, []),
|
|
119
|
+
}, []), Ae = c(() => {
|
|
119
120
|
try {
|
|
120
121
|
let e = JSON.parse(O.data);
|
|
121
122
|
k((t) => ({
|
|
@@ -131,11 +132,11 @@ var T = a(function() {
|
|
|
131
132
|
data: E("bigconsole.dataSinks.builder.validation.invalidJson", "Invalid JSON format")
|
|
132
133
|
}));
|
|
133
134
|
}
|
|
134
|
-
}, [O.data, E]),
|
|
135
|
-
O.key && (await
|
|
136
|
-
}, [O.key, E]), $ =
|
|
135
|
+
}, [O.data, E]), je = c(async () => {
|
|
136
|
+
O.key && (await te(O.key), R(!0), ee() && ne(E("bigconsole.dataSinks.builder.toolbar.keyCopied", "Key copied")), setTimeout(() => R(!1), 2e3));
|
|
137
|
+
}, [O.key, E]), $ = c(() => {
|
|
137
138
|
T("/datasinks");
|
|
138
|
-
}, [T]),
|
|
139
|
+
}, [T]), Me = c(async () => {
|
|
139
140
|
if (!(!D || !X)) {
|
|
140
141
|
B(!0), W(null);
|
|
141
142
|
try {
|
|
@@ -152,11 +153,11 @@ var T = a(function() {
|
|
|
152
153
|
X,
|
|
153
154
|
Y,
|
|
154
155
|
E
|
|
155
|
-
]),
|
|
156
|
+
]), Ne = c(async (e) => {
|
|
156
157
|
e.preventDefault(), L(null);
|
|
157
|
-
let
|
|
158
|
-
if (Object.keys(
|
|
159
|
-
j(
|
|
158
|
+
let n = ge(O, E);
|
|
159
|
+
if (Object.keys(n).length > 0) {
|
|
160
|
+
j(n);
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
162
163
|
F(!0);
|
|
@@ -197,6 +198,7 @@ var T = a(function() {
|
|
|
197
198
|
})) throw Error(E("bigconsole.dataSinks.builder.errors.createFailed", "Failed to create DataSink"));
|
|
198
199
|
T("/datasinks");
|
|
199
200
|
} catch (e) {
|
|
201
|
+
if (t(e)) return;
|
|
200
202
|
L(e instanceof Error ? e.message : E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"));
|
|
201
203
|
} finally {
|
|
202
204
|
F(!1);
|
|
@@ -209,7 +211,7 @@ var T = a(function() {
|
|
|
209
211
|
J,
|
|
210
212
|
T,
|
|
211
213
|
E
|
|
212
|
-
]),
|
|
214
|
+
]), Pe = ie(() => {
|
|
213
215
|
let e = O.name.trim().length >= 2, t = O.key.trim().length > 0, n = !0;
|
|
214
216
|
if (O.data && O.data.trim()) try {
|
|
215
217
|
JSON.parse(O.data);
|
|
@@ -222,25 +224,25 @@ var T = a(function() {
|
|
|
222
224
|
O.key,
|
|
223
225
|
O.data
|
|
224
226
|
]);
|
|
225
|
-
return
|
|
227
|
+
return Se && D ? /* @__PURE__ */ C("div", {
|
|
226
228
|
className: "flex min-h-[240px] items-center justify-center p-card-padding",
|
|
227
229
|
children: /* @__PURE__ */ C(g, { className: "h-icon-lg w-icon-lg animate-spin text-text-secondary" })
|
|
228
230
|
}) : G ? /* @__PURE__ */ C("div", {
|
|
229
231
|
className: "mx-auto w-full max-w-3xl p-card-padding",
|
|
230
|
-
children: /* @__PURE__ */ C(
|
|
232
|
+
children: /* @__PURE__ */ C(n, {
|
|
231
233
|
tone: "danger",
|
|
232
234
|
headingLevel: 2,
|
|
233
235
|
title: E("bigconsole.dataSinks.builder.errors.loadFailed", "Failed to load DataSink"),
|
|
234
236
|
description: G.message,
|
|
235
237
|
icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
|
|
236
|
-
actions: /* @__PURE__ */ w(
|
|
238
|
+
actions: /* @__PURE__ */ w(v, {
|
|
237
239
|
onClick: $,
|
|
238
240
|
variant: "secondary",
|
|
239
241
|
size: "sm",
|
|
240
242
|
children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
|
|
241
243
|
})
|
|
242
244
|
})
|
|
243
|
-
}) : D && !
|
|
245
|
+
}) : D && !ve && !ye ? /* @__PURE__ */ C(oe, {
|
|
244
246
|
title: E("bigconsole.dataSinks.builder.accessDenied.title", "Access Denied"),
|
|
245
247
|
description: E("bigconsole.dataSinks.builder.accessDenied.description", "You don't have permission to view this data sink.")
|
|
246
248
|
}) : /* @__PURE__ */ w("div", {
|
|
@@ -249,7 +251,7 @@ var T = a(function() {
|
|
|
249
251
|
/* @__PURE__ */ w("header", {
|
|
250
252
|
className: "mb-form-gap",
|
|
251
253
|
children: [
|
|
252
|
-
/* @__PURE__ */ w(
|
|
254
|
+
/* @__PURE__ */ w(v, {
|
|
253
255
|
onClick: $,
|
|
254
256
|
variant: "ghost",
|
|
255
257
|
size: "sm",
|
|
@@ -266,11 +268,11 @@ var T = a(function() {
|
|
|
266
268
|
})
|
|
267
269
|
]
|
|
268
270
|
}),
|
|
269
|
-
/* @__PURE__ */ C(
|
|
271
|
+
/* @__PURE__ */ C(pe, {
|
|
270
272
|
className: "mb-section-gap",
|
|
271
273
|
children: E("bigconsole.dataSinks.builder.header.purpose", "A data sink is the named, structured store your dashboards read from. Give it a unique key, configure how long data is cached and how it refreshes, then point a workflow at that key to push data in. Get the basics right here and everything downstream connects to it.")
|
|
272
274
|
}),
|
|
273
|
-
I && /* @__PURE__ */ C(
|
|
275
|
+
I && /* @__PURE__ */ C(n, {
|
|
274
276
|
tone: "danger",
|
|
275
277
|
headingLevel: 2,
|
|
276
278
|
title: E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"),
|
|
@@ -279,9 +281,9 @@ var T = a(function() {
|
|
|
279
281
|
className: "mb-section-gap"
|
|
280
282
|
}),
|
|
281
283
|
/* @__PURE__ */ C("form", {
|
|
282
|
-
onSubmit:
|
|
283
|
-
children: /* @__PURE__ */ w(
|
|
284
|
-
/* @__PURE__ */ C(
|
|
284
|
+
onSubmit: Ne,
|
|
285
|
+
children: /* @__PURE__ */ w(r, { children: [
|
|
286
|
+
/* @__PURE__ */ C(n, {
|
|
285
287
|
emphasis: "primary",
|
|
286
288
|
headingLevel: 2,
|
|
287
289
|
title: E("bigconsole.dataSinks.builder.basicInfo.title", "Basic Information"),
|
|
@@ -307,7 +309,7 @@ var T = a(function() {
|
|
|
307
309
|
id: "name",
|
|
308
310
|
type: "text",
|
|
309
311
|
value: O.name,
|
|
310
|
-
onChange:
|
|
312
|
+
onChange: Te,
|
|
311
313
|
placeholder: E("bigconsole.dataSinks.builder.basicInfo.namePlaceholder", "e.g., Sales Metrics"),
|
|
312
314
|
className: A.name ? "border-status-error-border" : ""
|
|
313
315
|
}),
|
|
@@ -337,17 +339,17 @@ var T = a(function() {
|
|
|
337
339
|
id: "key",
|
|
338
340
|
type: "text",
|
|
339
341
|
value: O.key,
|
|
340
|
-
onChange:
|
|
342
|
+
onChange: Ee,
|
|
341
343
|
placeholder: E("bigconsole.dataSinks.builder.basicInfo.keyPlaceholder", "sales_metrics"),
|
|
342
344
|
disabled: D,
|
|
343
345
|
className: `font-mono flex-1 ${A.key ? "border-status-error-border" : ""}`
|
|
344
|
-
}), O.key && /* @__PURE__ */ C(
|
|
346
|
+
}), O.key && /* @__PURE__ */ C(v, {
|
|
345
347
|
type: "button",
|
|
346
|
-
onClick:
|
|
348
|
+
onClick: je,
|
|
347
349
|
variant: "outline",
|
|
348
350
|
size: "sm",
|
|
349
351
|
className: "px-3",
|
|
350
|
-
children:
|
|
352
|
+
children: xe ? /* @__PURE__ */ C(le, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(ue, { className: "w-4 h-4" })
|
|
351
353
|
})]
|
|
352
354
|
}),
|
|
353
355
|
A.key && /* @__PURE__ */ C("p", {
|
|
@@ -368,7 +370,7 @@ var T = a(function() {
|
|
|
368
370
|
}), /* @__PURE__ */ C(x, {
|
|
369
371
|
id: "description",
|
|
370
372
|
value: O.description,
|
|
371
|
-
onChange:
|
|
373
|
+
onChange: De,
|
|
372
374
|
placeholder: E("bigconsole.dataSinks.builder.basicInfo.descriptionPlaceholder", "Describe what data this sink stores..."),
|
|
373
375
|
rows: 2,
|
|
374
376
|
className: "resize-none"
|
|
@@ -376,7 +378,7 @@ var T = a(function() {
|
|
|
376
378
|
})
|
|
377
379
|
] })
|
|
378
380
|
}),
|
|
379
|
-
/* @__PURE__ */ C(
|
|
381
|
+
/* @__PURE__ */ C(n, {
|
|
380
382
|
headingLevel: 2,
|
|
381
383
|
title: E("bigconsole.dataSinks.builder.config.title", "Configuration"),
|
|
382
384
|
description: E("bigconsole.dataSinks.builder.config.subtitle", "Cache and refresh settings"),
|
|
@@ -388,7 +390,7 @@ var T = a(function() {
|
|
|
388
390
|
/* @__PURE__ */ C(b, { children: E("bigconsole.dataSinks.builder.config.cacheDurationLabel", "Cache Duration") }),
|
|
389
391
|
/* @__PURE__ */ C(re, {
|
|
390
392
|
value: O.ttl,
|
|
391
|
-
onChange:
|
|
393
|
+
onChange: Oe,
|
|
392
394
|
hideLabel: !0
|
|
393
395
|
}),
|
|
394
396
|
/* @__PURE__ */ C("p", {
|
|
@@ -396,19 +398,19 @@ var T = a(function() {
|
|
|
396
398
|
children: E("bigconsole.dataSinks.builder.config.cacheDurationHelp", "How long cached data remains valid before requiring refresh.")
|
|
397
399
|
})
|
|
398
400
|
]
|
|
399
|
-
}), /* @__PURE__ */ C(
|
|
401
|
+
}), /* @__PURE__ */ C(o, {
|
|
400
402
|
value: O.refresh,
|
|
401
|
-
onChange:
|
|
403
|
+
onChange: Q
|
|
402
404
|
})] })
|
|
403
405
|
}),
|
|
404
|
-
/* @__PURE__ */ C(
|
|
406
|
+
/* @__PURE__ */ C(n, {
|
|
405
407
|
headingLevel: 2,
|
|
406
408
|
title: E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
|
|
407
409
|
description: D ? E("bigconsole.dataSinks.builder.dataPayload.subtitleEdit", "Edit the JSON data stored in this DataSink") : E("bigconsole.dataSinks.builder.dataPayload.subtitleCreate", "Optional initial data (JSON format)"),
|
|
408
410
|
icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
|
|
409
|
-
actions: /* @__PURE__ */ C(
|
|
411
|
+
actions: /* @__PURE__ */ C(v, {
|
|
410
412
|
type: "button",
|
|
411
|
-
onClick:
|
|
413
|
+
onClick: Ae,
|
|
412
414
|
variant: "outline",
|
|
413
415
|
size: "sm",
|
|
414
416
|
children: E("bigconsole.dataSinks.builder.dataPayload.formatJson", "Format JSON")
|
|
@@ -418,7 +420,7 @@ var T = a(function() {
|
|
|
418
420
|
/* @__PURE__ */ C(x, {
|
|
419
421
|
"aria-label": E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
|
|
420
422
|
value: O.data,
|
|
421
|
-
onChange:
|
|
423
|
+
onChange: ke,
|
|
422
424
|
placeholder: E("bigconsole.dataSinks.builder.dataPayload.dataPlaceholder", "{\"key\": \"value\"}"),
|
|
423
425
|
rows: 10,
|
|
424
426
|
className: `resize-y font-mono text-xs ${A.data ? "border-status-error-border" : ""}`
|
|
@@ -433,21 +435,21 @@ var T = a(function() {
|
|
|
433
435
|
})
|
|
434
436
|
] })
|
|
435
437
|
}),
|
|
436
|
-
D && X && /* @__PURE__ */ C(
|
|
438
|
+
D && X && /* @__PURE__ */ C(n, {
|
|
437
439
|
emphasis: "muted",
|
|
438
440
|
headingLevel: 2,
|
|
439
441
|
title: E("bigconsole.dataSinks.builder.preview.title", "Data Preview"),
|
|
440
442
|
description: E("bigconsole.dataSinks.builder.preview.subtitle", "Preview the first 20 records"),
|
|
441
443
|
icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
|
|
442
|
-
actions: /* @__PURE__ */ C(
|
|
444
|
+
actions: /* @__PURE__ */ C(v, {
|
|
443
445
|
type: "button",
|
|
444
|
-
onClick:
|
|
446
|
+
onClick: Me,
|
|
445
447
|
variant: "outline",
|
|
446
448
|
size: "sm",
|
|
447
449
|
disabled: z,
|
|
448
450
|
children: z ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.preview.loading", "Loading...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(m, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.preview.showData", "Show Data")] })
|
|
449
451
|
}),
|
|
450
|
-
children: U ? /* @__PURE__ */ C(
|
|
452
|
+
children: U ? /* @__PURE__ */ C(n, {
|
|
451
453
|
tone: "danger",
|
|
452
454
|
padding: "compact",
|
|
453
455
|
headingLevel: 3,
|
|
@@ -459,7 +461,7 @@ var T = a(function() {
|
|
|
459
461
|
}) : V && V.length > 0 ? /* @__PURE__ */ C("pre", {
|
|
460
462
|
className: "max-h-[300px] min-w-0 overflow-auto rounded-input bg-bg-surface p-3 font-mono text-xs",
|
|
461
463
|
children: JSON.stringify(V, null, 2)
|
|
462
|
-
}) : V ? /* @__PURE__ */ C(
|
|
464
|
+
}) : V ? /* @__PURE__ */ C(fe, {
|
|
463
465
|
illustration: "empty-generic",
|
|
464
466
|
title: E("bigconsole.dataSinks.builder.preview.emptyTitle", "No data available yet"),
|
|
465
467
|
description: E("bigconsole.dataSinks.builder.preview.emptyDescription", "Connect a workflow to this sink's key to start pushing data.")
|
|
@@ -468,7 +470,7 @@ var T = a(function() {
|
|
|
468
470
|
children: "Select \"Show data\" to load the records this sink currently holds."
|
|
469
471
|
})
|
|
470
472
|
}),
|
|
471
|
-
!D && /* @__PURE__ */ C(
|
|
473
|
+
!D && /* @__PURE__ */ C(n, {
|
|
472
474
|
tone: "info",
|
|
473
475
|
emphasis: "muted",
|
|
474
476
|
headingLevel: 2,
|
|
@@ -496,25 +498,25 @@ var T = a(function() {
|
|
|
496
498
|
]
|
|
497
499
|
})
|
|
498
500
|
}),
|
|
499
|
-
/* @__PURE__ */ w(
|
|
501
|
+
/* @__PURE__ */ w(n, {
|
|
500
502
|
emphasis: "bare",
|
|
501
503
|
padding: "none",
|
|
502
504
|
"aria-label": "Save or discard this data sink",
|
|
503
505
|
className: "border-t border-[var(--color-border-subtle)] pt-form-gap",
|
|
504
506
|
bodyClassName: "flex flex-wrap items-center justify-end gap-control-gap",
|
|
505
|
-
children: [/* @__PURE__ */ C(
|
|
507
|
+
children: [/* @__PURE__ */ C(v, {
|
|
506
508
|
type: "button",
|
|
507
509
|
onClick: $,
|
|
508
510
|
variant: "secondary",
|
|
509
511
|
children: E("bigconsole.dataSinks.builder.actions.cancel", "Cancel")
|
|
510
|
-
}), /* @__PURE__ */ C(
|
|
511
|
-
permission:
|
|
512
|
+
}), /* @__PURE__ */ C(se, {
|
|
513
|
+
permission: be,
|
|
512
514
|
deniedBehavior: "disable",
|
|
513
|
-
children: /* @__PURE__ */ C(
|
|
515
|
+
children: /* @__PURE__ */ C(v, {
|
|
514
516
|
type: "submit",
|
|
515
|
-
disabled: !
|
|
517
|
+
disabled: !Pe || P,
|
|
516
518
|
variant: "default",
|
|
517
|
-
children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.actions.saving", "Saving...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(
|
|
519
|
+
children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.actions.saving", "Saving...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(_, { className: "w-4 h-4 mr-2" }), D ? E("bigconsole.dataSinks.builder.actions.saveChanges", "Save Changes") : E("bigconsole.dataSinks.builder.actions.create", "Create DataSink")] })
|
|
518
520
|
})
|
|
519
521
|
})]
|
|
520
522
|
})
|