@lunora/studio 0.0.0 → 1.0.0-alpha.10

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 (80) hide show
  1. package/LICENSE.md +105 -0
  2. package/README.md +123 -9
  3. package/__assets__/package-og.svg +14 -0
  4. package/dist/index.d.ts +1403 -0
  5. package/dist/index.js +41 -0
  6. package/dist/mount.d.ts +21 -0
  7. package/dist/mount.js +26 -0
  8. package/dist/packem_shared/ADMIN_FUNCTIONS-DjXgvJb6.js +46 -0
  9. package/dist/packem_shared/ApiDocsPanel-yVSGHK3H.js +842 -0
  10. package/dist/packem_shared/ApiReferencePanel-1vubqG5s.js +229 -0
  11. package/dist/packem_shared/ApiTab-rwttyQ1-.js +251 -0
  12. package/dist/packem_shared/AuditPanel-D9Eh7j7E.js +200 -0
  13. package/dist/packem_shared/CommandPalette-BtgkBzZI.js +373 -0
  14. package/dist/packem_shared/ConfirmButton-C2eVi2Qv.js +59 -0
  15. package/dist/packem_shared/ConnectionBadge-B2DDM2Tn.js +111 -0
  16. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +50 -0
  17. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +89 -0
  18. package/dist/packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js +27 -0
  19. package/dist/packem_shared/DataBrowser-CyckZRwj.js +4480 -0
  20. package/dist/packem_shared/DataFilters-FNquMaiu.js +249 -0
  21. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +66 -0
  22. package/dist/packem_shared/ExportImportPanel-BGJqFK9X.js +197 -0
  23. package/dist/packem_shared/FileBrowser-0pCpdKPE.js +2932 -0
  24. package/dist/packem_shared/FunctionRunner-7NH3KcTg.js +343 -0
  25. package/dist/packem_shared/FunctionStatsPanel-CXynSuqT.js +375 -0
  26. package/dist/packem_shared/GlobalDataBrowser-DAxzB-Br.js +289 -0
  27. package/dist/packem_shared/HealthPanel-CyLs7qZm.js +648 -0
  28. package/dist/packem_shared/HomePanel-BOkFRbuj.js +1334 -0
  29. package/dist/packem_shared/InsightsPanel-CvXMoZuv.js +461 -0
  30. package/dist/packem_shared/LogsPanel-BrUstOk6.js +827 -0
  31. package/dist/packem_shared/MailPanel-GnnrNqL6.js +440 -0
  32. package/dist/packem_shared/MetricsPanel-BN_uUU-_.js +1611 -0
  33. package/dist/packem_shared/MigrationsPanel-DaZuUHje.js +239 -0
  34. package/dist/packem_shared/OpenRpcReferencePanel-vbcYbv3V.js +191 -0
  35. package/dist/packem_shared/PitrPanel-LJGNP_IX.js +252 -0
  36. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +3 -0
  37. package/dist/packem_shared/ScheduledJobs-UmVaMbJy.js +262 -0
  38. package/dist/packem_shared/SchemaViewer-Bam6ylvw.js +2512 -0
  39. package/dist/packem_shared/SecurityAdvisorPanel-DTmjUNqt.js +92 -0
  40. package/dist/packem_shared/SettingsPanel-C2wDK-8F.js +390 -0
  41. package/dist/packem_shared/ShardInput-gx_DZXXn.js +107 -0
  42. package/dist/packem_shared/SqlEditorPanel-D5wMIxcg.js +13 -0
  43. package/dist/packem_shared/Studio-DpgYe4qt.js +33 -0
  44. package/dist/packem_shared/StudioApp-C7aaizqc.js +657 -0
  45. package/dist/packem_shared/StudioI18nProvider-B-tDCZIi.js +48 -0
  46. package/dist/packem_shared/TableEditor-DzK3Z6rL.js +371 -0
  47. package/dist/packem_shared/advisor-view-CGcfMiPq.js +159 -0
  48. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +108 -0
  49. package/dist/packem_shared/app.d-Nbhpihxv.d.ts +300 -0
  50. package/dist/packem_shared/badge-B2PKA1-5.js +49 -0
  51. package/dist/packem_shared/bar-chart-CzJAgqkp.js +3245 -0
  52. package/dist/packem_shared/button-BhsN2uZH.js +49 -0
  53. package/dist/packem_shared/card-DURq3ElK.js +175 -0
  54. package/dist/packem_shared/cf-links-2cktDedA.js +8 -0
  55. package/dist/packem_shared/checkbox-UNkzAxl-.js +63 -0
  56. package/dist/packem_shared/data-grid-B5CaV3wS.js +183 -0
  57. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +280 -0
  58. package/dist/packem_shared/empty-state-DY_oe0k6.js +98 -0
  59. package/dist/packem_shared/grid-features-CzUfqgsM.js +840 -0
  60. package/dist/packem_shared/input-XH4r1Pt1.js +53 -0
  61. package/dist/packem_shared/internal-rXJEAhXS.js +68 -0
  62. package/dist/packem_shared/label-D8ykjn5J.js +46 -0
  63. package/dist/packem_shared/live-status-FZ0psC1z.js +44 -0
  64. package/dist/packem_shared/reference-view-B4E49Lip.js +2180 -0
  65. package/dist/packem_shared/shard-history-DyebH1R5.js +38 -0
  66. package/dist/packem_shared/sparkline-10dG-_f0.js +93 -0
  67. package/dist/packem_shared/sql-editor-panel-Smfl_FDF.js +2562 -0
  68. package/dist/packem_shared/storage-tier-CL98eOvn.js +85 -0
  69. package/dist/packem_shared/studio-9Mq0PdMi.js +10831 -0
  70. package/dist/packem_shared/table-_RzNvy3R.js +246 -0
  71. package/dist/packem_shared/table-list-sidebar-Bg7uzbvC.js +832 -0
  72. package/dist/packem_shared/textarea-D3gaCU_-.js +46 -0
  73. package/dist/packem_shared/use-admin-query-4JQW2rr1.js +88 -0
  74. package/dist/packem_shared/useDebounced-Dxncpg6z.js +32 -0
  75. package/dist/packem_shared/utils-B05Dmz_H.js +8 -0
  76. package/dist/packem_shared/virtual-rect-CVMUskSm.js +10 -0
  77. package/dist/standalone/studio.js +378 -0
  78. package/dist/styles.css +2 -0
  79. package/package.json +78 -17
  80. package/src/theme.css +59 -0
