@burdenoff/microfe-devportal 2026.715.10 → 2026.716.1
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/devportal/pages/ApplicationDetailPage.js +3 -12
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +168 -169
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,24 +2,24 @@ import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
|
2
2
|
import { cn as t } from "../utils/cn.js";
|
|
3
3
|
import { LoadingState as n } from "../components/LoadingState.js";
|
|
4
4
|
import { EmptyState as ee } from "../components/EmptyState.js";
|
|
5
|
-
import { useDeactivateAppMutation as te, useDeleteApplicationMutation as ne, useGetApplicationQuery as
|
|
6
|
-
import { PageLayout as
|
|
7
|
-
import { APP_TYPE_LABELS as
|
|
8
|
-
import { StatusBadge as
|
|
9
|
-
import { nativeImpact as
|
|
10
|
-
import { CheckboxField as
|
|
11
|
-
import { ConfirmDialog as
|
|
12
|
-
import { PermissionGuard as
|
|
5
|
+
import { useDeactivateAppMutation as te, useDeleteApplicationMutation as ne, useGetApplicationQuery as re, useRotateApplicationSigningSecretMutation as ie, useUpdateApplicationMutation as ae } from "../../generated/global-operations.js";
|
|
6
|
+
import { PageLayout as r, PageSection as i } from "../components/PageLayout.js";
|
|
7
|
+
import { APP_TYPE_LABELS as a } from "../utils/constants.js";
|
|
8
|
+
import { StatusBadge as oe } from "../components/StatusBadge.js";
|
|
9
|
+
import { nativeImpact as se, nativeNotify as o } from "../../utils/nativeBridge.js";
|
|
10
|
+
import { CheckboxField as ce, InputField as s, SelectField as c, TagInput as l, TextareaField as u } from "../components/FormField.js";
|
|
11
|
+
import { ConfirmDialog as d } from "../components/ConfirmDialog.js";
|
|
12
|
+
import { PermissionGuard as le } from "../components/PermissionGuard.js";
|
|
13
13
|
import "../components/index.js";
|
|
14
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
15
|
-
import { useDevportalPermission as
|
|
16
|
-
import { useEffect as
|
|
17
|
-
import { useI18n as
|
|
18
|
-
import { AlertCircle as
|
|
19
|
-
import { useParams as
|
|
20
|
-
import { Fragment as
|
|
14
|
+
import { DEVPORTAL_PERMISSIONS as f } from "../constants/permissions.js";
|
|
15
|
+
import { useDevportalPermission as p } from "../hooks/usePermission.js";
|
|
16
|
+
import { useEffect as m, useState as h } from "react";
|
|
17
|
+
import { useI18n as ue } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
18
|
+
import { AlertCircle as de, AlertTriangle as fe, AppWindow as pe, Archive as me, Check as g, Copy as he, Eye as ge, EyeOff as _e, Power as ve, RefreshCw as _, Save as ye, Send as be, Trash2 as xe } from "lucide-react";
|
|
19
|
+
import { useParams as Se } from "react-router-dom";
|
|
20
|
+
import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
21
21
|
//#region src/devportal/pages/EditApplicationPage.tsx
|
|
22
|
-
var
|
|
22
|
+
var Ce = [
|
|
23
23
|
{
|
|
24
24
|
value: "fluidgrids",
|
|
25
25
|
label: "FluidGrids"
|
|
@@ -36,27 +36,26 @@ var xe = [
|
|
|
36
36
|
value: "botlit",
|
|
37
37
|
label: "Botlit"
|
|
38
38
|
}
|
|
39
|
-
],
|
|
39
|
+
], we = Object.entries(a).map(([e, t]) => ({
|
|
40
40
|
value: e,
|
|
41
41
|
label: t
|
|
42
|
-
})),
|
|
42
|
+
})), x = [
|
|
43
43
|
{
|
|
44
44
|
value: "PUBLIC",
|
|
45
|
-
label: "Public
|
|
45
|
+
label: "Public — listed in the marketplace after review"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
value: "PRIVATE",
|
|
49
|
-
label: "Private — only you (creator) can see it"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
value: "UNLISTED",
|
|
53
|
-
label: "Unlisted — accessible via direct link"
|
|
49
|
+
label: "Private — only you (the creator) can see it"
|
|
54
50
|
},
|
|
55
51
|
{
|
|
56
52
|
value: "INTERNAL",
|
|
57
53
|
label: "Internal — visible to your entire dev org"
|
|
58
54
|
}
|
|
59
|
-
],
|
|
55
|
+
], Te = [...x, {
|
|
56
|
+
value: "UNLISTED",
|
|
57
|
+
label: "Unlisted — shareable via link, not listed in store"
|
|
58
|
+
}], Ee = [
|
|
60
59
|
{
|
|
61
60
|
value: "ai",
|
|
62
61
|
label: "AI & Automation"
|
|
@@ -86,7 +85,7 @@ var xe = [
|
|
|
86
85
|
label: "Triggers"
|
|
87
86
|
}
|
|
88
87
|
];
|
|
89
|
-
function
|
|
88
|
+
function De(e) {
|
|
90
89
|
return e ? {
|
|
91
90
|
id: e.id,
|
|
92
91
|
name: e.name,
|
|
@@ -129,21 +128,21 @@ function Te(e) {
|
|
|
129
128
|
updatedAt: e.updatedAt
|
|
130
129
|
} : null;
|
|
131
130
|
}
|
|
132
|
-
var
|
|
133
|
-
let { navigate:
|
|
134
|
-
let n =
|
|
131
|
+
var S = () => {
|
|
132
|
+
let { navigate: a, basePath: S } = e(), { appId: C } = Se(), { t: w } = ue(), { allowed: T } = p(f.APP_UPDATE), { allowed: E } = p(f.APP_DELETE), D = (e, t) => {
|
|
133
|
+
let n = w(e);
|
|
135
134
|
return n === e ? t : n;
|
|
136
|
-
}, [O, k] =
|
|
137
|
-
variables: { id:
|
|
138
|
-
skip: !
|
|
139
|
-
}), [G] =
|
|
140
|
-
|
|
135
|
+
}, [O, k] = h(!1), [A, j] = h({}), [Oe, M] = h(!1), [ke, N] = h(!1), [Ae, P] = h(!1), [F, I] = h(!1), [L, R] = h(!1), [z, B] = h(!1), [V, je] = h(null), [Me, H] = h(!1), { data: U, loading: Ne, error: W, refetch: Pe } = re({
|
|
136
|
+
variables: { id: C },
|
|
137
|
+
skip: !C
|
|
138
|
+
}), [G] = ae(), [Fe] = ne(), [Ie] = te(), [Le] = ie(), K = De(U?.application);
|
|
139
|
+
m(() => {
|
|
141
140
|
let e = K?.name;
|
|
142
|
-
if (!
|
|
141
|
+
if (!C || !e) return;
|
|
143
142
|
let t = window.__breadcrumbRegistry;
|
|
144
|
-
return t?.register(
|
|
145
|
-
}, [
|
|
146
|
-
let [q, J] =
|
|
143
|
+
return t?.register(C, e), () => t?.unregister(C);
|
|
144
|
+
}, [C, K?.name]);
|
|
145
|
+
let [q, J] = h({
|
|
147
146
|
name: "",
|
|
148
147
|
slug: "",
|
|
149
148
|
shortDescription: "",
|
|
@@ -162,8 +161,8 @@ var C = () => {
|
|
|
162
161
|
oauthAuthUrl: "",
|
|
163
162
|
oauthRevokeUrl: "",
|
|
164
163
|
requiresApproval: !1
|
|
165
|
-
}), [Y, X] =
|
|
166
|
-
|
|
164
|
+
}), [Y, X] = h([]);
|
|
165
|
+
m(() => {
|
|
167
166
|
if (K) {
|
|
168
167
|
J({
|
|
169
168
|
name: K.name,
|
|
@@ -190,7 +189,7 @@ var C = () => {
|
|
|
190
189
|
}
|
|
191
190
|
}, [U?.application]);
|
|
192
191
|
let Z = (e) => {
|
|
193
|
-
|
|
192
|
+
a?.(`${S}${e}`);
|
|
194
193
|
}, Q = (e, t) => {
|
|
195
194
|
J((n) => ({
|
|
196
195
|
...n,
|
|
@@ -200,24 +199,24 @@ var C = () => {
|
|
|
200
199
|
[e]: void 0
|
|
201
200
|
}));
|
|
202
201
|
}, $ = async () => {
|
|
203
|
-
if (
|
|
202
|
+
if (C) {
|
|
204
203
|
B(!0);
|
|
205
204
|
try {
|
|
206
|
-
let e = (await
|
|
207
|
-
e && (
|
|
205
|
+
let e = (await Le({ variables: { id: C } })).data?.rotateApplicationSigningSecret?.signingSecret;
|
|
206
|
+
e && (je(e), R(!0));
|
|
208
207
|
} catch {
|
|
209
|
-
|
|
208
|
+
o("error");
|
|
210
209
|
} finally {
|
|
211
210
|
B(!1);
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
|
-
},
|
|
213
|
+
}, Re = async (e) => {
|
|
215
214
|
await navigator.clipboard.writeText(e), H(!0), setTimeout(() => H(!1), 2e3);
|
|
216
|
-
},
|
|
215
|
+
}, ze = () => {
|
|
217
216
|
let e = {};
|
|
218
217
|
return q.name.trim() ? q.name.length < 3 ? e.name = D("devportal.appNameMinLength", "Name must be at least 3 characters") : q.name.length > 100 && (e.name = D("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = D("devportal.appNameRequired", "Application name is required"), q.slug.trim() ? /^[a-z0-9-]+$/.test(q.slug) || (e.slug = D("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = D("devportal.slugRequired", "Slug is required"), q.shortDescription.trim() ? q.shortDescription.length > 200 && (e.shortDescription = D("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = D("devportal.shortDescriptionRequired", "Short description is required"), q.appType || (e.appType = D("devportal.appTypeRequired", "Application type is required")), q.category || (e.category = D("devportal.categoryRequired", "Category is required")), j(e), Object.keys(e).length === 0;
|
|
219
|
-
},
|
|
220
|
-
if (e.preventDefault(), !(!
|
|
218
|
+
}, Be = async (e) => {
|
|
219
|
+
if (e.preventDefault(), !(!ze() || !K)) {
|
|
221
220
|
k(!0);
|
|
222
221
|
try {
|
|
223
222
|
await G({ variables: {
|
|
@@ -248,16 +247,16 @@ var C = () => {
|
|
|
248
247
|
k(!1);
|
|
249
248
|
}
|
|
250
249
|
}
|
|
251
|
-
},
|
|
250
|
+
}, Ve = async () => {
|
|
252
251
|
if (K) {
|
|
253
|
-
|
|
252
|
+
se("medium");
|
|
254
253
|
try {
|
|
255
|
-
await
|
|
254
|
+
await Fe({ variables: { id: K.id } }), o("success"), Z("/apps");
|
|
256
255
|
} catch (e) {
|
|
257
|
-
|
|
256
|
+
o("error"), console.error("Failed to delete application:", e);
|
|
258
257
|
}
|
|
259
258
|
}
|
|
260
|
-
},
|
|
259
|
+
}, He = async () => {
|
|
261
260
|
if (K) try {
|
|
262
261
|
await G({ variables: {
|
|
263
262
|
id: K.id,
|
|
@@ -266,91 +265,91 @@ var C = () => {
|
|
|
266
265
|
} catch (e) {
|
|
267
266
|
console.error("Failed to deprecate application:", e);
|
|
268
267
|
}
|
|
269
|
-
},
|
|
268
|
+
}, Ue = async () => {
|
|
270
269
|
if (K) try {
|
|
271
|
-
await
|
|
270
|
+
await Ie({ variables: { id: K.id } }), P(!1), Z("/apps");
|
|
272
271
|
} catch (e) {
|
|
273
272
|
console.error("Failed to deactivate application:", e);
|
|
274
273
|
}
|
|
275
274
|
};
|
|
276
|
-
if (
|
|
277
|
-
if (W) return /* @__PURE__ */
|
|
275
|
+
if (Ne) return /* @__PURE__ */ y(n, { message: D("devportal.loadingApplication", "Loading application...") });
|
|
276
|
+
if (W) return /* @__PURE__ */ y(r, {
|
|
278
277
|
title: D("devportal.error", "Error"),
|
|
279
|
-
backLink: `${
|
|
278
|
+
backLink: `${S}/apps`,
|
|
280
279
|
backLabel: D("devportal.backToApplications", "Back to Applications"),
|
|
281
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ b("div", {
|
|
282
281
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
283
282
|
children: [
|
|
284
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ y(de, {
|
|
285
284
|
size: 48,
|
|
286
285
|
className: "text-status-error-text mb-4"
|
|
287
286
|
}),
|
|
288
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ y("h3", {
|
|
289
288
|
className: "text-lg font-semibold mb-2",
|
|
290
289
|
children: D("devportal.failedToLoadApplication", "Failed to load application")
|
|
291
290
|
}),
|
|
292
|
-
/* @__PURE__ */
|
|
291
|
+
/* @__PURE__ */ y("p", {
|
|
293
292
|
className: "text-sm text-text-secondary",
|
|
294
293
|
children: W.message
|
|
295
294
|
})
|
|
296
295
|
]
|
|
297
296
|
})
|
|
298
297
|
});
|
|
299
|
-
if (!K) return /* @__PURE__ */
|
|
298
|
+
if (!K) return /* @__PURE__ */ y(r, {
|
|
300
299
|
title: D("devportal.notFound", "Not Found"),
|
|
301
|
-
backLink: `${
|
|
300
|
+
backLink: `${S}/apps`,
|
|
302
301
|
backLabel: D("devportal.backToApplications", "Back to Applications"),
|
|
303
|
-
children: /* @__PURE__ */
|
|
302
|
+
children: /* @__PURE__ */ y(ee, {
|
|
304
303
|
illustration: "empty-generic",
|
|
305
|
-
icon: /* @__PURE__ */
|
|
304
|
+
icon: /* @__PURE__ */ y(pe, { size: 48 }),
|
|
306
305
|
title: D("devportal.applicationNotFound", "Application not found"),
|
|
307
306
|
description: D("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
|
|
308
307
|
})
|
|
309
308
|
});
|
|
310
|
-
let
|
|
311
|
-
return /* @__PURE__ */
|
|
312
|
-
permission:
|
|
313
|
-
children: /* @__PURE__ */
|
|
309
|
+
let We = K.status === "DRAFT" || K.status === "REJECTED", Ge = K.status === "PUBLISHED", Ke = K.status === "ACTIVE" || K.status === "PUBLISHED";
|
|
310
|
+
return /* @__PURE__ */ y(le, {
|
|
311
|
+
permission: f.APP_UPDATE,
|
|
312
|
+
children: /* @__PURE__ */ b(r, {
|
|
314
313
|
title: `${D("devportal.editAppTitlePrefix", "Edit:")} ${K.name}`,
|
|
315
314
|
description: D("devportal.editAppDescription", "Update your application settings"),
|
|
316
315
|
purpose: D("devportal.editAppPurpose", "Change how this app appears and behaves — its name, description, classification, links, and lifecycle settings. Use the danger zone at the bottom to deprecate or delete it when it is retired."),
|
|
317
|
-
backLink: `${
|
|
316
|
+
backLink: `${S}/apps/${K.id}`,
|
|
318
317
|
backLabel: D("devportal.backToApplication", "Back to Application"),
|
|
319
|
-
actions: /* @__PURE__ */
|
|
318
|
+
actions: /* @__PURE__ */ y("div", {
|
|
320
319
|
className: "flex items-center gap-2",
|
|
321
|
-
children: /* @__PURE__ */
|
|
320
|
+
children: /* @__PURE__ */ y(oe, {
|
|
322
321
|
status: K.status,
|
|
323
322
|
type: "app"
|
|
324
323
|
})
|
|
325
324
|
}),
|
|
326
325
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
onSubmit:
|
|
326
|
+
/* @__PURE__ */ b("form", {
|
|
327
|
+
onSubmit: Be,
|
|
329
328
|
className: "space-y-8 max-w-3xl",
|
|
330
329
|
children: [
|
|
331
|
-
K.status === "PUBLISHED" && /* @__PURE__ */
|
|
330
|
+
K.status === "PUBLISHED" && /* @__PURE__ */ b("div", {
|
|
332
331
|
className: "rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4 flex gap-3",
|
|
333
|
-
children: [/* @__PURE__ */
|
|
332
|
+
children: [/* @__PURE__ */ y(fe, {
|
|
334
333
|
size: 20,
|
|
335
334
|
className: "text-status-warning-text flex-shrink-0 mt-0.5"
|
|
336
|
-
}), /* @__PURE__ */
|
|
335
|
+
}), /* @__PURE__ */ b("div", {
|
|
337
336
|
className: "text-sm text-status-warning-text",
|
|
338
|
-
children: [/* @__PURE__ */
|
|
337
|
+
children: [/* @__PURE__ */ y("p", {
|
|
339
338
|
className: "font-medium",
|
|
340
339
|
children: D("devportal.appIsPublished", "This application is published")
|
|
341
|
-
}), /* @__PURE__ */
|
|
340
|
+
}), /* @__PURE__ */ y("p", {
|
|
342
341
|
className: "mt-1 text-status-warning-text",
|
|
343
342
|
children: D("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
|
|
344
343
|
})]
|
|
345
344
|
})]
|
|
346
345
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ y(i, {
|
|
348
347
|
title: D("devportal.basicInformation", "Basic Information"),
|
|
349
348
|
description: D("devportal.basicInformationDescription", "Core details about your application"),
|
|
350
|
-
children: /* @__PURE__ */
|
|
349
|
+
children: /* @__PURE__ */ b("div", {
|
|
351
350
|
className: "space-y-4",
|
|
352
351
|
children: [
|
|
353
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ y(s, {
|
|
354
353
|
label: D("devportal.applicationName", "Application Name"),
|
|
355
354
|
value: q.name,
|
|
356
355
|
onChange: (e) => Q("name", e.target.value),
|
|
@@ -358,7 +357,7 @@ var C = () => {
|
|
|
358
357
|
required: !0,
|
|
359
358
|
error: A.name
|
|
360
359
|
}),
|
|
361
|
-
/* @__PURE__ */
|
|
360
|
+
/* @__PURE__ */ y(s, {
|
|
362
361
|
label: D("devportal.slug", "Slug"),
|
|
363
362
|
value: q.slug,
|
|
364
363
|
onChange: (e) => Q("slug", e.target.value.toLowerCase()),
|
|
@@ -367,7 +366,7 @@ var C = () => {
|
|
|
367
366
|
error: A.slug,
|
|
368
367
|
hint: D("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
|
|
369
368
|
}),
|
|
370
|
-
/* @__PURE__ */
|
|
369
|
+
/* @__PURE__ */ y(u, {
|
|
371
370
|
label: D("devportal.shortDescription", "Short Description"),
|
|
372
371
|
value: q.shortDescription,
|
|
373
372
|
onChange: (e) => Q("shortDescription", e.target.value),
|
|
@@ -377,7 +376,7 @@ var C = () => {
|
|
|
377
376
|
hint: `${q.shortDescription.length}/200 ${D("devportal.characters", "characters")}`,
|
|
378
377
|
rows: 2
|
|
379
378
|
}),
|
|
380
|
-
/* @__PURE__ */
|
|
379
|
+
/* @__PURE__ */ y(u, {
|
|
381
380
|
label: D("devportal.fullDescription", "Full Description"),
|
|
382
381
|
value: q.description,
|
|
383
382
|
onChange: (e) => Q("description", e.target.value),
|
|
@@ -388,58 +387,58 @@ var C = () => {
|
|
|
388
387
|
]
|
|
389
388
|
})
|
|
390
389
|
}),
|
|
391
|
-
/* @__PURE__ */
|
|
390
|
+
/* @__PURE__ */ b(i, {
|
|
392
391
|
title: D("devportal.classification", "Classification"),
|
|
393
392
|
description: D("devportal.classificationDescription", "Categorize your application"),
|
|
394
393
|
children: [
|
|
395
|
-
/* @__PURE__ */
|
|
394
|
+
/* @__PURE__ */ b("div", {
|
|
396
395
|
className: "grid gap-4 sm:grid-cols-2",
|
|
397
396
|
children: [
|
|
398
|
-
/* @__PURE__ */
|
|
397
|
+
/* @__PURE__ */ y(c, {
|
|
399
398
|
label: D("devportal.applicationType", "Application Type"),
|
|
400
399
|
value: q.appType,
|
|
401
400
|
onChange: (e) => Q("appType", e.target.value),
|
|
402
|
-
options:
|
|
401
|
+
options: we,
|
|
403
402
|
required: !0,
|
|
404
403
|
error: A.appType
|
|
405
404
|
}),
|
|
406
|
-
/* @__PURE__ */
|
|
405
|
+
/* @__PURE__ */ y(c, {
|
|
407
406
|
label: D("devportal.category", "Category"),
|
|
408
407
|
value: q.category,
|
|
409
408
|
onChange: (e) => Q("category", e.target.value),
|
|
410
|
-
options:
|
|
409
|
+
options: Ee,
|
|
411
410
|
required: !0,
|
|
412
411
|
error: A.category
|
|
413
412
|
}),
|
|
414
|
-
/* @__PURE__ */
|
|
413
|
+
/* @__PURE__ */ y(c, {
|
|
415
414
|
label: D("devportal.visibility", "Visibility"),
|
|
416
415
|
value: q.visibility,
|
|
417
416
|
onChange: (e) => Q("visibility", e.target.value),
|
|
418
|
-
options:
|
|
417
|
+
options: K?.appType === "WORKFLOW" ? Te : x,
|
|
419
418
|
hint: q.visibility === "PUBLIC" ? D("devportal.visibilityHintPublic", "Listed in the marketplace after review approval — anyone can discover and install it") : q.visibility === "UNLISTED" ? D("devportal.visibilityHintUnlisted", "Not in the store, but accessible via a direct link. You can still submit for marketplace review") : q.visibility === "INTERNAL" ? D("devportal.visibilityHintInternal", "Visible to all members of your developer organization — no one outside can access it") : D("devportal.visibilityHintPrivate", "Only you (the creator) can see this — other org members cannot access it")
|
|
420
419
|
})
|
|
421
420
|
]
|
|
422
421
|
}),
|
|
423
|
-
/* @__PURE__ */
|
|
422
|
+
/* @__PURE__ */ y(l, {
|
|
424
423
|
label: D("devportal.tags", "Tags"),
|
|
425
424
|
value: q.tags,
|
|
426
425
|
onChange: (e) => Q("tags", e),
|
|
427
426
|
placeholder: D("devportal.addTagsPlaceholder", "Add tags (press Enter)")
|
|
428
427
|
}),
|
|
429
|
-
/* @__PURE__ */
|
|
428
|
+
/* @__PURE__ */ y(l, {
|
|
430
429
|
label: D("devportal.keywords", "Keywords"),
|
|
431
430
|
value: q.keywords,
|
|
432
431
|
onChange: (e) => Q("keywords", e),
|
|
433
432
|
placeholder: D("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
|
|
434
433
|
}),
|
|
435
|
-
(q.appType === "NODE" || q.appType === "WORKFLOW") && /* @__PURE__ */
|
|
434
|
+
(q.appType === "NODE" || q.appType === "WORKFLOW") && /* @__PURE__ */ b("div", {
|
|
436
435
|
className: "space-y-2",
|
|
437
436
|
children: [
|
|
438
|
-
/* @__PURE__ */
|
|
437
|
+
/* @__PURE__ */ y("label", {
|
|
439
438
|
className: "block text-sm font-medium text-text-primary",
|
|
440
439
|
children: "Compatible Products"
|
|
441
440
|
}),
|
|
442
|
-
/* @__PURE__ */
|
|
441
|
+
/* @__PURE__ */ b("p", {
|
|
443
442
|
className: "text-xs text-text-secondary",
|
|
444
443
|
children: [
|
|
445
444
|
"Select which products this ",
|
|
@@ -448,14 +447,14 @@ var C = () => {
|
|
|
448
447
|
"works with. Users will see it in those products' node stores."
|
|
449
448
|
]
|
|
450
449
|
}),
|
|
451
|
-
/* @__PURE__ */
|
|
450
|
+
/* @__PURE__ */ y("div", {
|
|
452
451
|
className: "flex flex-wrap gap-3",
|
|
453
|
-
children:
|
|
452
|
+
children: Ce.map((e) => {
|
|
454
453
|
let n = Y.includes(e.value);
|
|
455
|
-
return /* @__PURE__ */
|
|
454
|
+
return /* @__PURE__ */ b("label", {
|
|
456
455
|
className: t("flex items-center gap-2 cursor-pointer rounded-md border px-3 py-2 text-sm transition-colors", n ? "border-primary bg-primary/10 text-text-primary" : "border-border-subtle hover:border-border text-text-secondary hover:text-text-primary"),
|
|
457
456
|
children: [
|
|
458
|
-
/* @__PURE__ */
|
|
457
|
+
/* @__PURE__ */ y("input", {
|
|
459
458
|
type: "checkbox",
|
|
460
459
|
className: "sr-only",
|
|
461
460
|
checked: n,
|
|
@@ -463,7 +462,7 @@ var C = () => {
|
|
|
463
462
|
X((t) => n ? t.filter((t) => t !== e.value) : [...t, e.value]), I(!0);
|
|
464
463
|
}
|
|
465
464
|
}),
|
|
466
|
-
n && /* @__PURE__ */
|
|
465
|
+
n && /* @__PURE__ */ y(g, {
|
|
467
466
|
size: 14,
|
|
468
467
|
className: "text-primary flex-shrink-0"
|
|
469
468
|
}),
|
|
@@ -476,48 +475,48 @@ var C = () => {
|
|
|
476
475
|
})
|
|
477
476
|
]
|
|
478
477
|
}),
|
|
479
|
-
/* @__PURE__ */
|
|
478
|
+
/* @__PURE__ */ y(i, {
|
|
480
479
|
title: D("devportal.links", "Links"),
|
|
481
480
|
description: D("devportal.linksDescription", "External resources for your application"),
|
|
482
|
-
children: /* @__PURE__ */
|
|
481
|
+
children: /* @__PURE__ */ b("div", {
|
|
483
482
|
className: "grid gap-4 sm:grid-cols-2",
|
|
484
483
|
children: [
|
|
485
|
-
/* @__PURE__ */
|
|
484
|
+
/* @__PURE__ */ y(s, {
|
|
486
485
|
label: D("devportal.websiteUrl", "Website URL"),
|
|
487
486
|
type: "url",
|
|
488
487
|
value: q.websiteUrl,
|
|
489
488
|
onChange: (e) => Q("websiteUrl", e.target.value),
|
|
490
489
|
placeholder: D("devportal.websiteUrlPlaceholder", "https://example.com")
|
|
491
490
|
}),
|
|
492
|
-
/* @__PURE__ */
|
|
491
|
+
/* @__PURE__ */ y(s, {
|
|
493
492
|
label: D("devportal.documentationUrl", "Documentation URL"),
|
|
494
493
|
type: "url",
|
|
495
494
|
value: q.documentationUrl,
|
|
496
495
|
onChange: (e) => Q("documentationUrl", e.target.value),
|
|
497
496
|
placeholder: D("devportal.documentationUrlPlaceholder", "https://docs.example.com")
|
|
498
497
|
}),
|
|
499
|
-
/* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ y(s, {
|
|
500
499
|
label: D("devportal.supportUrl", "Support URL"),
|
|
501
500
|
type: "url",
|
|
502
501
|
value: q.supportUrl,
|
|
503
502
|
onChange: (e) => Q("supportUrl", e.target.value),
|
|
504
503
|
placeholder: D("devportal.supportUrlPlaceholder", "https://support.example.com")
|
|
505
504
|
}),
|
|
506
|
-
/* @__PURE__ */
|
|
505
|
+
/* @__PURE__ */ y(s, {
|
|
507
506
|
label: D("devportal.githubUrl", "GitHub URL"),
|
|
508
507
|
type: "url",
|
|
509
508
|
value: q.githubUrl,
|
|
510
509
|
onChange: (e) => Q("githubUrl", e.target.value),
|
|
511
510
|
placeholder: D("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
|
|
512
511
|
}),
|
|
513
|
-
/* @__PURE__ */
|
|
512
|
+
/* @__PURE__ */ y(s, {
|
|
514
513
|
label: D("devportal.privacyPolicyUrl", "Privacy Policy URL"),
|
|
515
514
|
type: "url",
|
|
516
515
|
value: q.privacyPolicyUrl,
|
|
517
516
|
onChange: (e) => Q("privacyPolicyUrl", e.target.value),
|
|
518
517
|
placeholder: D("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
|
|
519
518
|
}),
|
|
520
|
-
/* @__PURE__ */
|
|
519
|
+
/* @__PURE__ */ y(s, {
|
|
521
520
|
label: D("devportal.termsOfServiceUrl", "Terms of Service URL"),
|
|
522
521
|
type: "url",
|
|
523
522
|
value: q.termsOfServiceUrl,
|
|
@@ -527,13 +526,13 @@ var C = () => {
|
|
|
527
526
|
]
|
|
528
527
|
})
|
|
529
528
|
}),
|
|
530
|
-
(q.appType === "INTEGRATION" || q.appType === "API_INTEGRATION") && /* @__PURE__ */
|
|
529
|
+
(q.appType === "INTEGRATION" || q.appType === "API_INTEGRATION") && /* @__PURE__ */ y(i, {
|
|
531
530
|
title: "Integration Setup",
|
|
532
531
|
description: "Configure the endpoints for your integration. After a user installs, we redirect them to your callback URL so your server can complete the connection.",
|
|
533
|
-
children: /* @__PURE__ */
|
|
532
|
+
children: /* @__PURE__ */ b("div", {
|
|
534
533
|
className: "space-y-4",
|
|
535
534
|
children: [
|
|
536
|
-
/* @__PURE__ */
|
|
535
|
+
/* @__PURE__ */ y(s, {
|
|
537
536
|
label: "Post-install Callback URL",
|
|
538
537
|
type: "url",
|
|
539
538
|
value: q.oauthAuthUrl,
|
|
@@ -541,7 +540,7 @@ var C = () => {
|
|
|
541
540
|
placeholder: "https://yourapp.com/callback",
|
|
542
541
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
543
542
|
}),
|
|
544
|
-
/* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ y(s, {
|
|
545
544
|
label: "Revoke URL",
|
|
546
545
|
type: "url",
|
|
547
546
|
value: q.oauthRevokeUrl,
|
|
@@ -551,19 +550,19 @@ var C = () => {
|
|
|
551
550
|
}),
|
|
552
551
|
(() => {
|
|
553
552
|
let e = V ?? U?.application?.signingSecret, t = "boff_sk_" + "•".repeat(32);
|
|
554
|
-
return /* @__PURE__ */
|
|
553
|
+
return /* @__PURE__ */ b("div", {
|
|
555
554
|
className: "space-y-1.5",
|
|
556
555
|
children: [
|
|
557
|
-
/* @__PURE__ */
|
|
556
|
+
/* @__PURE__ */ y("label", {
|
|
558
557
|
className: "block text-sm font-medium text-text-primary",
|
|
559
558
|
children: "Signing Secret"
|
|
560
559
|
}),
|
|
561
|
-
/* @__PURE__ */
|
|
560
|
+
/* @__PURE__ */ b("p", {
|
|
562
561
|
className: "text-xs text-text-secondary",
|
|
563
562
|
children: [
|
|
564
563
|
"Use this secret to authenticate",
|
|
565
564
|
" ",
|
|
566
|
-
/* @__PURE__ */
|
|
565
|
+
/* @__PURE__ */ y("code", {
|
|
567
566
|
className: "font-mono text-xs bg-bg-sunken px-1 py-0.5 rounded",
|
|
568
567
|
children: "verifyInstallation"
|
|
569
568
|
}),
|
|
@@ -571,55 +570,55 @@ var C = () => {
|
|
|
571
570
|
"calls from your integration server. Store it securely — it is only shown immediately after generation or rotation."
|
|
572
571
|
]
|
|
573
572
|
}),
|
|
574
|
-
e ? /* @__PURE__ */
|
|
573
|
+
e ? /* @__PURE__ */ b("div", {
|
|
575
574
|
className: "flex items-center gap-2",
|
|
576
|
-
children: [/* @__PURE__ */
|
|
575
|
+
children: [/* @__PURE__ */ b("div", {
|
|
577
576
|
className: "flex-1 flex items-center gap-0 rounded-md border border-border-default bg-bg-sunken overflow-hidden",
|
|
578
577
|
children: [
|
|
579
|
-
/* @__PURE__ */
|
|
578
|
+
/* @__PURE__ */ y("code", {
|
|
580
579
|
className: "flex-1 px-3 py-2 text-xs font-mono text-text-primary truncate",
|
|
581
580
|
children: L ? e : t
|
|
582
581
|
}),
|
|
583
|
-
/* @__PURE__ */
|
|
582
|
+
/* @__PURE__ */ y("button", {
|
|
584
583
|
type: "button",
|
|
585
584
|
onClick: () => R((e) => !e),
|
|
586
585
|
className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
|
|
587
586
|
title: L ? "Hide" : "Reveal",
|
|
588
|
-
children:
|
|
587
|
+
children: y(L ? _e : ge, { size: 14 })
|
|
589
588
|
}),
|
|
590
|
-
/* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ y("button", {
|
|
591
590
|
type: "button",
|
|
592
|
-
onClick: () =>
|
|
591
|
+
onClick: () => Re(e),
|
|
593
592
|
className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
|
|
594
593
|
title: "Copy to clipboard",
|
|
595
|
-
children:
|
|
594
|
+
children: Me ? /* @__PURE__ */ y(g, {
|
|
596
595
|
size: 14,
|
|
597
596
|
className: "text-green-500"
|
|
598
|
-
}) : /* @__PURE__ */
|
|
597
|
+
}) : /* @__PURE__ */ y(he, { size: 14 })
|
|
599
598
|
})
|
|
600
599
|
]
|
|
601
|
-
}), /* @__PURE__ */
|
|
600
|
+
}), /* @__PURE__ */ b("button", {
|
|
602
601
|
type: "button",
|
|
603
602
|
onClick: $,
|
|
604
603
|
disabled: z,
|
|
605
604
|
className: "flex items-center gap-1.5 px-3 py-2 text-xs rounded-md border border-border-default bg-bg-default text-text-primary hover:bg-bg-subtle disabled:opacity-50",
|
|
606
605
|
title: "Rotate signing secret",
|
|
607
|
-
children: [/* @__PURE__ */
|
|
606
|
+
children: [/* @__PURE__ */ y(_, {
|
|
608
607
|
size: 12,
|
|
609
608
|
className: z ? "animate-spin" : ""
|
|
610
609
|
}), "Rotate"]
|
|
611
610
|
})]
|
|
612
|
-
}) : /* @__PURE__ */
|
|
611
|
+
}) : /* @__PURE__ */ b("button", {
|
|
613
612
|
type: "button",
|
|
614
613
|
onClick: $,
|
|
615
614
|
disabled: z,
|
|
616
615
|
className: "flex items-center gap-1.5 px-3 py-2 text-xs rounded-md border border-border-default bg-bg-default text-text-primary hover:bg-bg-subtle disabled:opacity-50",
|
|
617
|
-
children: [/* @__PURE__ */
|
|
616
|
+
children: [/* @__PURE__ */ y(_, {
|
|
618
617
|
size: 12,
|
|
619
618
|
className: z ? "animate-spin" : ""
|
|
620
619
|
}), "Generate Signing Secret"]
|
|
621
620
|
}),
|
|
622
|
-
V && /* @__PURE__ */
|
|
621
|
+
V && /* @__PURE__ */ y("p", {
|
|
623
622
|
className: "text-xs text-amber-600 dark:text-amber-400",
|
|
624
623
|
children: "New secret generated. Copy it now — the old secret is already invalidated."
|
|
625
624
|
})
|
|
@@ -629,12 +628,12 @@ var C = () => {
|
|
|
629
628
|
]
|
|
630
629
|
})
|
|
631
630
|
}),
|
|
632
|
-
/* @__PURE__ */
|
|
631
|
+
/* @__PURE__ */ y(i, {
|
|
633
632
|
title: D("devportal.settings", "Settings"),
|
|
634
633
|
description: D("devportal.settingsDescription", "Additional configuration options"),
|
|
635
|
-
children: /* @__PURE__ */
|
|
634
|
+
children: /* @__PURE__ */ y("div", {
|
|
636
635
|
className: "space-y-4",
|
|
637
|
-
children: /* @__PURE__ */
|
|
636
|
+
children: /* @__PURE__ */ y(ce, {
|
|
638
637
|
label: D("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
|
|
639
638
|
description: D("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
|
|
640
639
|
checked: q.requiresApproval,
|
|
@@ -642,11 +641,11 @@ var C = () => {
|
|
|
642
641
|
})
|
|
643
642
|
})
|
|
644
643
|
}),
|
|
645
|
-
|
|
644
|
+
We && /* @__PURE__ */ b("div", {
|
|
646
645
|
className: "rounded-lg border border-border-subtle bg-bg-sunken p-4 space-y-2",
|
|
647
|
-
children: [/* @__PURE__ */
|
|
646
|
+
children: [/* @__PURE__ */ b("p", {
|
|
648
647
|
className: "text-sm font-medium text-text-primary flex items-center gap-2",
|
|
649
|
-
children: [/* @__PURE__ */
|
|
648
|
+
children: [/* @__PURE__ */ y(be, { size: 14 }), D("devportal.submissionChecklist", "Submission Checklist")]
|
|
650
649
|
}), [
|
|
651
650
|
{
|
|
652
651
|
label: D("devportal.checkName", "Name set"),
|
|
@@ -676,64 +675,64 @@ var C = () => {
|
|
|
676
675
|
label: D("devportal.checkVersion", "At least one version uploaded"),
|
|
677
676
|
ok: (U?.application?.versions?.totalCount ?? 0) > 0
|
|
678
677
|
}] : []
|
|
679
|
-
].map((e) => /* @__PURE__ */
|
|
678
|
+
].map((e) => /* @__PURE__ */ b("div", {
|
|
680
679
|
className: "flex items-center gap-2 text-sm",
|
|
681
|
-
children: [e.ok ? /* @__PURE__ */
|
|
680
|
+
children: [e.ok ? /* @__PURE__ */ y("span", {
|
|
682
681
|
className: "text-status-success-text",
|
|
683
682
|
children: "✓"
|
|
684
|
-
}) : /* @__PURE__ */
|
|
683
|
+
}) : /* @__PURE__ */ y("span", {
|
|
685
684
|
className: "text-status-error-text",
|
|
686
685
|
children: "✗"
|
|
687
|
-
}), /* @__PURE__ */
|
|
686
|
+
}), /* @__PURE__ */ y("span", {
|
|
688
687
|
className: e.ok ? "text-text-secondary line-through" : "text-text-primary",
|
|
689
688
|
children: e.label
|
|
690
689
|
})]
|
|
691
690
|
}, e.label))]
|
|
692
691
|
}),
|
|
693
|
-
/* @__PURE__ */
|
|
692
|
+
/* @__PURE__ */ b("div", {
|
|
694
693
|
className: "flex flex-col gap-4 border-t pt-6",
|
|
695
|
-
children: [/* @__PURE__ */
|
|
694
|
+
children: [/* @__PURE__ */ y("div", {
|
|
696
695
|
className: "flex items-center justify-end",
|
|
697
|
-
children: /* @__PURE__ */
|
|
696
|
+
children: /* @__PURE__ */ y("button", {
|
|
698
697
|
type: "submit",
|
|
699
698
|
disabled: O || !F || !T,
|
|
700
699
|
"aria-disabled": !T,
|
|
701
700
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
|
|
702
|
-
children: O ? /* @__PURE__ */
|
|
701
|
+
children: O ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), D("devportal.saving", "Saving...")] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(ye, { size: 16 }), D("devportal.saveChanges", "Save Changes")] })
|
|
703
702
|
})
|
|
704
|
-
}), /* @__PURE__ */
|
|
703
|
+
}), /* @__PURE__ */ b("div", {
|
|
705
704
|
className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-4",
|
|
706
705
|
children: [
|
|
707
|
-
/* @__PURE__ */
|
|
706
|
+
/* @__PURE__ */ y("h3", {
|
|
708
707
|
className: "text-sm font-medium text-status-error-text",
|
|
709
708
|
children: D("devportal.dangerZone", "Danger Zone")
|
|
710
709
|
}),
|
|
711
|
-
/* @__PURE__ */
|
|
710
|
+
/* @__PURE__ */ y("p", {
|
|
712
711
|
className: "mt-1 text-sm text-status-error-text",
|
|
713
712
|
children: D("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
|
|
714
713
|
}),
|
|
715
|
-
/* @__PURE__ */
|
|
714
|
+
/* @__PURE__ */ b("div", {
|
|
716
715
|
className: "mt-4 flex gap-3",
|
|
717
716
|
children: [
|
|
718
|
-
|
|
717
|
+
Ge && /* @__PURE__ */ b("button", {
|
|
719
718
|
type: "button",
|
|
720
719
|
onClick: () => N(!0),
|
|
721
720
|
className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
|
|
722
|
-
children: [/* @__PURE__ */
|
|
721
|
+
children: [/* @__PURE__ */ y(me, { size: 14 }), D("devportal.deprecateApp", "Deprecate App")]
|
|
723
722
|
}),
|
|
724
|
-
|
|
723
|
+
Ke && /* @__PURE__ */ b("button", {
|
|
725
724
|
type: "button",
|
|
726
725
|
onClick: () => P(!0),
|
|
727
726
|
className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
|
|
728
|
-
children: [/* @__PURE__ */
|
|
727
|
+
children: [/* @__PURE__ */ y(ve, { size: 14 }), D("devportal.deactivateApp", "Deactivate App")]
|
|
729
728
|
}),
|
|
730
|
-
/* @__PURE__ */
|
|
729
|
+
/* @__PURE__ */ b("button", {
|
|
731
730
|
type: "button",
|
|
732
731
|
onClick: () => M(!0),
|
|
733
732
|
disabled: !E,
|
|
734
733
|
"aria-disabled": !E,
|
|
735
734
|
className: "inline-flex items-center gap-2 rounded-md border border-status-error-bg bg-bg-surface px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors disabled:opacity-50",
|
|
736
|
-
children: [/* @__PURE__ */
|
|
735
|
+
children: [/* @__PURE__ */ y(xe, { size: 14 }), D("devportal.deleteApp", "Delete App")]
|
|
737
736
|
})
|
|
738
737
|
]
|
|
739
738
|
})
|
|
@@ -742,38 +741,38 @@ var C = () => {
|
|
|
742
741
|
})
|
|
743
742
|
]
|
|
744
743
|
}),
|
|
745
|
-
/* @__PURE__ */
|
|
746
|
-
open:
|
|
744
|
+
/* @__PURE__ */ y(d, {
|
|
745
|
+
open: Oe,
|
|
747
746
|
onOpenChange: M,
|
|
748
747
|
title: D("devportal.deleteApplication", "Delete Application"),
|
|
749
748
|
description: D("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${K.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
|
|
750
749
|
confirmLabel: D("devportal.deleteApplication", "Delete Application"),
|
|
751
750
|
variant: "destructive",
|
|
752
|
-
onConfirm:
|
|
751
|
+
onConfirm: Ve
|
|
753
752
|
}),
|
|
754
|
-
/* @__PURE__ */
|
|
755
|
-
open:
|
|
753
|
+
/* @__PURE__ */ y(d, {
|
|
754
|
+
open: ke,
|
|
756
755
|
onOpenChange: N,
|
|
757
756
|
title: D("devportal.deprecateApplication", "Deprecate Application"),
|
|
758
757
|
description: D("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${K.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
|
|
759
758
|
confirmLabel: D("devportal.deprecateApplication", "Deprecate Application"),
|
|
760
759
|
variant: "warning",
|
|
761
|
-
onConfirm:
|
|
760
|
+
onConfirm: He
|
|
762
761
|
}),
|
|
763
|
-
/* @__PURE__ */
|
|
764
|
-
open:
|
|
762
|
+
/* @__PURE__ */ y(d, {
|
|
763
|
+
open: Ae,
|
|
765
764
|
onOpenChange: P,
|
|
766
765
|
title: D("devportal.deactivateApplication", "Deactivate Application"),
|
|
767
766
|
description: D("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${K.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
|
|
768
767
|
confirmLabel: D("devportal.deactivateApplication", "Deactivate Application"),
|
|
769
768
|
variant: "destructive",
|
|
770
|
-
onConfirm:
|
|
769
|
+
onConfirm: Ue
|
|
771
770
|
})
|
|
772
771
|
]
|
|
773
772
|
})
|
|
774
773
|
});
|
|
775
774
|
};
|
|
776
775
|
//#endregion
|
|
777
|
-
export {
|
|
776
|
+
export { S as EditApplicationPage };
|
|
778
777
|
|
|
779
778
|
//# sourceMappingURL=EditApplicationPage.js.map
|