@plumile/backoffice-react 0.1.68 → 0.1.69
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/lib/esm/components/backoffice/columns/buildDataTableColumns.js +7 -8
- package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +4 -4
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +26 -26
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -1
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -1
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +17 -18
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +7 -8
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js +1 -2
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +4 -11
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +3 -4
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +4 -4
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -1
- package/lib/esm/pages/BackofficeDashboardPage.js +31 -32
- package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +167 -172
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/pages/BackofficeLayoutPage.js +30 -34
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
- package/lib/esm/pages/BackofficeToolsOperationPage.js +26 -27
- package/lib/esm/pages/BackofficeToolsOperationPage.js.map +1 -1
- package/lib/esm/pages/detail/buildTabsItems.js.map +1 -1
- package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +2 -2
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts +1 -1
- package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerList.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeToolsOperationPage.d.ts.map +1 -1
- package/lib/types/pages/detail/buildTabsItems.d.ts +1 -1
- package/lib/types/pages/detail/buildTabsItems.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -19,20 +19,19 @@ import { BackofficeToolsQueryBoundary as _ } from "../components/backoffice/tool
|
|
|
19
19
|
import { actions as v, form as y, inputHeader as b, keyValueGrid as x, outputStack as S } from "../components/backoffice/tools/backofficeToolsForm.css.js";
|
|
20
20
|
import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
21
21
|
import { useTranslation as E } from "react-i18next";
|
|
22
|
-
import { Button as D, DataTable as O,
|
|
23
|
-
import { useCallback as
|
|
24
|
-
import * as
|
|
25
|
-
import { Label as
|
|
26
|
-
import { Textarea as
|
|
27
|
-
import { CheckboxField as
|
|
28
|
-
import { Form as
|
|
29
|
-
import { FormErrorBanner as
|
|
30
|
-
import { FormGroup as
|
|
31
|
-
import { HighlightCode as
|
|
32
|
-
import { LazyBackofficeJsonViewer as V } from "@plumile/ui/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js";
|
|
22
|
+
import { Button as D, DataTable as O, LazyBackofficeJsonViewer as k, SimpleSelect as ee } from "@plumile/ui";
|
|
23
|
+
import { useCallback as te, useEffect as A, useMemo as j, useRef as M, useState as N } from "react";
|
|
24
|
+
import * as P from "react-relay";
|
|
25
|
+
import { Label as F } from "@plumile/ui/atomic/atoms/label/Label.js";
|
|
26
|
+
import { Textarea as I } from "@plumile/ui/atomic/atoms/textarea/Textarea.js";
|
|
27
|
+
import { CheckboxField as L } from "@plumile/ui/atomic/molecules/checkbox_field/CheckboxField.js";
|
|
28
|
+
import { Form as R } from "@plumile/ui/atomic/molecules/form/Form.js";
|
|
29
|
+
import { FormErrorBanner as z } from "@plumile/ui/atomic/molecules/form/FormErrorBanner.js";
|
|
30
|
+
import { FormGroup as B } from "@plumile/ui/atomic/molecules/form/FormGroup.js";
|
|
31
|
+
import { HighlightCode as V } from "@plumile/ui/atomic/molecules/highlight/HighlightCode.js";
|
|
33
32
|
import { BackofficeToolValidationError as H } from "@plumile/backoffice-core/types.js";
|
|
34
33
|
//#region src/pages/BackofficeToolsOperationPage.tsx
|
|
35
|
-
var { useLazyLoadQuery: U } =
|
|
34
|
+
var { useLazyLoadQuery: U } = P, W = (e, t) => e(t), G = (e, t) => typeof e == "function" ? e(t) : e ?? null, K = (e) => {
|
|
36
35
|
let t = {};
|
|
37
36
|
return e?.forEach((e) => {
|
|
38
37
|
e.kind === "boolean" ? t[e.id] = e.defaultValue ?? !1 : t[e.id] = e.defaultValue ?? "";
|
|
@@ -126,7 +125,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
126
125
|
}, `table-${t}`);
|
|
127
126
|
}
|
|
128
127
|
if (e.kind === "code") {
|
|
129
|
-
let n = e.label == null ? f : W(e.label, l), a = e.description == null ? void 0 : W(e.description, l), o = e.value(r), c = /* @__PURE__ */ w(
|
|
128
|
+
let n = e.label == null ? f : W(e.label, l), a = e.description == null ? void 0 : W(e.description, l), o = e.value(r), c = /* @__PURE__ */ w(V, {
|
|
130
129
|
badgeLabel: n,
|
|
131
130
|
copyCode: o,
|
|
132
131
|
fallbackCodeText: o
|
|
@@ -138,7 +137,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
138
137
|
}, `code-${t}`);
|
|
139
138
|
}
|
|
140
139
|
if (e.kind === "json") {
|
|
141
|
-
let n = e.label == null ? f : W(e.label, l), a = e.description == null ? void 0 : W(e.description, l), o = /* @__PURE__ */ w(
|
|
140
|
+
let n = e.label == null ? f : W(e.label, l), a = e.description == null ? void 0 : W(e.description, l), o = /* @__PURE__ */ w(k, {
|
|
142
141
|
value: e.value(r),
|
|
143
142
|
title: n
|
|
144
143
|
}, `json-${t}`);
|
|
@@ -206,7 +205,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
206
205
|
data: a
|
|
207
206
|
}) : null : /* @__PURE__ */ w(C, { children: t.render(a) });
|
|
208
207
|
}, Q = ({ operation: t }) => {
|
|
209
|
-
let { t: r } = E(), { t: a } = e(), { initiativeId: o, projectId: c } = h(), [u, d] =
|
|
208
|
+
let { t: r } = E(), { t: a } = e(), { initiativeId: o, projectId: c } = h(), [u, d] = N(j(() => K(t.inputs), [t.inputs])), [f, p] = N(null), [m, g] = N(0), [x, S] = N(null), [O, k] = N(!1), [P, V] = N(null), U = M({
|
|
210
209
|
initiativeId: o,
|
|
211
210
|
projectId: c
|
|
212
211
|
}), G = j(() => ({
|
|
@@ -253,7 +252,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
253
252
|
};
|
|
254
253
|
});
|
|
255
254
|
}, [o, c]);
|
|
256
|
-
let q =
|
|
255
|
+
let q = te(() => {
|
|
257
256
|
if (p(null), o == null || o.trim() === "") {
|
|
258
257
|
p(a("tools.errors.missingScope"));
|
|
259
258
|
return;
|
|
@@ -275,7 +274,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
275
274
|
e instanceof Error ? p(e.message) : p(a("tools.errors.unknown"));
|
|
276
275
|
return;
|
|
277
276
|
}
|
|
278
|
-
S(e),
|
|
277
|
+
S(e), k(!0), g((e) => e + 1);
|
|
279
278
|
}, [
|
|
280
279
|
o,
|
|
281
280
|
u,
|
|
@@ -283,11 +282,11 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
283
282
|
c,
|
|
284
283
|
a,
|
|
285
284
|
r
|
|
286
|
-
]), J = j(() =>
|
|
285
|
+
]), J = j(() => P == null || t.inputs == null ? null : t.inputs.find((e) => e.id === P && e.kind === "entityId") ?? null, [P, t.inputs]), Y = (e) => {
|
|
287
286
|
let t = W(e.label, r), i = u[e.id];
|
|
288
287
|
if (e.kind === "text") {
|
|
289
288
|
let n = typeof i == "string" ? i : "", a = e.placeholder == null ? void 0 : W(e.placeholder, r);
|
|
290
|
-
return /* @__PURE__ */ T(
|
|
289
|
+
return /* @__PURE__ */ T(B, { children: [/* @__PURE__ */ w(F, { children: t }), /* @__PURE__ */ w(I, {
|
|
291
290
|
value: n,
|
|
292
291
|
placeholder: a,
|
|
293
292
|
onChange: (t) => {
|
|
@@ -302,9 +301,9 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
302
301
|
}
|
|
303
302
|
if (e.kind === "json") {
|
|
304
303
|
let n = typeof i == "string" ? i : "", o = e.placeholder == null ? void 0 : W(e.placeholder, r), s = typeof e.defaultValue == "string" ? e.defaultValue : "", c = s.trim() !== "", l = a("tools.forms.actions.insertExample");
|
|
305
|
-
return /* @__PURE__ */ T(
|
|
304
|
+
return /* @__PURE__ */ T(B, { children: [/* @__PURE__ */ T("div", {
|
|
306
305
|
className: b,
|
|
307
|
-
children: [/* @__PURE__ */ w(
|
|
306
|
+
children: [/* @__PURE__ */ w(F, { children: t }), c && /* @__PURE__ */ w(D, {
|
|
308
307
|
type: "button",
|
|
309
308
|
variant: "text",
|
|
310
309
|
size: "small",
|
|
@@ -316,7 +315,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
316
315
|
},
|
|
317
316
|
children: l
|
|
318
317
|
})]
|
|
319
|
-
}), /* @__PURE__ */ w(
|
|
318
|
+
}), /* @__PURE__ */ w(I, {
|
|
320
319
|
value: n,
|
|
321
320
|
placeholder: o,
|
|
322
321
|
onChange: (t) => {
|
|
@@ -335,7 +334,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
335
334
|
value: e.value,
|
|
336
335
|
label: W(e.label, r)
|
|
337
336
|
}));
|
|
338
|
-
return /* @__PURE__ */ T(
|
|
337
|
+
return /* @__PURE__ */ T(B, { children: [/* @__PURE__ */ w(F, { children: t }), /* @__PURE__ */ w(ee, {
|
|
339
338
|
options: a,
|
|
340
339
|
value: n,
|
|
341
340
|
onChange: (t) => {
|
|
@@ -347,7 +346,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
347
346
|
placeholder: t
|
|
348
347
|
})] }, e.id);
|
|
349
348
|
}
|
|
350
|
-
if (e.kind === "boolean") return /* @__PURE__ */ w(
|
|
349
|
+
if (e.kind === "boolean") return /* @__PURE__ */ w(B, { children: /* @__PURE__ */ w(L, {
|
|
351
350
|
label: t,
|
|
352
351
|
checked: typeof i == "boolean" ? i : !1,
|
|
353
352
|
onChange: (t) => {
|
|
@@ -372,7 +371,7 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
372
371
|
}));
|
|
373
372
|
}
|
|
374
373
|
});
|
|
375
|
-
return /* @__PURE__ */ T(
|
|
374
|
+
return /* @__PURE__ */ T(B, { children: [/* @__PURE__ */ w(F, { children: t }), r.trim() === "" ? a() : /* @__PURE__ */ w(l, {
|
|
376
375
|
entityId: e.entity,
|
|
377
376
|
id: r,
|
|
378
377
|
children: (e) => a(e)
|
|
@@ -389,11 +388,11 @@ var { useLazyLoadQuery: U } = N, W = (e, t) => e(t), G = (e, t) => typeof e == "
|
|
|
389
388
|
}) })), /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T(s, {
|
|
390
389
|
title: W(t.title, r),
|
|
391
390
|
description: t.subtitle == null ? void 0 : W(t.subtitle, r),
|
|
392
|
-
children: [/* @__PURE__ */ T(
|
|
391
|
+
children: [/* @__PURE__ */ T(R, {
|
|
393
392
|
onSubmit: X,
|
|
394
393
|
className: y,
|
|
395
394
|
children: [
|
|
396
|
-
/* @__PURE__ */ w(
|
|
395
|
+
/* @__PURE__ */ w(z, { message: f }),
|
|
397
396
|
Z,
|
|
398
397
|
/* @__PURE__ */ w("div", {
|
|
399
398
|
className: v,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeToolsOperationPage.js","names":[],"sources":["../../../src/pages/BackofficeToolsOperationPage.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\n/* eslint-disable @typescript-eslint/no-base-to-string */\nimport {\n type JSX,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport {\n type BackofficeToolInputSpec,\n type BackofficeToolOperation,\n type BackofficeToolOutputSpec,\n type BackofficeValueLabel,\n type I18nLabel,\n BackofficeToolValidationError,\n} from '@plumile/backoffice-core/types.js';\nimport { Textarea } from '@plumile/ui/atomic/atoms/textarea/Textarea.js';\nimport { Label } from '@plumile/ui/atomic/atoms/label/Label.js';\nimport { CheckboxField } from '@plumile/ui/atomic/molecules/checkbox_field/CheckboxField.js';\nimport { Form } from '@plumile/ui/atomic/molecules/form/Form.js';\nimport { FormGroup } from '@plumile/ui/atomic/molecules/form/FormGroup.js';\nimport { FormErrorBanner } from '@plumile/ui/atomic/molecules/form/FormErrorBanner.js';\nimport { Button, SimpleSelect, DataTable } from '@plumile/ui';\nimport { HighlightCode } from '@plumile/ui/atomic/molecules/highlight/HighlightCode.js';\nimport { LazyBackofficeJsonViewer } from '@plumile/ui/backoffice/molecules/backoffice_json_viewer/LazyBackofficeJsonViewer.js';\n\nimport { BackofficeDetailField } from '../components/backoffice/detail/BackofficeDetailField.js';\nimport { BackofficeDetailPayload } from '../components/backoffice/detail/BackofficeDetailPayload.js';\nimport { BackofficeDetailSection } from '../components/backoffice/detail/BackofficeDetailSection.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { EntityFilterValueText } from '../components/backoffice/filters/EntityFilterValue.js';\nimport { EntityIdFilterField } from '../components/backoffice/filters/EntityIdFilterField.js';\nimport { EntityIdPickerDialog } from '../components/backoffice/pickers/EntityIdPickerDialog.js';\nimport { BackofficeToolsErrorFallback } from '../components/backoffice/tools/BackofficeToolsErrorFallback.js';\nimport { BackofficeToolsDocPanel } from '../components/backoffice/tools/BackofficeToolsDocPanel.js';\nimport { BackofficeToolsQueryBoundary } from '../components/backoffice/tools/BackofficeToolsQueryBoundary.js';\nimport { BackofficeToolsPageLayout } from '../components/backoffice/tools/BackofficeToolsPageLayout.js';\nimport { useBackofficeToolsParams } from '../components/backoffice/tools/BackofficeToolsParamsContext.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildToolBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\n\nimport * as styles from '../components/backoffice/tools/backofficeToolsForm.css.js';\nimport * as docPanelStyles from '../components/backoffice/tools/backofficeToolsDocPanel.css.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst resolveValueLabel = (\n value: BackofficeValueLabel | null | undefined,\n tApp: TFunction,\n): string | number | null => {\n if (typeof value === 'function') {\n return value(tApp);\n }\n if (value == null) {\n return null;\n }\n return value;\n};\n\ntype ToolInputValues = Record<string, unknown>;\ntype EntityIdInputSpec = Extract<BackofficeToolInputSpec, { kind: 'entityId' }>;\n\ntype BuildToolVariablesInput = {\n operation: BackofficeToolOperation;\n inputValues: ToolInputValues;\n initiativeId: string | null;\n projectId: string | null;\n run: boolean;\n};\n\nconst buildInitialInputValues = (\n inputs?: readonly BackofficeToolInputSpec[],\n): ToolInputValues => {\n const output: ToolInputValues = {};\n inputs?.forEach((input) => {\n if (input.kind === 'boolean') {\n output[input.id] = input.defaultValue ?? false;\n } else {\n output[input.id] = input.defaultValue ?? '';\n }\n });\n return output;\n};\n\nconst cleanInputValues = (values: ToolInputValues): ToolInputValues => {\n const output: ToolInputValues = {};\n Object.entries(values).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') {\n return;\n }\n output[key] = trimmed;\n return;\n }\n output[key] = value;\n });\n return output;\n};\n\nconst buildToolVariables = ({\n operation,\n inputValues,\n initiativeId,\n projectId,\n run,\n}: BuildToolVariablesInput): Record<string, unknown> => {\n const cleanedInput = cleanInputValues(inputValues);\n\n const hasProjectField = Object.prototype.hasOwnProperty.call(\n inputValues,\n 'projectId',\n );\n const hasProjectEntity =\n operation.inputs?.some((input) => {\n return input.kind === 'entityId' && input.entity === 'projects';\n }) ?? false;\n if (\n (hasProjectField || hasProjectEntity) &&\n projectId != null &&\n projectId.trim() !== ''\n ) {\n const existing = cleanedInput.projectId;\n if (existing == null || String(existing).trim() === '') {\n cleanedInput.projectId = projectId;\n }\n }\n\n const defaultVariables = {\n scope: {\n initiativeId: initiativeId ?? '',\n },\n input: cleanedInput,\n run,\n };\n\n if (operation.buildVariables == null) {\n return defaultVariables;\n }\n\n const custom = operation.buildVariables(cleanedInput, {\n scope: {\n initiativeId,\n projectId,\n },\n run,\n });\n return {\n ...defaultVariables,\n ...custom,\n };\n};\n\nconst shouldShowProjectPicker = (\n operation: BackofficeToolOperation,\n): boolean => {\n if (operation.showProjectPicker != null) {\n return operation.showProjectPicker;\n }\n const { inputs } = operation;\n if (inputs == null) {\n return false;\n }\n return inputs.some((input) => {\n if (input.kind === 'entityId' && input.entity === 'projects') {\n return true;\n }\n return input.id === 'projectId';\n });\n};\n\nconst parseInputJson = (value: string): Record<string, unknown> | null => {\n try {\n const parsed: unknown = JSON.parse(value);\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return null;\n }\n return parsed as Record<string, unknown>;\n } catch {\n return null;\n }\n};\n\nconst applyPickerUpdatesToJson = (\n currentValue: string,\n updates: Record<string, string>,\n): string | null => {\n const parsed = parseInputJson(currentValue);\n if (parsed == null) {\n return null;\n }\n\n let next = parsed;\n\n Object.entries(updates).forEach(([key, nextValue]) => {\n if (!Object.prototype.hasOwnProperty.call(parsed, key)) {\n return;\n }\n if (parsed[key] === nextValue) {\n return;\n }\n if (next === parsed) {\n next = { ...parsed };\n }\n next[key] = nextValue;\n });\n\n const nextJson = JSON.stringify(next, null, 2);\n if (nextJson === currentValue) {\n return null;\n }\n\n return nextJson;\n};\n\ntype OutputRendererProps = {\n outputs: readonly BackofficeToolOutputSpec[];\n data: unknown;\n wrapDefault?: boolean;\n};\n\nconst resolveRowId = (row: unknown, index: number): string => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const maybeId = record.id;\n if (typeof maybeId === 'string' && maybeId.trim() !== '') {\n return maybeId;\n }\n const maybeKey = record.key;\n if (typeof maybeKey === 'string' && maybeKey.trim() !== '') {\n return maybeKey;\n }\n }\n return String(index);\n};\n\nconst OutputRenderer = ({\n outputs,\n data,\n wrapDefault = false,\n}: OutputRendererProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const defaultTitle = t('tools.output');\n\n const nodes = outputs.map((output, index) => {\n if (output.kind === 'table') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const columns = buildDataTableColumns(output.columns, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entity = entities[entityId];\n if (entity == null) {\n return null;\n }\n return entity.routes.detail(refId);\n },\n });\n const resolvedRows = output.rows(data);\n const rows = Array.isArray(resolvedRows) ? resolvedRows : [];\n const tableNode = (\n <DataTable\n key={`table-${index}`}\n columns={columns}\n rows={rows}\n getRowId={resolveRowId}\n />\n );\n if (wrapDefault) {\n return tableNode;\n }\n return (\n <BackofficeDetailSection\n key={`table-${index}`}\n title={title}\n description={description}\n >\n {tableNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'code') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const value = output.value(data);\n const codeNode = (\n <HighlightCode\n key={`code-${index}`}\n badgeLabel={title}\n copyCode={value}\n fallbackCodeText={value}\n />\n );\n if (wrapDefault) {\n return codeNode;\n }\n return (\n <BackofficeDetailSection\n key={`code-${index}`}\n title={title}\n description={description}\n >\n {codeNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'json') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const value = output.value(data);\n const jsonNode = (\n <LazyBackofficeJsonViewer\n key={`json-${index}`}\n value={value}\n title={title}\n />\n );\n if (wrapDefault || description == null) {\n return jsonNode;\n }\n return (\n <BackofficeDetailSection\n key={`json-${index}`}\n title={title}\n description={description}\n >\n {jsonNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'keyValue') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const items = output.items.map((item) => {\n const label = resolveLabel(item.label, tApp);\n const value = resolveValueLabel(item.value(data), tApp);\n return {\n id: label,\n label,\n size: 'm' as const,\n value,\n };\n });\n const gridNode = (\n <div key={`kv-${index}`} className={styles.keyValueGrid}>\n {items.map((item) => {\n return (\n <BackofficeDetailField\n key={item.id}\n id={item.id}\n label={item.label}\n size={item.size}\n value={item.value}\n />\n );\n })}\n </div>\n );\n if (wrapDefault) {\n return gridNode;\n }\n return (\n <BackofficeDetailSection\n key={`kv-${index}`}\n title={title}\n description={description}\n >\n {gridNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'payload') {\n const title = resolveLabel(output.label, tApp);\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n return (\n <BackofficeDetailPayload\n key={`payload-${index}`}\n title={title}\n description={description}\n content={output.value(data)}\n format={output.format}\n />\n );\n }\n\n const customNode = output.render(data) as ReactNode;\n if (wrapDefault) {\n return <div key={`custom-${index}`}>{customNode}</div>;\n }\n if (output.label != null) {\n const title = resolveLabel(output.label, tApp);\n return (\n <BackofficeDetailSection key={`custom-${index}`} title={title}>\n {customNode}\n </BackofficeDetailSection>\n );\n }\n return <div key={`custom-${index}`}>{customNode}</div>;\n });\n\n return <div className={styles.outputStack}>{nodes}</div>;\n};\n\ntype OperationOutputProps = {\n operation: BackofficeToolOperation;\n variables: Record<string, unknown>;\n fetchKey: number;\n};\n\nconst OperationOutput = ({\n operation,\n variables,\n fetchKey,\n}: OperationOutputProps): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n const data = useLazyLoadQuery<OperationType>(\n operation.query,\n variables as never,\n {\n fetchKey,\n fetchPolicy: 'store-or-network',\n },\n );\n\n if (operation.render != null) {\n const content = operation.render(data) as ReactNode;\n return <>{content}</>;\n }\n\n if (operation.outputs != null && operation.outputs.length > 0) {\n const shouldWrapDefault = operation.outputs.every((output) => {\n if (output.kind === 'payload') {\n return false;\n }\n const hasDescription =\n 'description' in output && output.description != null;\n return output.label == null && !hasDescription;\n });\n\n if (shouldWrapDefault) {\n return (\n <BackofficeDetailSection title={t('tools.output')}>\n <OutputRenderer outputs={operation.outputs} data={data} wrapDefault />\n </BackofficeDetailSection>\n );\n }\n\n return <OutputRenderer outputs={operation.outputs} data={data} />;\n }\n\n return null;\n};\n\ntype OperationContentProps = {\n operation: BackofficeToolOperation;\n};\n\nconst OperationContent = ({\n operation,\n}: OperationContentProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { initiativeId, projectId } = useBackofficeToolsParams();\n\n const initialInputs = useMemo(() => {\n return buildInitialInputValues(operation.inputs);\n }, [operation.inputs]);\n\n const [inputValues, setInputValues] =\n useState<ToolInputValues>(initialInputs);\n const [formError, setFormError] = useState<string | null>(null);\n const [fetchKey, setFetchKey] = useState(0);\n const [submittedVariables, setSubmittedVariables] = useState<Record<\n string,\n unknown\n > | null>(null);\n const [hasRun, setHasRun] = useState(false);\n const [activePickerId, setActivePickerId] = useState<string | null>(null);\n const previousPickerValuesRef = useRef({\n initiativeId,\n projectId,\n });\n\n const pickerScope = useMemo(() => {\n return {\n initiativeId,\n projectId,\n };\n }, [initiativeId, projectId]);\n\n useEffect(() => {\n if (operation.inputs == null) {\n return;\n }\n const hasInitiativeInput = operation.inputs.some((input) => {\n return input.id === 'initiativeId';\n });\n const hasProjectInput = operation.inputs.some((input) => {\n return input.id === 'projectId';\n });\n if (!hasInitiativeInput && !hasProjectInput) {\n return;\n }\n\n setInputValues((current) => {\n let updated = current;\n if (\n hasInitiativeInput &&\n initiativeId != null &&\n initiativeId.trim() !== ''\n ) {\n const existing = current.initiativeId;\n if (typeof existing !== 'string' || existing.trim() === '') {\n updated = { ...updated, initiativeId };\n }\n }\n\n if (hasProjectInput && projectId != null && projectId.trim() !== '') {\n const existing = current.projectId;\n if (typeof existing !== 'string' || existing.trim() === '') {\n updated = { ...updated, projectId };\n }\n }\n\n return updated;\n });\n }, [initiativeId, operation.inputs, projectId]);\n\n useEffect(() => {\n const previous = previousPickerValuesRef.current;\n const updates: Record<string, string> = {};\n\n if (previous.initiativeId !== initiativeId) {\n updates.initiativeId = initiativeId ?? '';\n }\n if (previous.projectId !== projectId) {\n updates.projectId = projectId ?? '';\n }\n\n previousPickerValuesRef.current = { initiativeId, projectId };\n\n if (Object.keys(updates).length === 0) {\n return;\n }\n\n setInputValues((current) => {\n const raw = current.inputJson;\n if (typeof raw !== 'string' || raw.trim() === '') {\n return current;\n }\n const nextJson = applyPickerUpdatesToJson(raw, updates);\n if (nextJson == null) {\n return current;\n }\n return { ...current, inputJson: nextJson };\n });\n }, [initiativeId, projectId]);\n\n const handleSubmit = useCallback(() => {\n setFormError(null);\n\n if (initiativeId == null || initiativeId.trim() === '') {\n setFormError(t('tools.errors.missingScope'));\n return;\n }\n\n let nextVariables: Record<string, unknown>;\n try {\n nextVariables = buildToolVariables({\n operation,\n inputValues,\n initiativeId,\n projectId,\n run: true,\n });\n } catch (error) {\n if (error instanceof BackofficeToolValidationError) {\n setFormError(resolveLabel(error.label, tApp));\n return;\n }\n if (error instanceof Error) {\n setFormError(error.message);\n } else {\n setFormError(t('tools.errors.unknown'));\n }\n return;\n }\n\n setSubmittedVariables(nextVariables);\n setHasRun(true);\n setFetchKey((value) => {\n return value + 1;\n });\n }, [initiativeId, inputValues, operation, projectId, t, tApp]);\n\n const activePicker = useMemo(() => {\n if (activePickerId == null || operation.inputs == null) {\n return null;\n }\n const input = operation.inputs.find((item): item is EntityIdInputSpec => {\n return item.id === activePickerId && item.kind === 'entityId';\n });\n return input ?? null;\n }, [activePickerId, operation.inputs]);\n\n const renderInputField = (input: BackofficeToolInputSpec): JSX.Element => {\n const label = resolveLabel(input.label, tApp);\n const value = inputValues[input.id];\n\n if (input.kind === 'text') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const placeholder =\n input.placeholder != null\n ? resolveLabel(input.placeholder, tApp)\n : undefined;\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n <Textarea\n value={resolvedValue}\n placeholder={placeholder}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.value };\n });\n }}\n rows={4}\n fullWidth\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'json') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const placeholder =\n input.placeholder != null\n ? resolveLabel(input.placeholder, tApp)\n : undefined;\n const exampleValue =\n typeof input.defaultValue === 'string' ? input.defaultValue : '';\n const canInsertExample = exampleValue.trim() !== '';\n const insertLabel = t('tools.forms.actions.insertExample');\n\n return (\n <FormGroup key={input.id}>\n <div className={styles.inputHeader}>\n <Label>{label}</Label>\n {canInsertExample && (\n <Button\n type=\"button\"\n variant=\"text\"\n size=\"small\"\n onClick={() => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: exampleValue };\n });\n }}\n >\n {insertLabel}\n </Button>\n )}\n </div>\n <Textarea\n value={resolvedValue}\n placeholder={placeholder}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.value };\n });\n }}\n rows={6}\n fullWidth\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'enum') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const options = input.options.map((option) => {\n return {\n id: option.value,\n value: option.value,\n label: resolveLabel(option.label, tApp),\n };\n });\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n <SimpleSelect\n options={options}\n value={resolvedValue}\n onChange={(nextValue) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: nextValue };\n });\n }}\n placeholder={label}\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'boolean') {\n const resolvedValue = typeof value === 'boolean' ? value : false;\n return (\n <FormGroup key={input.id}>\n <CheckboxField\n label={label}\n checked={resolvedValue}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.checked };\n });\n }}\n />\n </FormGroup>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (input.kind === 'entityId') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const renderField = (displayValue: string | null = null) => {\n const normalizedDisplayValue = displayValue?.trim() ?? '';\n return (\n <EntityIdFilterField\n label={label}\n value={resolvedValue}\n displayValue={normalizedDisplayValue}\n onPick={() => {\n setActivePickerId(input.id);\n }}\n onClear={() => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: '' };\n });\n }}\n />\n );\n };\n\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n {resolvedValue.trim() === '' ? (\n renderField()\n ) : (\n <EntityFilterValueText entityId={input.entity} id={resolvedValue}>\n {(resolvedLabel) => {\n return renderField(resolvedLabel);\n }}\n </EntityFilterValueText>\n )}\n </FormGroup>\n );\n }\n\n return <></>;\n };\n\n const handleSubmitEvent = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n handleSubmit();\n };\n\n const formInputs = operation.inputs?.map((input) => {\n return renderInputField(input);\n });\n const isRunDisabled = initiativeId == null || initiativeId.trim() === '';\n let outputNode: ReactNode = null;\n if (hasRun && submittedVariables != null) {\n outputNode = (\n <BackofficeToolsQueryBoundary>\n <OperationOutput\n operation={operation}\n variables={submittedVariables}\n fetchKey={fetchKey}\n />\n </BackofficeToolsQueryBoundary>\n );\n }\n\n return (\n <>\n <BackofficeDetailSection\n title={resolveLabel(operation.title, tApp)}\n description={\n operation.subtitle != null\n ? resolveLabel(operation.subtitle, tApp)\n : undefined\n }\n >\n <Form onSubmit={handleSubmitEvent} className={styles.form}>\n <FormErrorBanner message={formError} />\n {formInputs}\n <div className={styles.actions}>\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"small\"\n disabled={isRunDisabled}\n >\n {t('tools.forms.actions.run')}\n </Button>\n </div>\n </Form>\n {activePicker != null && (\n <EntityIdPickerDialog\n isOpen\n entity={activePicker.entity}\n title={resolveLabel(activePicker.label, tApp)}\n scope={pickerScope}\n onClose={() => {\n setActivePickerId(null);\n }}\n onSelectId={(id) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [activePicker.id]: id };\n });\n setActivePickerId(null);\n }}\n />\n )}\n </BackofficeDetailSection>\n {outputNode}\n </>\n );\n};\n\nexport type BackofficeToolsOperationPageProps = {\n operation: BackofficeToolOperation;\n toolId?: string;\n};\n\nexport const BackofficeToolsOperationPage = ({\n operation,\n toolId,\n}: BackofficeToolsOperationPageProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n\n const title = resolveLabel(operation.title, tApp);\n const subtitle =\n operation.subtitle != null\n ? resolveLabel(operation.subtitle, tApp)\n : undefined;\n const breadcrumb = buildToolBreadcrumb({ title });\n const showProjectPicker = shouldShowProjectPicker(operation);\n const toolIdLabel = t('tools.meta.idLabel');\n const inputTypeTitle = t('tools.docs.inputTypeTitle');\n const inputExampleTitle = t('tools.docs.inputExampleTitle');\n\n const inputTypeSDL =\n typeof operation.inputTypeSDL === 'string'\n ? operation.inputTypeSDL.trim()\n : '';\n const jsonExample = (() => {\n if (operation.inputs == null) {\n return null;\n }\n const jsonInput = operation.inputs.find((input) => {\n return input.kind === 'json';\n });\n if (jsonInput == null || typeof jsonInput.defaultValue !== 'string') {\n return null;\n }\n const trimmed = jsonInput.defaultValue.trim();\n if (trimmed === '') {\n return null;\n }\n return jsonInput.defaultValue;\n })();\n\n const docPanels: ReactNode[] = [];\n if (inputTypeSDL !== '') {\n docPanels.push(\n <BackofficeToolsDocPanel\n key=\"input-type\"\n title={inputTypeTitle}\n content={inputTypeSDL}\n language=\"graphql\"\n defaultOpen\n />,\n );\n }\n if (jsonExample != null) {\n docPanels.push(\n <BackofficeToolsDocPanel\n key=\"input-example\"\n title={inputExampleTitle}\n content={jsonExample}\n language=\"json\"\n />,\n );\n }\n\n const docPanel =\n docPanels.length > 0 ? (\n <div className={docPanelStyles.panelGroup}>{docPanels}</div>\n ) : undefined;\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeToolsPageLayout\n title={title}\n subtitle={subtitle}\n toolId={toolId}\n toolIdLabel={toolIdLabel}\n showProjectPicker={showProjectPicker}\n docPanel={docPanel}\n >\n <BackofficeErrorBoundary\n fallback={({ error, reset }) => {\n return (\n <BackofficeToolsErrorFallback error={error} onRetry={reset} />\n );\n }}\n >\n <OperationContent operation={operation} />\n </BackofficeErrorBoundary>\n </BackofficeToolsPageLayout>\n </BackofficeRightPageLayout>\n );\n};\n\nexport default BackofficeToolsOperationPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackofficeToolsOperationPage.js","names":[],"sources":["../../../src/pages/BackofficeToolsOperationPage.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\n/* eslint-disable @typescript-eslint/no-base-to-string */\nimport {\n type JSX,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport {\n type BackofficeToolInputSpec,\n type BackofficeToolOperation,\n type BackofficeToolOutputSpec,\n type BackofficeValueLabel,\n type I18nLabel,\n BackofficeToolValidationError,\n} from '@plumile/backoffice-core/types.js';\nimport { Textarea } from '@plumile/ui/atomic/atoms/textarea/Textarea.js';\nimport { Label } from '@plumile/ui/atomic/atoms/label/Label.js';\nimport { CheckboxField } from '@plumile/ui/atomic/molecules/checkbox_field/CheckboxField.js';\nimport { Form } from '@plumile/ui/atomic/molecules/form/Form.js';\nimport { FormGroup } from '@plumile/ui/atomic/molecules/form/FormGroup.js';\nimport { FormErrorBanner } from '@plumile/ui/atomic/molecules/form/FormErrorBanner.js';\nimport {\n Button,\n DataTable,\n LazyBackofficeJsonViewer,\n SimpleSelect,\n} from '@plumile/ui';\nimport { HighlightCode } from '@plumile/ui/atomic/molecules/highlight/HighlightCode.js';\n\nimport { BackofficeDetailField } from '../components/backoffice/detail/BackofficeDetailField.js';\nimport { BackofficeDetailPayload } from '../components/backoffice/detail/BackofficeDetailPayload.js';\nimport { BackofficeDetailSection } from '../components/backoffice/detail/BackofficeDetailSection.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { EntityFilterValueText } from '../components/backoffice/filters/EntityFilterValue.js';\nimport { EntityIdFilterField } from '../components/backoffice/filters/EntityIdFilterField.js';\nimport { EntityIdPickerDialog } from '../components/backoffice/pickers/EntityIdPickerDialog.js';\nimport { BackofficeToolsErrorFallback } from '../components/backoffice/tools/BackofficeToolsErrorFallback.js';\nimport { BackofficeToolsDocPanel } from '../components/backoffice/tools/BackofficeToolsDocPanel.js';\nimport { BackofficeToolsQueryBoundary } from '../components/backoffice/tools/BackofficeToolsQueryBoundary.js';\nimport { BackofficeToolsPageLayout } from '../components/backoffice/tools/BackofficeToolsPageLayout.js';\nimport { useBackofficeToolsParams } from '../components/backoffice/tools/BackofficeToolsParamsContext.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildToolBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\n\nimport * as styles from '../components/backoffice/tools/backofficeToolsForm.css.js';\nimport * as docPanelStyles from '../components/backoffice/tools/backofficeToolsDocPanel.css.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst resolveValueLabel = (\n value: BackofficeValueLabel | null | undefined,\n tApp: TFunction,\n): string | number | null => {\n if (typeof value === 'function') {\n return value(tApp);\n }\n if (value == null) {\n return null;\n }\n return value;\n};\n\ntype ToolInputValues = Record<string, unknown>;\ntype EntityIdInputSpec = Extract<BackofficeToolInputSpec, { kind: 'entityId' }>;\n\ntype BuildToolVariablesInput = {\n operation: BackofficeToolOperation;\n inputValues: ToolInputValues;\n initiativeId: string | null;\n projectId: string | null;\n run: boolean;\n};\n\nconst buildInitialInputValues = (\n inputs?: readonly BackofficeToolInputSpec[],\n): ToolInputValues => {\n const output: ToolInputValues = {};\n inputs?.forEach((input) => {\n if (input.kind === 'boolean') {\n output[input.id] = input.defaultValue ?? false;\n } else {\n output[input.id] = input.defaultValue ?? '';\n }\n });\n return output;\n};\n\nconst cleanInputValues = (values: ToolInputValues): ToolInputValues => {\n const output: ToolInputValues = {};\n Object.entries(values).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') {\n return;\n }\n output[key] = trimmed;\n return;\n }\n output[key] = value;\n });\n return output;\n};\n\nconst buildToolVariables = ({\n operation,\n inputValues,\n initiativeId,\n projectId,\n run,\n}: BuildToolVariablesInput): Record<string, unknown> => {\n const cleanedInput = cleanInputValues(inputValues);\n\n const hasProjectField = Object.prototype.hasOwnProperty.call(\n inputValues,\n 'projectId',\n );\n const hasProjectEntity =\n operation.inputs?.some((input) => {\n return input.kind === 'entityId' && input.entity === 'projects';\n }) ?? false;\n if (\n (hasProjectField || hasProjectEntity) &&\n projectId != null &&\n projectId.trim() !== ''\n ) {\n const existing = cleanedInput.projectId;\n if (existing == null || String(existing).trim() === '') {\n cleanedInput.projectId = projectId;\n }\n }\n\n const defaultVariables = {\n scope: {\n initiativeId: initiativeId ?? '',\n },\n input: cleanedInput,\n run,\n };\n\n if (operation.buildVariables == null) {\n return defaultVariables;\n }\n\n const custom = operation.buildVariables(cleanedInput, {\n scope: {\n initiativeId,\n projectId,\n },\n run,\n });\n return {\n ...defaultVariables,\n ...custom,\n };\n};\n\nconst shouldShowProjectPicker = (\n operation: BackofficeToolOperation,\n): boolean => {\n if (operation.showProjectPicker != null) {\n return operation.showProjectPicker;\n }\n const { inputs } = operation;\n if (inputs == null) {\n return false;\n }\n return inputs.some((input) => {\n if (input.kind === 'entityId' && input.entity === 'projects') {\n return true;\n }\n return input.id === 'projectId';\n });\n};\n\nconst parseInputJson = (value: string): Record<string, unknown> | null => {\n try {\n const parsed: unknown = JSON.parse(value);\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return null;\n }\n return parsed as Record<string, unknown>;\n } catch {\n return null;\n }\n};\n\nconst applyPickerUpdatesToJson = (\n currentValue: string,\n updates: Record<string, string>,\n): string | null => {\n const parsed = parseInputJson(currentValue);\n if (parsed == null) {\n return null;\n }\n\n let next = parsed;\n\n Object.entries(updates).forEach(([key, nextValue]) => {\n if (!Object.prototype.hasOwnProperty.call(parsed, key)) {\n return;\n }\n if (parsed[key] === nextValue) {\n return;\n }\n if (next === parsed) {\n next = { ...parsed };\n }\n next[key] = nextValue;\n });\n\n const nextJson = JSON.stringify(next, null, 2);\n if (nextJson === currentValue) {\n return null;\n }\n\n return nextJson;\n};\n\ntype OutputRendererProps = {\n outputs: readonly BackofficeToolOutputSpec[];\n data: unknown;\n wrapDefault?: boolean;\n};\n\nconst resolveRowId = (row: unknown, index: number): string => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const maybeId = record.id;\n if (typeof maybeId === 'string' && maybeId.trim() !== '') {\n return maybeId;\n }\n const maybeKey = record.key;\n if (typeof maybeKey === 'string' && maybeKey.trim() !== '') {\n return maybeKey;\n }\n }\n return String(index);\n};\n\nconst OutputRenderer = ({\n outputs,\n data,\n wrapDefault = false,\n}: OutputRendererProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const defaultTitle = t('tools.output');\n\n const nodes = outputs.map((output, index) => {\n if (output.kind === 'table') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const columns = buildDataTableColumns(output.columns, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entity = entities[entityId];\n if (entity == null) {\n return null;\n }\n return entity.routes.detail(refId);\n },\n });\n const resolvedRows = output.rows(data);\n const rows = Array.isArray(resolvedRows) ? resolvedRows : [];\n const tableNode = (\n <DataTable\n key={`table-${index}`}\n columns={columns}\n rows={rows}\n getRowId={resolveRowId}\n />\n );\n if (wrapDefault) {\n return tableNode;\n }\n return (\n <BackofficeDetailSection\n key={`table-${index}`}\n title={title}\n description={description}\n >\n {tableNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'code') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const value = output.value(data);\n const codeNode = (\n <HighlightCode\n key={`code-${index}`}\n badgeLabel={title}\n copyCode={value}\n fallbackCodeText={value}\n />\n );\n if (wrapDefault) {\n return codeNode;\n }\n return (\n <BackofficeDetailSection\n key={`code-${index}`}\n title={title}\n description={description}\n >\n {codeNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'json') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const value = output.value(data);\n const jsonNode = (\n <LazyBackofficeJsonViewer\n key={`json-${index}`}\n value={value}\n title={title}\n />\n );\n if (wrapDefault || description == null) {\n return jsonNode;\n }\n return (\n <BackofficeDetailSection\n key={`json-${index}`}\n title={title}\n description={description}\n >\n {jsonNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'keyValue') {\n const title =\n output.label != null ? resolveLabel(output.label, tApp) : defaultTitle;\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n const items = output.items.map((item) => {\n const label = resolveLabel(item.label, tApp);\n const value = resolveValueLabel(item.value(data), tApp);\n return {\n id: label,\n label,\n size: 'm' as const,\n value,\n };\n });\n const gridNode = (\n <div key={`kv-${index}`} className={styles.keyValueGrid}>\n {items.map((item) => {\n return (\n <BackofficeDetailField\n key={item.id}\n id={item.id}\n label={item.label}\n size={item.size}\n value={item.value}\n />\n );\n })}\n </div>\n );\n if (wrapDefault) {\n return gridNode;\n }\n return (\n <BackofficeDetailSection\n key={`kv-${index}`}\n title={title}\n description={description}\n >\n {gridNode}\n </BackofficeDetailSection>\n );\n }\n\n if (output.kind === 'payload') {\n const title = resolveLabel(output.label, tApp);\n const description =\n output.description != null\n ? resolveLabel(output.description, tApp)\n : undefined;\n return (\n <BackofficeDetailPayload\n key={`payload-${index}`}\n title={title}\n description={description}\n content={output.value(data)}\n format={output.format}\n />\n );\n }\n\n const customNode = output.render(data) as ReactNode;\n if (wrapDefault) {\n return <div key={`custom-${index}`}>{customNode}</div>;\n }\n if (output.label != null) {\n const title = resolveLabel(output.label, tApp);\n return (\n <BackofficeDetailSection key={`custom-${index}`} title={title}>\n {customNode}\n </BackofficeDetailSection>\n );\n }\n return <div key={`custom-${index}`}>{customNode}</div>;\n });\n\n return <div className={styles.outputStack}>{nodes}</div>;\n};\n\ntype OperationOutputProps = {\n operation: BackofficeToolOperation;\n variables: Record<string, unknown>;\n fetchKey: number;\n};\n\nconst OperationOutput = ({\n operation,\n variables,\n fetchKey,\n}: OperationOutputProps): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n const data = useLazyLoadQuery<OperationType>(\n operation.query,\n variables as never,\n {\n fetchKey,\n fetchPolicy: 'store-or-network',\n },\n );\n\n if (operation.render != null) {\n const content = operation.render(data) as ReactNode;\n return <>{content}</>;\n }\n\n if (operation.outputs != null && operation.outputs.length > 0) {\n const shouldWrapDefault = operation.outputs.every((output) => {\n if (output.kind === 'payload') {\n return false;\n }\n const hasDescription =\n 'description' in output && output.description != null;\n return output.label == null && !hasDescription;\n });\n\n if (shouldWrapDefault) {\n return (\n <BackofficeDetailSection title={t('tools.output')}>\n <OutputRenderer outputs={operation.outputs} data={data} wrapDefault />\n </BackofficeDetailSection>\n );\n }\n\n return <OutputRenderer outputs={operation.outputs} data={data} />;\n }\n\n return null;\n};\n\ntype OperationContentProps = {\n operation: BackofficeToolOperation;\n};\n\nconst OperationContent = ({\n operation,\n}: OperationContentProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { initiativeId, projectId } = useBackofficeToolsParams();\n\n const initialInputs = useMemo(() => {\n return buildInitialInputValues(operation.inputs);\n }, [operation.inputs]);\n\n const [inputValues, setInputValues] =\n useState<ToolInputValues>(initialInputs);\n const [formError, setFormError] = useState<string | null>(null);\n const [fetchKey, setFetchKey] = useState(0);\n const [submittedVariables, setSubmittedVariables] = useState<Record<\n string,\n unknown\n > | null>(null);\n const [hasRun, setHasRun] = useState(false);\n const [activePickerId, setActivePickerId] = useState<string | null>(null);\n const previousPickerValuesRef = useRef({\n initiativeId,\n projectId,\n });\n\n const pickerScope = useMemo(() => {\n return {\n initiativeId,\n projectId,\n };\n }, [initiativeId, projectId]);\n\n useEffect(() => {\n if (operation.inputs == null) {\n return;\n }\n const hasInitiativeInput = operation.inputs.some((input) => {\n return input.id === 'initiativeId';\n });\n const hasProjectInput = operation.inputs.some((input) => {\n return input.id === 'projectId';\n });\n if (!hasInitiativeInput && !hasProjectInput) {\n return;\n }\n\n setInputValues((current) => {\n let updated = current;\n if (\n hasInitiativeInput &&\n initiativeId != null &&\n initiativeId.trim() !== ''\n ) {\n const existing = current.initiativeId;\n if (typeof existing !== 'string' || existing.trim() === '') {\n updated = { ...updated, initiativeId };\n }\n }\n\n if (hasProjectInput && projectId != null && projectId.trim() !== '') {\n const existing = current.projectId;\n if (typeof existing !== 'string' || existing.trim() === '') {\n updated = { ...updated, projectId };\n }\n }\n\n return updated;\n });\n }, [initiativeId, operation.inputs, projectId]);\n\n useEffect(() => {\n const previous = previousPickerValuesRef.current;\n const updates: Record<string, string> = {};\n\n if (previous.initiativeId !== initiativeId) {\n updates.initiativeId = initiativeId ?? '';\n }\n if (previous.projectId !== projectId) {\n updates.projectId = projectId ?? '';\n }\n\n previousPickerValuesRef.current = { initiativeId, projectId };\n\n if (Object.keys(updates).length === 0) {\n return;\n }\n\n setInputValues((current) => {\n const raw = current.inputJson;\n if (typeof raw !== 'string' || raw.trim() === '') {\n return current;\n }\n const nextJson = applyPickerUpdatesToJson(raw, updates);\n if (nextJson == null) {\n return current;\n }\n return { ...current, inputJson: nextJson };\n });\n }, [initiativeId, projectId]);\n\n const handleSubmit = useCallback(() => {\n setFormError(null);\n\n if (initiativeId == null || initiativeId.trim() === '') {\n setFormError(t('tools.errors.missingScope'));\n return;\n }\n\n let nextVariables: Record<string, unknown>;\n try {\n nextVariables = buildToolVariables({\n operation,\n inputValues,\n initiativeId,\n projectId,\n run: true,\n });\n } catch (error) {\n if (error instanceof BackofficeToolValidationError) {\n setFormError(resolveLabel(error.label, tApp));\n return;\n }\n if (error instanceof Error) {\n setFormError(error.message);\n } else {\n setFormError(t('tools.errors.unknown'));\n }\n return;\n }\n\n setSubmittedVariables(nextVariables);\n setHasRun(true);\n setFetchKey((value) => {\n return value + 1;\n });\n }, [initiativeId, inputValues, operation, projectId, t, tApp]);\n\n const activePicker = useMemo(() => {\n if (activePickerId == null || operation.inputs == null) {\n return null;\n }\n const input = operation.inputs.find((item): item is EntityIdInputSpec => {\n return item.id === activePickerId && item.kind === 'entityId';\n });\n return input ?? null;\n }, [activePickerId, operation.inputs]);\n\n const renderInputField = (input: BackofficeToolInputSpec): JSX.Element => {\n const label = resolveLabel(input.label, tApp);\n const value = inputValues[input.id];\n\n if (input.kind === 'text') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const placeholder =\n input.placeholder != null\n ? resolveLabel(input.placeholder, tApp)\n : undefined;\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n <Textarea\n value={resolvedValue}\n placeholder={placeholder}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.value };\n });\n }}\n rows={4}\n fullWidth\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'json') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const placeholder =\n input.placeholder != null\n ? resolveLabel(input.placeholder, tApp)\n : undefined;\n const exampleValue =\n typeof input.defaultValue === 'string' ? input.defaultValue : '';\n const canInsertExample = exampleValue.trim() !== '';\n const insertLabel = t('tools.forms.actions.insertExample');\n\n return (\n <FormGroup key={input.id}>\n <div className={styles.inputHeader}>\n <Label>{label}</Label>\n {canInsertExample && (\n <Button\n type=\"button\"\n variant=\"text\"\n size=\"small\"\n onClick={() => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: exampleValue };\n });\n }}\n >\n {insertLabel}\n </Button>\n )}\n </div>\n <Textarea\n value={resolvedValue}\n placeholder={placeholder}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.value };\n });\n }}\n rows={6}\n fullWidth\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'enum') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const options = input.options.map((option) => {\n return {\n id: option.value,\n value: option.value,\n label: resolveLabel(option.label, tApp),\n };\n });\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n <SimpleSelect\n options={options}\n value={resolvedValue}\n onChange={(nextValue) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: nextValue };\n });\n }}\n placeholder={label}\n />\n </FormGroup>\n );\n }\n\n if (input.kind === 'boolean') {\n const resolvedValue = typeof value === 'boolean' ? value : false;\n return (\n <FormGroup key={input.id}>\n <CheckboxField\n label={label}\n checked={resolvedValue}\n onChange={(event) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: event.target.checked };\n });\n }}\n />\n </FormGroup>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (input.kind === 'entityId') {\n const resolvedValue = typeof value === 'string' ? value : '';\n const renderField = (displayValue: string | null = null) => {\n const normalizedDisplayValue = displayValue?.trim() ?? '';\n return (\n <EntityIdFilterField\n label={label}\n value={resolvedValue}\n displayValue={normalizedDisplayValue}\n onPick={() => {\n setActivePickerId(input.id);\n }}\n onClear={() => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [input.id]: '' };\n });\n }}\n />\n );\n };\n\n return (\n <FormGroup key={input.id}>\n <Label>{label}</Label>\n {resolvedValue.trim() === '' ? (\n renderField()\n ) : (\n <EntityFilterValueText entityId={input.entity} id={resolvedValue}>\n {(resolvedLabel) => {\n return renderField(resolvedLabel);\n }}\n </EntityFilterValueText>\n )}\n </FormGroup>\n );\n }\n\n return <></>;\n };\n\n const handleSubmitEvent = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n handleSubmit();\n };\n\n const formInputs = operation.inputs?.map((input) => {\n return renderInputField(input);\n });\n const isRunDisabled = initiativeId == null || initiativeId.trim() === '';\n let outputNode: ReactNode = null;\n if (hasRun && submittedVariables != null) {\n outputNode = (\n <BackofficeToolsQueryBoundary>\n <OperationOutput\n operation={operation}\n variables={submittedVariables}\n fetchKey={fetchKey}\n />\n </BackofficeToolsQueryBoundary>\n );\n }\n\n return (\n <>\n <BackofficeDetailSection\n title={resolveLabel(operation.title, tApp)}\n description={\n operation.subtitle != null\n ? resolveLabel(operation.subtitle, tApp)\n : undefined\n }\n >\n <Form onSubmit={handleSubmitEvent} className={styles.form}>\n <FormErrorBanner message={formError} />\n {formInputs}\n <div className={styles.actions}>\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"small\"\n disabled={isRunDisabled}\n >\n {t('tools.forms.actions.run')}\n </Button>\n </div>\n </Form>\n {activePicker != null && (\n <EntityIdPickerDialog\n isOpen\n entity={activePicker.entity}\n title={resolveLabel(activePicker.label, tApp)}\n scope={pickerScope}\n onClose={() => {\n setActivePickerId(null);\n }}\n onSelectId={(id) => {\n setFormError(null);\n setInputValues((current) => {\n return { ...current, [activePicker.id]: id };\n });\n setActivePickerId(null);\n }}\n />\n )}\n </BackofficeDetailSection>\n {outputNode}\n </>\n );\n};\n\nexport type BackofficeToolsOperationPageProps = {\n operation: BackofficeToolOperation;\n toolId?: string;\n};\n\nexport const BackofficeToolsOperationPage = ({\n operation,\n toolId,\n}: BackofficeToolsOperationPageProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n\n const title = resolveLabel(operation.title, tApp);\n const subtitle =\n operation.subtitle != null\n ? resolveLabel(operation.subtitle, tApp)\n : undefined;\n const breadcrumb = buildToolBreadcrumb({ title });\n const showProjectPicker = shouldShowProjectPicker(operation);\n const toolIdLabel = t('tools.meta.idLabel');\n const inputTypeTitle = t('tools.docs.inputTypeTitle');\n const inputExampleTitle = t('tools.docs.inputExampleTitle');\n\n const inputTypeSDL =\n typeof operation.inputTypeSDL === 'string'\n ? operation.inputTypeSDL.trim()\n : '';\n const jsonExample = (() => {\n if (operation.inputs == null) {\n return null;\n }\n const jsonInput = operation.inputs.find((input) => {\n return input.kind === 'json';\n });\n if (jsonInput == null || typeof jsonInput.defaultValue !== 'string') {\n return null;\n }\n const trimmed = jsonInput.defaultValue.trim();\n if (trimmed === '') {\n return null;\n }\n return jsonInput.defaultValue;\n })();\n\n const docPanels: ReactNode[] = [];\n if (inputTypeSDL !== '') {\n docPanels.push(\n <BackofficeToolsDocPanel\n key=\"input-type\"\n title={inputTypeTitle}\n content={inputTypeSDL}\n language=\"graphql\"\n defaultOpen\n />,\n );\n }\n if (jsonExample != null) {\n docPanels.push(\n <BackofficeToolsDocPanel\n key=\"input-example\"\n title={inputExampleTitle}\n content={jsonExample}\n language=\"json\"\n />,\n );\n }\n\n const docPanel =\n docPanels.length > 0 ? (\n <div className={docPanelStyles.panelGroup}>{docPanels}</div>\n ) : undefined;\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeToolsPageLayout\n title={title}\n subtitle={subtitle}\n toolId={toolId}\n toolIdLabel={toolIdLabel}\n showProjectPicker={showProjectPicker}\n docPanel={docPanel}\n >\n <BackofficeErrorBoundary\n fallback={({ error, reset }) => {\n return (\n <BackofficeToolsErrorFallback error={error} onRetry={reset} />\n );\n }}\n >\n <OperationContent operation={operation} />\n </BackofficeErrorBoundary>\n </BackofficeToolsPageLayout>\n </BackofficeRightPageLayout>\n );\n};\n\nexport default BackofficeToolsOperationPage;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTabsItems.js","names":[],"sources":["../../../../src/pages/detail/buildTabsItems.ts"],"sourcesContent":["import type { BackofficeDetailPageRouteSpec } from '@plumile/backoffice-core/types.js';\nimport type { BackofficeTabItem } from '@plumile/ui
|
|
1
|
+
{"version":3,"file":"buildTabsItems.js","names":[],"sources":["../../../../src/pages/detail/buildTabsItems.ts"],"sourcesContent":["import type { BackofficeDetailPageRouteSpec } from '@plumile/backoffice-core/types.js';\nimport type { BackofficeTabItem } from '@plumile/ui';\nimport type { TFunction } from 'i18next';\n\ntype DetailPage<Node> = BackofficeDetailPageRouteSpec<Node>;\n\nexport const buildTabsItems = <Node>(input: {\n pages: readonly DetailPage<Node>[];\n id: string;\n tApp: TFunction;\n detailPageHref: (id: string, pageId: string) => string;\n}): readonly BackofficeTabItem[] => {\n return input.pages.map((page) => {\n return {\n id: page.id,\n label: page.label(input.tApp),\n to: input.detailPageHref(input.id, page.id),\n };\n });\n};\n"],"mappings":";AAMA,IAAa,KAAwB,MAM5B,EAAM,MAAM,KAAK,OACf;CACL,IAAI,EAAK;CACT,OAAO,EAAK,MAAM,EAAM,KAAK;CAC7B,IAAI,EAAM,eAAe,EAAM,IAAI,EAAK,GAAG;CAC5C,EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDataTableColumns.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/columns/buildDataTableColumns.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"buildDataTableColumns.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/columns/buildDataTableColumns.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,8BAA8B,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG;IACvE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAKF,wBAAgB,qBAAqB,CAAC,GAAG,EACvC,OAAO,EAAE,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAC7C,OAAO,EAAE,4BAA4B,GACpC,SAAS,8BAA8B,CAAC,GAAG,CAAC,EAAE,CA0EhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailFlagTag.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailFlagTag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAO,KAAK,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BackofficeDetailFlagTag.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailFlagTag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAO,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,wBAIrC,4BAA4B,KAAG,GAAG,CAAC,OAerC,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TFunction } from 'i18next';
|
|
2
2
|
import type { BackofficeEntityManifestMap } from '@plumile/backoffice-core/types.js';
|
|
3
3
|
import type { BackofficeSidebarConfig } from '../../../provider/types.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { AdminSidebarSection } from '@plumile/ui';
|
|
5
5
|
import type { SidebarGroupCollapseState } from '../../../hooks/useSidebarGroupCollapse.js';
|
|
6
6
|
export type BuildSidebarSectionsInput = {
|
|
7
7
|
basePath: string;
|
|
@@ -18,5 +18,5 @@ export type BuildSidebarSectionsInput = {
|
|
|
18
18
|
collapsedByGroupId?: SidebarGroupCollapseState;
|
|
19
19
|
onGroupCollapsedChange?: (groupId: string, collapsed: boolean) => void;
|
|
20
20
|
};
|
|
21
|
-
export declare function buildSidebarSections(input: BuildSidebarSectionsInput): readonly
|
|
21
|
+
export declare function buildSidebarSections(input: BuildSidebarSectionsInput): readonly AdminSidebarSection[];
|
|
22
22
|
//# sourceMappingURL=buildSidebarSections.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSidebarSections.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/buildSidebarSections.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EACV,uBAAuB,EAGxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"buildSidebarSections.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/buildSidebarSections.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EACV,uBAAuB,EAGxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAyB,MAAM,aAAa,CAAC;AAM9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAmB3F,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACxE,CAAC;AAKF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,SAAS,mBAAmB,EAAE,CAoShC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BackofficeSidebarProfileViewer } from '@plumile/ui
|
|
1
|
+
import type { BackofficeSidebarProfileViewer } from '@plumile/ui';
|
|
2
2
|
export type BackofficeViewerIdentity = {
|
|
3
3
|
id: string;
|
|
4
4
|
firstName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapViewerToSidebarProfileView.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/mapViewerToSidebarProfileView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mapViewerToSidebarProfileView.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/mapViewerToSidebarProfileView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAMF,eAAO,MAAM,6BAA6B,GAAI,+BAG3C,kCAAkC,KAAG,8BAgCvC,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityIdPickerDialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/pickers/EntityIdPickerDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EntityIdPickerDialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/pickers/EntityIdPickerDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,mCAAmC,CAAC;AAa3C,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AA+EF,eAAO,MAAM,oBAAoB,GAAI,wDAOlC,yBAAyB,KAAG,GAAG,CAAC,OAAO,GAAG,IA2H5C,CAAC;AAEF,YAAY,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPickerList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/pickers/shared/EntityPickerList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EntityPickerList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/pickers/shared/EntityPickerList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC3C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,oCAI9B,qBAAqB,KAAG,GAAG,CAAC,OA+B9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeContentError.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/routing/BackofficeContentError.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeContentError.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/routing/BackofficeContentError.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAOjC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAoBF,eAAO,MAAM,sBAAsB,GAAI,qBAGpC,2BAA2B,KAAG,GAAG,CAAC,OAwBpC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAGf,OAAO,
|
|
1
|
+
{"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAGf,OAAO,EAgBL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAEV,mBAAmB,EAEnB,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAuG3C,KAAK,KAAK,CACR,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,IACjB;IACF,MAAM,EAAE,iCAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5D,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,EAEnB,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KACjC,GAAG,CAAC,OAAO,GAAG,IA6sBhB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JSX, type ReactNode } from 'react';
|
|
2
|
-
import { type BackofficeTabItem } from '@plumile/ui
|
|
2
|
+
import { type BackofficeTabItem } from '@plumile/ui';
|
|
3
3
|
export type BackofficeTabbedDetailShellProps = {
|
|
4
4
|
headerNode: ReactNode;
|
|
5
5
|
tabs?: readonly BackofficeTabItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeTabbedDetailShell.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeTabbedDetailShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeTabbedDetailShell.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeTabbedDetailShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,2CAKzC,gCAAgC,KAAG,GAAG,CAAC,OAkBzC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,OAAO,CAAC;AAiR3C,eAAO,MAAM,uBAAuB,QAAO,GAAG,CAAC,OAkE9C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityDetailPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeEntityDetailPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAiD,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanD,OAAO,KAAK,EAaV,6CAA6C,EAE7C,2CAA2C,EAG5C,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeEntityDetailPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAiD,MAAM,OAAO,CAAC;AAGhF,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanD,OAAO,KAAK,EAaV,6CAA6C,EAE7C,2CAA2C,EAG5C,MAAM,mCAAmC,CAAC;AA8D3C,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,6CAA6C,CAAC;IACtD,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,2CAA2C,CAAC;QACxD,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAg9CF,eAAO,MAAM,0BAA0B,GAAI,uBAGxC,+BAA+B,KAAG,GAAG,CAAC,OA0BxC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeLayoutPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeLayoutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACd,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeLayoutPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeLayoutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACd,MAAM,eAAe,CAAC;AAuBvB,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,kEAAkE,CAAC;AAK1E,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC5B,EAAE,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;KACtC,GAAG,IAAI,CAAC;IACT,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAoOF,eAAO,MAAM,oBAAoB,GAAI,sEAMlC,yBAAyB,KAAG,GAAG,CAAC,OAuBlC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeToolsOperationPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeToolsOperationPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,GAAG,EAOT,MAAM,OAAO,CAAC;AAKf,OAAO,EAEL,KAAK,uBAAuB,EAK7B,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeToolsOperationPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeToolsOperationPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,GAAG,EAOT,MAAM,OAAO,CAAC;AAKf,OAAO,EAEL,KAAK,uBAAuB,EAK7B,MAAM,mCAAmC,CAAC;AAg2B3C,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,wBAG1C,iCAAiC,KAAG,GAAG,CAAC,OAsF1C,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BackofficeDetailPageRouteSpec } from '@plumile/backoffice-core/types.js';
|
|
2
|
-
import type { BackofficeTabItem } from '@plumile/ui
|
|
2
|
+
import type { BackofficeTabItem } from '@plumile/ui';
|
|
3
3
|
import type { TFunction } from 'i18next';
|
|
4
4
|
type DetailPage<Node> = BackofficeDetailPageRouteSpec<Node>;
|
|
5
5
|
export declare const buildTabsItems: <Node>(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTabsItems.d.ts","sourceRoot":"","sources":["../../../../src/pages/detail/buildTabsItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"buildTabsItems.d.ts","sourceRoot":"","sources":["../../../../src/pages/detail/buildTabsItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,KAAK,UAAU,CAAC,IAAI,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc,GAAI,IAAI,EAAE,OAAO;IAC1C,KAAK,EAAE,SAAS,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACxD,KAAG,SAAS,iBAAiB,EAQ7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plumile/backoffice-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.69",
|
|
4
4
|
"description": "React provider and pages for Plumile backoffice",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -158,10 +158,10 @@
|
|
|
158
158
|
"npm": ">=8.0.0"
|
|
159
159
|
},
|
|
160
160
|
"dependencies": {
|
|
161
|
-
"@plumile/backoffice-core": "^0.1.
|
|
162
|
-
"@plumile/filter-query": "^0.1.
|
|
163
|
-
"@plumile/router": "^0.1.
|
|
164
|
-
"@plumile/ui": "^0.1.
|
|
161
|
+
"@plumile/backoffice-core": "^0.1.69",
|
|
162
|
+
"@plumile/filter-query": "^0.1.69",
|
|
163
|
+
"@plumile/router": "^0.1.69",
|
|
164
|
+
"@plumile/ui": "^0.1.69",
|
|
165
165
|
"graphql-ws": "6.0.7",
|
|
166
166
|
"i18next": "^25.8.18",
|
|
167
167
|
"i18next-browser-languagedetector": "8.2.1",
|