@@ -0,0 +1,657 @@
1
+ import { c } from 'react/compiler-runtime';
2
+ import { LunoraClient } from '@lunora/client';
3
+ import { LunoraProvider } from '@lunora/react';
4
+ import { useState, useEffect } from 'react';
5
+ import { ErrorBoundary } from './ErrorBoundary-BzAApI7J.js';
6
+ import { u as useTheme, B as BrandMark, T as ThemeProvider, a as TooltipProvider, S as Studio } from './studio-9Mq0PdMi.js';
7
+ import useDebounced from './useDebounced-Dxncpg6z.js';
8
+ import { useT, createStudioI18n } from './DEFAULT_LOCALE-CiX4W7Kr.js';
9
+ import { StudioI18nProvider } from './StudioI18nProvider-B-tDCZIi.js';
10
+ import STUDIO_ROOT_CLASS from './STUDIO_ROOT_CLASS-D12gX2dV.js';
11
+ import { c as cn } from './utils-B05Dmz_H.js';
12
+ import { B as Button } from './button-BhsN2uZH.js';
13
+ import { I as Input } from './input-XH4r1Pt1.js';
14
+ import { jsxDEV } from 'react/jsx-dev-runtime';
15
+
16
+ const STORAGE_KEY = "lunora-studio-admin-token";
17
+ const store = () => {
18
+ try {
19
+ return globalThis.sessionStorage;
20
+ } catch {
21
+ return void 0;
22
+ }
23
+ };
24
+ const loadToken = () => {
25
+ try {
26
+ return store()?.getItem(STORAGE_KEY) ?? "";
27
+ } catch {
28
+ return "";
29
+ }
30
+ };
31
+ const saveToken = (token) => {
32
+ const storage = store();
33
+ if (storage === void 0) {
34
+ return;
35
+ }
36
+ try {
37
+ if (token === "") {
38
+ storage.removeItem(STORAGE_KEY);
39
+ } else {
40
+ storage.setItem(STORAGE_KEY, token);
41
+ }
42
+ } catch {
43
+ }
44
+ };
45
+
46
+ const StudioLoginForm = (t0) => {
47
+ const $ = c(42);
48
+ const {
49
+ onSubmit
50
+ } = t0;
51
+ const t = useT();
52
+ const [value, setValue] = useState("");
53
+ let t1;
54
+ if ($[0] !== value) {
55
+ t1 = value.trim();
56
+ $[0] = value;
57
+ $[1] = t1;
58
+ } else {
59
+ t1 = $[1];
60
+ }
61
+ const trimmed = t1;
62
+ let t2;
63
+ if ($[2] !== onSubmit || $[3] !== trimmed) {
64
+ t2 = (event) => {
65
+ event.preventDefault();
66
+ if (trimmed !== "") {
67
+ onSubmit(trimmed);
68
+ }
69
+ };
70
+ $[2] = onSubmit;
71
+ $[3] = trimmed;
72
+ $[4] = t2;
73
+ } else {
74
+ t2 = $[4];
75
+ }
76
+ const submit = t2;
77
+ let t3;
78
+ if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79
+ t3 = /* @__PURE__ */ jsxDEV("div", {
80
+ className: "h-10 w-10 text-foreground",
81
+ children: /* @__PURE__ */ jsxDEV(BrandMark, {}, void 0, false)
82
+ }, void 0, false);
83
+ $[5] = t3;
84
+ } else {
85
+ t3 = $[5];
86
+ }
87
+ let t4;
88
+ if ($[6] !== t) {
89
+ t4 = t("Connect to Lunora Studio");
90
+ $[6] = t;
91
+ $[7] = t4;
92
+ } else {
93
+ t4 = $[7];
94
+ }
95
+ let t5;
96
+ if ($[8] !== t4) {
97
+ t5 = /* @__PURE__ */ jsxDEV("h1", {
98
+ className: "text-base font-semibold text-foreground",
99
+ children: t4
100
+ }, void 0, false);
101
+ $[8] = t4;
102
+ $[9] = t5;
103
+ } else {
104
+ t5 = $[9];
105
+ }
106
+ let t6;
107
+ if ($[10] !== t) {
108
+ t6 = t("Enter your admin token to access the studio.");
109
+ $[10] = t;
110
+ $[11] = t6;
111
+ } else {
112
+ t6 = $[11];
113
+ }
114
+ let t7;
115
+ if ($[12] !== t6) {
116
+ t7 = /* @__PURE__ */ jsxDEV("p", {
117
+ className: "text-[13px] text-muted-foreground",
118
+ children: t6
119
+ }, void 0, false);
120
+ $[12] = t6;
121
+ $[13] = t7;
122
+ } else {
123
+ t7 = $[13];
124
+ }
125
+ let t8;
126
+ if ($[14] !== t5 || $[15] !== t7) {
127
+ t8 = /* @__PURE__ */ jsxDEV("div", {
128
+ className: "flex flex-col items-center gap-3 text-center",
129
+ children: [t3, /* @__PURE__ */ jsxDEV("div", {
130
+ className: "flex flex-col gap-1",
131
+ children: [t5, t7]
132
+ }, void 0, true)]
133
+ }, void 0, true);
134
+ $[14] = t5;
135
+ $[15] = t7;
136
+ $[16] = t8;
137
+ } else {
138
+ t8 = $[16];
139
+ }
140
+ let t9;
141
+ if ($[17] !== t) {
142
+ t9 = t("admin token");
143
+ $[17] = t;
144
+ $[18] = t9;
145
+ } else {
146
+ t9 = $[18];
147
+ }
148
+ let t10;
149
+ if ($[19] !== t9) {
150
+ t10 = /* @__PURE__ */ jsxDEV("label", {
151
+ className: "text-xs font-medium text-foreground",
152
+ htmlFor: "lunora-studio-login-token",
153
+ children: t9
154
+ }, void 0, false);
155
+ $[19] = t9;
156
+ $[20] = t10;
157
+ } else {
158
+ t10 = $[20];
159
+ }
160
+ let t11;
161
+ if ($[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
162
+ t11 = (event_0) => {
163
+ setValue(event_0.target.value);
164
+ };
165
+ $[21] = t11;
166
+ } else {
167
+ t11 = $[21];
168
+ }
169
+ let t12;
170
+ if ($[22] !== value) {
171
+ t12 = /* @__PURE__ */ jsxDEV(Input, {
172
+ autoComplete: "off",
173
+ autoFocus: true,
174
+ "data-testid": "lunora-studio-login-token",
175
+ id: "lunora-studio-login-token",
176
+ onChange: t11,
177
+ placeholder: "LUNORA_ADMIN_TOKEN",
178
+ type: "password",
179
+ value
180
+ }, void 0, false);
181
+ $[22] = value;
182
+ $[23] = t12;
183
+ } else {
184
+ t12 = $[23];
185
+ }
186
+ let t13;
187
+ if ($[24] !== t) {
188
+ t13 = t("From your worker's LUNORA_ADMIN_TOKEN — your project's .dev.vars in dev, or a deployment secret in production.");
189
+ $[24] = t;
190
+ $[25] = t13;
191
+ } else {
192
+ t13 = $[25];
193
+ }
194
+ let t14;
195
+ if ($[26] !== t13) {
196
+ t14 = /* @__PURE__ */ jsxDEV("p", {
197
+ className: "text-[11px] text-muted-foreground",
198
+ children: t13
199
+ }, void 0, false);
200
+ $[26] = t13;
201
+ $[27] = t14;
202
+ } else {
203
+ t14 = $[27];
204
+ }
205
+ let t15;
206
+ if ($[28] !== t10 || $[29] !== t12 || $[30] !== t14) {
207
+ t15 = /* @__PURE__ */ jsxDEV("div", {
208
+ className: "flex flex-col gap-1.5",
209
+ children: [t10, t12, t14]
210
+ }, void 0, true);
211
+ $[28] = t10;
212
+ $[29] = t12;
213
+ $[30] = t14;
214
+ $[31] = t15;
215
+ } else {
216
+ t15 = $[31];
217
+ }
218
+ const t16 = trimmed === "";
219
+ let t17;
220
+ if ($[32] !== t) {
221
+ t17 = t("Connect");
222
+ $[32] = t;
223
+ $[33] = t17;
224
+ } else {
225
+ t17 = $[33];
226
+ }
227
+ let t18;
228
+ if ($[34] !== t16 || $[35] !== t17) {
229
+ t18 = /* @__PURE__ */ jsxDEV(Button, {
230
+ "data-testid": "lunora-studio-login-submit",
231
+ disabled: t16,
232
+ type: "submit",
233
+ children: t17
234
+ }, void 0, false);
235
+ $[34] = t16;
236
+ $[35] = t17;
237
+ $[36] = t18;
238
+ } else {
239
+ t18 = $[36];
240
+ }
241
+ let t19;
242
+ if ($[37] !== submit || $[38] !== t15 || $[39] !== t18 || $[40] !== t8) {
243
+ t19 = /* @__PURE__ */ jsxDEV("form", {
244
+ className: "flex w-full max-w-sm flex-col gap-5 rounded-xl border border-border bg-card p-7 shadow-lg",
245
+ "data-testid": "lunora-studio-login",
246
+ onSubmit: submit,
247
+ children: [t8, t15, t18]
248
+ }, void 0, true);
249
+ $[37] = submit;
250
+ $[38] = t15;
251
+ $[39] = t18;
252
+ $[40] = t8;
253
+ $[41] = t19;
254
+ } else {
255
+ t19 = $[41];
256
+ }
257
+ return t19;
258
+ };
259
+ const StudioLogin = (t0) => {
260
+ const $ = c(10);
261
+ const {
262
+ i18n,
263
+ onSubmit
264
+ } = t0;
265
+ const {
266
+ resolvedTheme
267
+ } = useTheme();
268
+ const t1 = resolvedTheme === "dark" && "dark";
269
+ let t2;
270
+ if ($[0] !== t1) {
271
+ t2 = cn(STUDIO_ROOT_CLASS, t1, "flex h-dvh items-center justify-center bg-sidebar p-6 text-sm text-foreground");
272
+ $[0] = t1;
273
+ $[1] = t2;
274
+ } else {
275
+ t2 = $[1];
276
+ }
277
+ let t3;
278
+ if ($[2] !== onSubmit) {
279
+ t3 = /* @__PURE__ */ jsxDEV(StudioLoginForm, {
280
+ onSubmit
281
+ }, void 0, false);
282
+ $[2] = onSubmit;
283
+ $[3] = t3;
284
+ } else {
285
+ t3 = $[3];
286
+ }
287
+ let t4;
288
+ if ($[4] !== i18n || $[5] !== t3) {
289
+ t4 = /* @__PURE__ */ jsxDEV(StudioI18nProvider, {
290
+ i18n,
291
+ children: t3
292
+ }, void 0, false);
293
+ $[4] = i18n;
294
+ $[5] = t3;
295
+ $[6] = t4;
296
+ } else {
297
+ t4 = $[6];
298
+ }
299
+ let t5;
300
+ if ($[7] !== t2 || $[8] !== t4) {
301
+ t5 = /* @__PURE__ */ jsxDEV("div", {
302
+ className: t2,
303
+ "data-testid": "lunora-studio-login-root",
304
+ children: t4
305
+ }, void 0, false);
306
+ $[7] = t2;
307
+ $[8] = t4;
308
+ $[9] = t5;
309
+ } else {
310
+ t5 = $[9];
311
+ }
312
+ return t5;
313
+ };
314
+
315
+ const resolveBaseUrl = (explicit) => {
316
+ if (explicit !== void 0 && explicit !== "") {
317
+ return explicit;
318
+ }
319
+ const loc = globalThis.location;
320
+ if (loc?.origin !== void 0 && loc.origin !== "") {
321
+ return loc.origin;
322
+ }
323
+ return "http://localhost:5173";
324
+ };
325
+ const StudioAppBody = (t0) => {
326
+ const $ = c(23);
327
+ const {
328
+ basePath,
329
+ chrome,
330
+ studio
331
+ } = t0;
332
+ const t = useT();
333
+ let t1;
334
+ if ($[0] !== t) {
335
+ t1 = t("Studio failed");
336
+ $[0] = t;
337
+ $[1] = t1;
338
+ } else {
339
+ t1 = $[1];
340
+ }
341
+ let t2;
342
+ if ($[2] !== t) {
343
+ t2 = t("Studio");
344
+ $[2] = t;
345
+ $[3] = t2;
346
+ } else {
347
+ t2 = $[3];
348
+ }
349
+ let t3;
350
+ if ($[4] !== t) {
351
+ t3 = t("Try again");
352
+ $[4] = t;
353
+ $[5] = t3;
354
+ } else {
355
+ t3 = $[5];
356
+ }
357
+ const t4 = studio?.dataEditable;
358
+ const t5 = studio?.functions;
359
+ const t6 = studio?.initialShardKey;
360
+ const t7 = studio?.openApiSpec;
361
+ const t8 = studio?.openRpcSpec;
362
+ const t9 = studio?.runAsIdentity;
363
+ const t10 = studio?.scheduledCancel;
364
+ const t11 = studio?.scheduledLoad;
365
+ const t12 = studio?.schemaEditable;
366
+ let t13;
367
+ if ($[6] !== basePath || $[7] !== chrome || $[8] !== t10 || $[9] !== t11 || $[10] !== t12 || $[11] !== t4 || $[12] !== t5 || $[13] !== t6 || $[14] !== t7 || $[15] !== t8 || $[16] !== t9) {
368
+ t13 = /* @__PURE__ */ jsxDEV(Studio, {
369
+ basePath,
370
+ chrome,
371
+ dataEditable: t4,
372
+ functions: t5,
373
+ initialShardKey: t6,
374
+ openApiSpec: t7,
375
+ openRpcSpec: t8,
376
+ runAsIdentity: t9,
377
+ scheduledCancel: t10,
378
+ scheduledLoad: t11,
379
+ schemaEditable: t12
380
+ }, void 0, false);
381
+ $[6] = basePath;
382
+ $[7] = chrome;
383
+ $[8] = t10;
384
+ $[9] = t11;
385
+ $[10] = t12;
386
+ $[11] = t4;
387
+ $[12] = t5;
388
+ $[13] = t6;
389
+ $[14] = t7;
390
+ $[15] = t8;
391
+ $[16] = t9;
392
+ $[17] = t13;
393
+ } else {
394
+ t13 = $[17];
395
+ }
396
+ let t14;
397
+ if ($[18] !== t1 || $[19] !== t13 || $[20] !== t2 || $[21] !== t3) {
398
+ t14 = /* @__PURE__ */ jsxDEV(ErrorBoundary, {
399
+ fallbackTitle: t1,
400
+ label: t2,
401
+ retryLabel: t3,
402
+ children: t13
403
+ }, void 0, false);
404
+ $[18] = t1;
405
+ $[19] = t13;
406
+ $[20] = t2;
407
+ $[21] = t3;
408
+ $[22] = t14;
409
+ } else {
410
+ t14 = $[22];
411
+ }
412
+ return t14;
413
+ };
414
+ const StudioShell = (t0) => {
415
+ const $ = c(20);
416
+ const {
417
+ basePath,
418
+ clearToken,
419
+ client,
420
+ i18n,
421
+ onTokenChange,
422
+ rulesInstalled,
423
+ studio,
424
+ token
425
+ } = t0;
426
+ const {
427
+ resolvedTheme
428
+ } = useTheme();
429
+ let t1;
430
+ if ($[0] !== clearToken || $[1] !== onTokenChange || $[2] !== rulesInstalled || $[3] !== token) {
431
+ t1 = {
432
+ clearToken,
433
+ onTokenChange,
434
+ rulesInstalled,
435
+ token
436
+ };
437
+ $[0] = clearToken;
438
+ $[1] = onTokenChange;
439
+ $[2] = rulesInstalled;
440
+ $[3] = token;
441
+ $[4] = t1;
442
+ } else {
443
+ t1 = $[4];
444
+ }
445
+ const chrome = t1;
446
+ const t2 = resolvedTheme === "dark" && "dark";
447
+ let t3;
448
+ if ($[5] !== t2) {
449
+ t3 = cn(STUDIO_ROOT_CLASS, t2, "flex h-dvh flex-col overflow-hidden bg-sidebar text-sm text-foreground");
450
+ $[5] = t2;
451
+ $[6] = t3;
452
+ } else {
453
+ t3 = $[6];
454
+ }
455
+ let t4;
456
+ if ($[7] !== basePath || $[8] !== chrome || $[9] !== studio) {
457
+ t4 = /* @__PURE__ */ jsxDEV(TooltipProvider, {
458
+ children: /* @__PURE__ */ jsxDEV(StudioAppBody, {
459
+ basePath,
460
+ chrome,
461
+ studio
462
+ }, void 0, false)
463
+ }, void 0, false);
464
+ $[7] = basePath;
465
+ $[8] = chrome;
466
+ $[9] = studio;
467
+ $[10] = t4;
468
+ } else {
469
+ t4 = $[10];
470
+ }
471
+ let t5;
472
+ if ($[11] !== i18n || $[12] !== t4) {
473
+ t5 = /* @__PURE__ */ jsxDEV(StudioI18nProvider, {
474
+ i18n,
475
+ children: t4
476
+ }, void 0, false);
477
+ $[11] = i18n;
478
+ $[12] = t4;
479
+ $[13] = t5;
480
+ } else {
481
+ t5 = $[13];
482
+ }
483
+ let t6;
484
+ if ($[14] !== client || $[15] !== t5) {
485
+ t6 = /* @__PURE__ */ jsxDEV(LunoraProvider, {
486
+ client,
487
+ children: t5
488
+ }, void 0, false);
489
+ $[14] = client;
490
+ $[15] = t5;
491
+ $[16] = t6;
492
+ } else {
493
+ t6 = $[16];
494
+ }
495
+ let t7;
496
+ if ($[17] !== t3 || $[18] !== t6) {
497
+ t7 = /* @__PURE__ */ jsxDEV("div", {
498
+ className: t3,
499
+ "data-testid": "lunora-studio-app",
500
+ children: t6
501
+ }, void 0, false);
502
+ $[17] = t3;
503
+ $[18] = t6;
504
+ $[19] = t7;
505
+ } else {
506
+ t7 = $[19];
507
+ }
508
+ return t7;
509
+ };
510
+ const StudioApp = (t0) => {
511
+ const $ = c(25);
512
+ let t1;
513
+ if ($[0] !== t0) {
514
+ t1 = t0 === void 0 ? {} : t0;
515
+ $[0] = t0;
516
+ $[1] = t1;
517
+ } else {
518
+ t1 = $[1];
519
+ }
520
+ const {
521
+ adminToken,
522
+ basePath,
523
+ baseUrl,
524
+ client: injectedClient,
525
+ rulesInstalled,
526
+ studio,
527
+ locale
528
+ } = t1;
529
+ let t2;
530
+ if ($[2] !== adminToken) {
531
+ t2 = () => adminToken ?? loadToken();
532
+ $[2] = adminToken;
533
+ $[3] = t2;
534
+ } else {
535
+ t2 = $[3];
536
+ }
537
+ const [token, setToken] = useState(t2);
538
+ let t3;
539
+ let t4;
540
+ if ($[4] !== token) {
541
+ t3 = () => {
542
+ saveToken(token);
543
+ };
544
+ t4 = [token];
545
+ $[4] = token;
546
+ $[5] = t3;
547
+ $[6] = t4;
548
+ } else {
549
+ t3 = $[5];
550
+ t4 = $[6];
551
+ }
552
+ useEffect(t3, t4);
553
+ const debouncedToken = useDebounced(token, 300);
554
+ let t5;
555
+ bb0: {
556
+ if (injectedClient !== void 0) {
557
+ t5 = injectedClient;
558
+ break bb0;
559
+ }
560
+ let created;
561
+ if ($[7] !== baseUrl || $[8] !== debouncedToken) {
562
+ created = new LunoraClient({
563
+ url: resolveBaseUrl(baseUrl),
564
+ ...debouncedToken === "" ? {} : {
565
+ wsToken: debouncedToken
566
+ }
567
+ });
568
+ if (debouncedToken !== "") {
569
+ created.setAuthToken(debouncedToken);
570
+ }
571
+ $[7] = baseUrl;
572
+ $[8] = debouncedToken;
573
+ $[9] = created;
574
+ } else {
575
+ created = $[9];
576
+ }
577
+ t5 = created;
578
+ }
579
+ const client = t5;
580
+ let t6;
581
+ let t7;
582
+ if ($[10] !== client || $[11] !== injectedClient) {
583
+ t6 = () => () => {
584
+ if (injectedClient === void 0) {
585
+ client.close();
586
+ }
587
+ };
588
+ t7 = [client, injectedClient];
589
+ $[10] = client;
590
+ $[11] = injectedClient;
591
+ $[12] = t6;
592
+ $[13] = t7;
593
+ } else {
594
+ t6 = $[12];
595
+ t7 = $[13];
596
+ }
597
+ useEffect(t6, t7);
598
+ let t8;
599
+ if ($[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
600
+ t8 = (event) => {
601
+ setToken(event.target.value);
602
+ };
603
+ $[14] = t8;
604
+ } else {
605
+ t8 = $[14];
606
+ }
607
+ const onTokenChange = t8;
608
+ let t9;
609
+ if ($[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
610
+ t9 = () => {
611
+ setToken("");
612
+ };
613
+ $[15] = t9;
614
+ } else {
615
+ t9 = $[15];
616
+ }
617
+ const clearToken = t9;
618
+ let t10;
619
+ if ($[16] !== locale) {
620
+ t10 = createStudioI18n(locale);
621
+ $[16] = locale;
622
+ $[17] = t10;
623
+ } else {
624
+ t10 = $[17];
625
+ }
626
+ const i18n = t10;
627
+ let t11;
628
+ if ($[18] !== basePath || $[19] !== client || $[20] !== i18n || $[21] !== rulesInstalled || $[22] !== studio || $[23] !== token) {
629
+ t11 = /* @__PURE__ */ jsxDEV(ThemeProvider, {
630
+ children: token === "" ? /* @__PURE__ */ jsxDEV(StudioLogin, {
631
+ i18n,
632
+ onSubmit: setToken
633
+ }, void 0, false) : /* @__PURE__ */ jsxDEV(StudioShell, {
634
+ basePath,
635
+ clearToken,
636
+ client,
637
+ i18n,
638
+ onTokenChange,
639
+ rulesInstalled,
640
+ studio,
641
+ token
642
+ }, void 0, false)
643
+ }, void 0, false);
644
+ $[18] = basePath;
645
+ $[19] = client;
646
+ $[20] = i18n;
647
+ $[21] = rulesInstalled;
648
+ $[22] = studio;
649
+ $[23] = token;
650
+ $[24] = t11;
651
+ } else {
652
+ t11 = $[24];
653
+ }
654
+ return t11;
655
+ };
656
+
657
+ export { StudioApp };
@@ -0,0 +1,48 @@
1
+ import { c } from 'react/compiler-runtime';
2
+ import { studioI18n, createStudioI18n, StudioI18nContext } from './DEFAULT_LOCALE-CiX4W7Kr.js';
3
+ import { jsxDEV } from 'react/jsx-dev-runtime';
4
+
5
+ const resolveInstance = (i18n, locale, catalogs) => {
6
+ if (i18n !== void 0) {
7
+ return i18n;
8
+ }
9
+ if (locale === void 0 && catalogs === void 0) {
10
+ return studioI18n;
11
+ }
12
+ return createStudioI18n(locale, catalogs);
13
+ };
14
+ const StudioI18nProvider = (t0) => {
15
+ const $ = c(7);
16
+ const {
17
+ catalogs,
18
+ children,
19
+ i18n,
20
+ locale
21
+ } = t0;
22
+ let t1;
23
+ if ($[0] !== catalogs || $[1] !== i18n || $[2] !== locale) {
24
+ t1 = resolveInstance(i18n, locale, catalogs);
25
+ $[0] = catalogs;
26
+ $[1] = i18n;
27
+ $[2] = locale;
28
+ $[3] = t1;
29
+ } else {
30
+ t1 = $[3];
31
+ }
32
+ const instance = t1;
33
+ let t2;
34
+ if ($[4] !== children || $[5] !== instance) {
35
+ t2 = /* @__PURE__ */ jsxDEV(StudioI18nContext, {
36
+ value: instance,
37
+ children
38
+ }, void 0, false);
39
+ $[4] = children;
40
+ $[5] = instance;
41
+ $[6] = t2;
42
+ } else {
43
+ t2 = $[6];
44
+ }
45
+ return t2;
46
+ };
47
+
48
+ export { StudioI18nProvider };