@backstage/plugin-scaffolder 1.36.2-next.2 → 1.36.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/alpha/components/EditorSubPage.esm.js +69 -11
  3. package/dist/alpha/components/EditorSubPage.esm.js.map +1 -1
  4. package/dist/alpha/components/TemplateEditorPage/CustomFieldPlayground.esm.js +14 -15
  5. package/dist/alpha/components/TemplateEditorPage/CustomFieldPlayground.esm.js.map +1 -1
  6. package/dist/alpha/components/TemplateEditorPage/DryRunResults/DryRunResults.esm.js +2 -2
  7. package/dist/alpha/components/TemplateEditorPage/DryRunResults/DryRunResults.esm.js.map +1 -1
  8. package/dist/alpha.d.ts +14 -9
  9. package/dist/components/ActionsPage/ActionsPage.esm.js +155 -134
  10. package/dist/components/ActionsPage/ActionsPage.esm.js.map +1 -1
  11. package/dist/components/ListTasksPage/columns/OwnerEntityColumn.esm.js +3 -20
  12. package/dist/components/ListTasksPage/columns/OwnerEntityColumn.esm.js.map +1 -1
  13. package/dist/components/RenderSchema/RenderSchema.esm.js +202 -250
  14. package/dist/components/RenderSchema/RenderSchema.esm.js.map +1 -1
  15. package/dist/components/TemplatingExtensionsPage/TemplateFilters.esm.js +2 -5
  16. package/dist/components/TemplatingExtensionsPage/TemplateFilters.esm.js.map +1 -1
  17. package/dist/components/TemplatingExtensionsPage/TemplateGlobals.esm.js +2 -5
  18. package/dist/components/TemplatingExtensionsPage/TemplateGlobals.esm.js.map +1 -1
  19. package/dist/index.d.ts +7 -6
  20. package/dist/plugins/scaffolder/package.json.esm.js +1 -1
  21. package/dist/translation.esm.js +2 -1
  22. package/dist/translation.esm.js.map +1 -1
  23. package/package.json +24 -24
@@ -1,27 +1,7 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { MarkdownContent } from '@backstage/core-components';
3
3
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
4
- import Box from '@material-ui/core/Box';
5
- import Chip from '@material-ui/core/Chip';
6
- import Collapse from '@material-ui/core/Collapse';
7
- import IconButton from '@material-ui/core/IconButton';
8
- import List from '@material-ui/core/List';
9
- import ListItem from '@material-ui/core/ListItem';
10
- import Paper from '@material-ui/core/Paper';
11
- import Table from '@material-ui/core/Table';
12
- import TableBody from '@material-ui/core/TableBody';
13
- import TableCell from '@material-ui/core/TableCell';
14
- import TableContainer from '@material-ui/core/TableContainer';
15
- import TableHead from '@material-ui/core/TableHead';
16
- import TableRow from '@material-ui/core/TableRow';
17
- import Tooltip from '@material-ui/core/Tooltip';
18
- import Typography from '@material-ui/core/Typography';
19
- import { makeStyles } from '@material-ui/core/styles';
20
- import ExpandLessIcon from '@material-ui/icons/ExpandLess';
21
- import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
22
- import WrapText from '@material-ui/icons/WrapText';
23
- import classNames from 'classnames';
24
- import { cloneElement, Fragment as Fragment$1 } from 'react';
4
+ import { Cell, Text, Flex, Table, Button, CellText, TooltipTrigger, Tooltip } from '@backstage/ui';
25
5
  import { scaffolderTranslationRef } from '../../translation.esm.js';
26
6
 
27
7
  const compositeSchemaProperties = ["allOf", "anyOf", "not", "oneOf"];
@@ -93,52 +73,8 @@ const getSubschemas = (schema) => {
93
73
  })
94
74
  );
95
75
  };
96
- const useColumnStyles = makeStyles({
97
- description: {
98
- width: "40%",
99
- whiteSpace: "normal",
100
- wordWrap: "break-word",
101
- "&.MuiTableCell-root": {
102
- whiteSpace: "normal"
103
- }
104
- },
105
- standard: {
106
- whiteSpace: "normal"
107
- }
108
- });
109
- const generateId = (element, context) => {
110
- return element.key ? `${context.parentId}.${element.key}` : context.parentId;
111
- };
112
- const nameColumn = {
113
- key: "name",
114
- title: (t) => t("renderSchema.tableCell.name"),
115
- render: (element, context) => {
116
- return /* @__PURE__ */ jsx(
117
- "div",
118
- {
119
- className: classNames(context.classes.code, {
120
- [context.classes.codeRequired]: element.required
121
- }),
122
- children: element.key
123
- }
124
- );
125
- }
126
- };
127
- const titleColumn = {
128
- key: "title",
129
- title: (t) => t("renderSchema.tableCell.title"),
130
- render: (element) => /* @__PURE__ */ jsx(MarkdownContent, { content: element.schema.title ?? "" })
131
- };
132
- const descriptionColumn = {
133
- key: "description",
134
- title: (t) => t("renderSchema.tableCell.description"),
135
- render: (element) => /* @__PURE__ */ jsx(
136
- MarkdownContent,
137
- {
138
- content: element.schema.description ?? ""
139
- }
140
- ),
141
- className: "description"
76
+ const generateId = (item, context) => {
77
+ return item.propKey ? `${context.parentId}.${item.propKey}` : context.parentId;
142
78
  };
143
79
  const enumFrom = (schema) => {
144
80
  if (schema.type === "array") {
@@ -167,227 +103,243 @@ const inspectSchema = (schema) => {
167
103
  hasEnum: !!enumFrom(schema)
168
104
  };
169
105
  };
170
- const typeColumn = {
171
- key: "type",
172
- title: (t) => t("renderSchema.tableCell.type"),
173
- render: (element, context) => {
174
- if (typeof element.schema === "boolean") {
175
- return /* @__PURE__ */ jsx(Typography, { children: element.schema ? "any" : "none" });
176
- }
177
- const types = getTypes(element.schema);
178
- const [isExpanded, setIsExpanded] = context.expanded;
179
- const id = generateId(element, context);
180
- const info = inspectSchema(element.schema);
181
- return /* @__PURE__ */ jsx(Fragment, { children: types?.map(
182
- (type, index) => info.canSubschema || info.hasEnum && index === 0 ? /* @__PURE__ */ jsx(
183
- Chip,
106
+ const RenderEnum = ({ e, ...props }) => {
107
+ return /* @__PURE__ */ jsx("ul", { ...props, style: { listStyle: "none", padding: 0, margin: 0 }, children: e.map((v, i) => {
108
+ const text = JSON.stringify(v);
109
+ const isComplex = v !== null && ["object", "array"].includes(typeof v);
110
+ return /* @__PURE__ */ jsx("li", { style: { padding: "2px 0" }, children: /* @__PURE__ */ jsxs(Flex, { gap: "2", align: "center", children: [
111
+ /* @__PURE__ */ jsx(
112
+ Text,
184
113
  {
185
- "data-testid": `expand_${id}`,
186
- label: type,
187
- icon: isExpanded[id] ? /* @__PURE__ */ jsx(ExpandLessIcon, {}) : /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
188
- variant: "outlined",
189
- onClick: () => setIsExpanded((prevState) => {
190
- return {
191
- ...prevState,
192
- [id]: !!!prevState[id]
193
- };
194
- })
195
- },
196
- type
197
- ) : /* @__PURE__ */ jsx(Chip, { label: type, variant: "outlined" }, type)
198
- ) });
199
- }
200
- };
201
- const RenderEnum = ({
202
- e,
203
- classes,
204
- ...props
205
- }) => {
206
- return /* @__PURE__ */ jsx(List, { ...props, children: e.map((v, i) => {
207
- let inner = /* @__PURE__ */ jsx(
208
- Typography,
209
- {
210
- "data-testid": `enum_el${i}`,
211
- className: classNames(classes.code),
212
- children: JSON.stringify(v)
213
- }
214
- );
215
- if (v !== null && ["object", "array"].includes(typeof v)) {
216
- inner = /* @__PURE__ */ jsxs(Fragment, { children: [
217
- inner,
114
+ as: "span",
115
+ variant: "body-small",
116
+ "data-testid": `enum_el${i}`,
117
+ style: { fontFamily: "monospace" },
118
+ children: text
119
+ }
120
+ ),
121
+ isComplex && /* @__PURE__ */ jsxs(TooltipTrigger, { children: [
218
122
  /* @__PURE__ */ jsx(
219
- Tooltip,
123
+ Button,
220
124
  {
221
- title: /* @__PURE__ */ jsx(
222
- Typography,
223
- {
224
- "data-testid": `pretty_${i}`,
225
- className: classNames(classes.code),
226
- style: { whiteSpace: "pre-wrap" },
227
- children: JSON.stringify(v, void 0, 2)
228
- }
229
- ),
230
- children: /* @__PURE__ */ jsx(IconButton, { "data-testid": `wrap-text_${i}`, children: /* @__PURE__ */ jsx(WrapText, {}) })
125
+ "data-testid": `wrap-text_${i}`,
126
+ variant: "tertiary",
127
+ size: "small",
128
+ "aria-label": "Show formatted value",
129
+ children: "\u21B5"
231
130
  }
232
- )
233
- ] });
234
- }
235
- return /* @__PURE__ */ jsx(ListItem, { children: inner }, i);
131
+ ),
132
+ /* @__PURE__ */ jsx(Tooltip, { children: /* @__PURE__ */ jsx(
133
+ Text,
134
+ {
135
+ as: "span",
136
+ "data-testid": `pretty_${i}`,
137
+ style: {
138
+ fontFamily: "monospace",
139
+ whiteSpace: "pre-wrap"
140
+ },
141
+ children: JSON.stringify(v, void 0, 2)
142
+ }
143
+ ) })
144
+ ] })
145
+ ] }) }, i);
236
146
  }) });
237
147
  };
238
- const useTableStyles = makeStyles({
239
- schema: {
240
- width: "100%",
241
- overflowX: "hidden",
242
- "& table": {
243
- width: "100%",
244
- tableLayout: "fixed"
245
- }
246
- }
247
- });
248
148
  const RenderSchema = ({
249
149
  strategy,
250
150
  context,
251
151
  schema
252
152
  }) => {
253
153
  const { t } = useTranslationRef(scaffolderTranslationRef);
254
- const tableStyles = useTableStyles();
255
- const columnStyles = useColumnStyles();
154
+ const columnConfig = strategy === "root" ? [
155
+ {
156
+ id: "value",
157
+ label: t("renderSchema.tableCell.value"),
158
+ isRowHeader: true,
159
+ defaultWidth: "3fr",
160
+ cell: (item) => /* @__PURE__ */ jsx(ValueCell, { item, context })
161
+ }
162
+ ] : [
163
+ {
164
+ id: "name",
165
+ label: t("renderSchema.tableCell.name"),
166
+ isRowHeader: true,
167
+ defaultWidth: 300,
168
+ cell: (item) => {
169
+ const name = item.propKey ?? "";
170
+ return /* @__PURE__ */ jsx(Cell, { children: /* @__PURE__ */ jsx(
171
+ Text,
172
+ {
173
+ as: "span",
174
+ variant: "body-medium",
175
+ style: { fontFamily: "monospace" },
176
+ children: item.required ? `${name} *` : name
177
+ }
178
+ ) });
179
+ }
180
+ },
181
+ {
182
+ id: "value",
183
+ label: t("renderSchema.tableCell.value"),
184
+ defaultWidth: "1fr",
185
+ cell: (item) => /* @__PURE__ */ jsx(ValueCell, { item, context })
186
+ }
187
+ ];
256
188
  const result = (() => {
257
189
  if (typeof schema === "object") {
258
190
  const subschemas = getSubschemas(schema);
259
- let columns;
260
- let elements;
191
+ let data;
261
192
  if (strategy === "root") {
262
193
  if ("type" in schema || !Object.keys(subschemas).length) {
263
- elements = [{ schema }];
264
- columns = [typeColumn];
265
- if (schema.description) {
266
- columns.unshift(descriptionColumn);
267
- }
268
- if (schema.title) {
269
- columns.unshift(titleColumn);
270
- }
194
+ data = [{ id: `root-row_${context.parentId}`, schema }];
271
195
  }
272
196
  } else if (schema.properties) {
273
- columns = [nameColumn, titleColumn, descriptionColumn, typeColumn];
274
- elements = Object.entries(schema.properties).map(([key, v]) => ({
197
+ data = Object.entries(schema.properties).map(([key, v]) => ({
198
+ id: `${strategy}-row_${context.parentId}.${key}`,
275
199
  schema: v,
276
- key,
200
+ propKey: key,
277
201
  required: schema.required?.includes(key)
278
202
  }));
279
203
  } else if (!Object.keys(subschemas).length) {
280
204
  return void 0;
281
205
  }
282
- const [isExpanded] = context.expanded;
283
- return /* @__PURE__ */ jsxs(Fragment, { children: [
284
- columns && elements && /* @__PURE__ */ jsx(TableContainer, { component: Paper, className: tableStyles.schema, children: /* @__PURE__ */ jsxs(
206
+ const [isExpanded, setIsExpanded] = context.expanded;
207
+ return /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "2", children: [
208
+ data && /* @__PURE__ */ jsx("div", { "data-testid": `${strategy}_${context.parentId}`, children: /* @__PURE__ */ jsx(
285
209
  Table,
286
210
  {
287
- "data-testid": `${strategy}_${context.parentId}`,
288
- size: "small",
289
- children: [
290
- /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(TableRow, { children: columns.map((col, index) => /* @__PURE__ */ jsx(
291
- TableCell,
292
- {
293
- className: columnStyles[col.className ?? "standard"],
294
- children: col.title(t)
295
- },
296
- index
297
- )) }) }),
298
- /* @__PURE__ */ jsx(TableBody, { children: elements.map((el) => {
299
- const id = generateId(el, context);
300
- const info = inspectSchema(el.schema);
301
- const rows = [
302
- /* @__PURE__ */ jsx(TableRow, { "data-testid": `${strategy}-row_${id}`, children: columns.map((col) => /* @__PURE__ */ jsx(
303
- TableCell,
304
- {
305
- className: columnStyles[col.className ?? "standard"],
306
- children: col.render(el, context)
307
- },
308
- col.key
309
- )) })
310
- ];
311
- if (typeof el.schema !== "boolean" && (info.canSubschema || info.hasEnum)) {
312
- let details = /* @__PURE__ */ jsxs(Box, { "data-testid": `expansion_${id}`, sx: { margin: 1 }, children: [
313
- info.canSubschema && /* @__PURE__ */ jsx(
314
- RenderSchema,
315
- {
316
- strategy: "properties",
317
- context: {
318
- ...context,
319
- parentId: id,
320
- parent: context
321
- },
322
- schema: el.schema.type === "array" ? el.schema.items : el.schema
323
- }
324
- ),
325
- info.hasEnum && /* @__PURE__ */ jsxs(Fragment, { children: [
326
- cloneElement(
327
- context.headings[0],
328
- {},
329
- "Valid values:"
330
- ),
331
- /* @__PURE__ */ jsx(
332
- RenderEnum,
333
- {
334
- "data-testid": `enum_${id}`,
335
- e: enumFrom(el.schema),
336
- classes: context.classes
337
- }
338
- )
339
- ] })
340
- ] });
341
- if (getTypes(el.schema)) {
342
- details = /* @__PURE__ */ jsx(
343
- Collapse,
344
- {
345
- in: isExpanded[id],
346
- timeout: "auto",
347
- unmountOnExit: true,
348
- children: details
349
- }
350
- );
351
- }
352
- rows.push(
353
- /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(
354
- TableCell,
355
- {
356
- style: { paddingBottom: 0, paddingTop: 0 },
357
- colSpan: columns.length,
358
- children: details
359
- }
360
- ) })
361
- );
362
- }
363
- return /* @__PURE__ */ jsx(Fragment$1, { children: rows }, id);
364
- }) })
365
- ]
211
+ columnConfig,
212
+ data,
213
+ pagination: { type: "none" }
366
214
  }
367
215
  ) }),
368
- Object.keys(subschemas).map((sk) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
369
- cloneElement(context.headings[0], {}, sk),
370
- subschemas[sk].map((sub, index) => /* @__PURE__ */ jsx(
371
- RenderSchema,
372
- {
373
- strategy: typeof sub !== "boolean" && "properties" in sub ? strategy : "root",
374
- ...{
216
+ Object.keys(subschemas).map((sk) => {
217
+ const subId = `${context.parentId}_${sk}`;
218
+ const isSubOpen = isExpanded[subId];
219
+ return /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "2", children: [
220
+ /* @__PURE__ */ jsxs(
221
+ Button,
222
+ {
223
+ "data-testid": `expand_${subId}`,
224
+ variant: "tertiary",
225
+ size: "small",
226
+ onPress: () => setIsExpanded((prevState) => ({
227
+ ...prevState,
228
+ [subId]: !prevState[subId]
229
+ })),
230
+ style: { alignSelf: "flex-start" },
231
+ children: [
232
+ isSubOpen ? "\u25B4" : "\u25BE",
233
+ " ",
234
+ sk
235
+ ]
236
+ }
237
+ ),
238
+ isSubOpen && subschemas[sk].map((sub, index) => /* @__PURE__ */ jsx(
239
+ RenderSchema,
240
+ {
241
+ strategy: typeof sub !== "boolean" && "properties" in sub ? strategy : "root",
375
242
  context: {
376
243
  ...context,
377
244
  parentId: `${context.parentId}_${sk}${index}`
378
245
  },
379
246
  schema: sub
380
- }
381
- },
382
- index
383
- ))
384
- ] }, sk))
247
+ },
248
+ index
249
+ ))
250
+ ] }, sk);
251
+ })
385
252
  ] });
386
253
  }
387
254
  return void 0;
388
255
  })();
389
- return result ?? /* @__PURE__ */ jsx(Typography, { children: "No schema defined" });
256
+ return result ?? /* @__PURE__ */ jsx(Text, { as: "p", children: t("renderSchema.undefined") });
390
257
  };
258
+ function RenderExpansion({
259
+ item,
260
+ context
261
+ }) {
262
+ const id = generateId(item, context);
263
+ const info = inspectSchema(item.schema);
264
+ const hasDetails = typeof item.schema !== "boolean" && (info.canSubschema || info.hasEnum);
265
+ const s = typeof item.schema !== "boolean" ? item.schema : void 0;
266
+ const [isExpanded] = context.expanded;
267
+ const isOpen = hasDetails && s && (!getTypes(s) || isExpanded[id]);
268
+ if (!isOpen) {
269
+ return null;
270
+ }
271
+ return /* @__PURE__ */ jsxs("div", { "data-testid": `expansion_${id}`, style: { paddingLeft: 16 }, children: [
272
+ info.canSubschema && /* @__PURE__ */ jsx(
273
+ RenderSchema,
274
+ {
275
+ strategy: "properties",
276
+ context: {
277
+ ...context,
278
+ parentId: id,
279
+ parent: context
280
+ },
281
+ schema: s.type === "array" ? s.items : s
282
+ }
283
+ ),
284
+ info.hasEnum && /* @__PURE__ */ jsxs(Fragment, { children: [
285
+ /* @__PURE__ */ jsx(Text, { as: "h4", variant: "title-small", weight: "bold", children: "Valid values:" }),
286
+ /* @__PURE__ */ jsx(RenderEnum, { "data-testid": `enum_${id}`, e: enumFrom(s) })
287
+ ] })
288
+ ] });
289
+ }
290
+ function ValueCell({
291
+ item,
292
+ context
293
+ }) {
294
+ if (typeof item.schema === "boolean") {
295
+ return /* @__PURE__ */ jsx(CellText, { title: item.schema ? "any" : "none" });
296
+ }
297
+ const types = getTypes(item.schema);
298
+ const [isExpanded, setIsExpanded] = context.expanded;
299
+ const id = generateId(item, context);
300
+ const info = inspectSchema(item.schema);
301
+ const { title, description } = item.schema;
302
+ return /* @__PURE__ */ jsx(Cell, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "1", children: [
303
+ /* @__PURE__ */ jsx(Flex, { gap: "1", align: "center", children: types?.map(
304
+ (type, index) => (info.canSubschema || info.hasEnum) && index === 0 ? /* @__PURE__ */ jsxs(
305
+ Button,
306
+ {
307
+ "data-testid": `expand_${id}`,
308
+ variant: "tertiary",
309
+ size: "small",
310
+ onPress: () => setIsExpanded((prevState) => ({
311
+ ...prevState,
312
+ [id]: !prevState[id]
313
+ })),
314
+ children: [
315
+ isExpanded[id] ? "\u25B4" : "\u25BE",
316
+ " ",
317
+ type
318
+ ]
319
+ },
320
+ type
321
+ ) : /* @__PURE__ */ jsx(
322
+ Text,
323
+ {
324
+ as: "span",
325
+ variant: "body-small",
326
+ color: "secondary",
327
+ style: {
328
+ fontFamily: "monospace",
329
+ background: "var(--bui-bg-neutral-2)",
330
+ padding: "1px 6px",
331
+ borderRadius: 4
332
+ },
333
+ children: type
334
+ },
335
+ type
336
+ )
337
+ ) }),
338
+ title && /* @__PURE__ */ jsx(MarkdownContent, { content: title }),
339
+ description && /* @__PURE__ */ jsx(MarkdownContent, { content: description }),
340
+ /* @__PURE__ */ jsx(RenderExpansion, { item, context })
341
+ ] }) });
342
+ }
391
343
 
392
344
  export { RenderEnum, RenderSchema };
393
345
  //# sourceMappingURL=RenderSchema.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RenderSchema.esm.js","sources":["../../../src/components/RenderSchema/RenderSchema.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MarkdownContent } from '@backstage/core-components';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@material-ui/core/Box';\nimport Chip from '@material-ui/core/Chip';\nimport Collapse from '@material-ui/core/Collapse';\nimport IconButton from '@material-ui/core/IconButton';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport Paper from '@material-ui/core/Paper';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport WrapText from '@material-ui/icons/WrapText';\nimport classNames from 'classnames';\nimport {\n JSONSchema7,\n JSONSchema7Definition,\n JSONSchema7Type,\n} from 'json-schema';\nimport { FC, JSX, cloneElement, Fragment, ReactElement } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { SchemaRenderContext, SchemaRenderStrategy } from './types';\nimport { TranslationMessages } from '../TemplatingExtensionsPage/types';\n\nconst compositeSchemaProperties = ['allOf', 'anyOf', 'not', 'oneOf'] as const;\n\ntype subSchemasType = {\n [K in (typeof compositeSchemaProperties)[number]]?: JSONSchema7Definition[];\n};\n\nconst getTypes = (schema: JSONSchema7) => {\n if (!schema.type) {\n if (\n Object.getOwnPropertyNames(schema).some(p =>\n compositeSchemaProperties.includes(p as any),\n )\n ) {\n return undefined;\n }\n return ['unknown'];\n }\n if (schema.type !== 'array') {\n return [schema.type].flat();\n }\n return [\n `${schema.type}(${\n (schema.items as JSONSchema7 | undefined)?.type ?? 'unknown'\n })`,\n ];\n};\n\nconst getSubschemas = (schema: JSONSchema7Definition): subSchemasType => {\n if (typeof schema === 'boolean') {\n return {};\n }\n const base: Omit<JSONSchema7, keyof subSchemasType> = {};\n\n const subschemas: subSchemasType = {};\n\n for (const [key, value] of Object.entries(schema) as [\n keyof JSONSchema7,\n any,\n ][]) {\n if (compositeSchemaProperties.includes(key as keyof subSchemasType)) {\n let v;\n if (Array.isArray(value)) {\n if (!value.length) {\n continue;\n }\n v = value;\n } else if (value) {\n v = [value];\n } else {\n continue;\n }\n subschemas[key as keyof subSchemasType] = v as any;\n } else {\n base[key as Exclude<keyof JSONSchema7, keyof subSchemasType>] = value;\n }\n }\n if (!(base?.type === 'object' || 'properties' in base)) {\n return subschemas;\n }\n return Object.fromEntries(\n Object.entries(subschemas).map(([key, sub]) => {\n const mergedSubschema = sub.map(alt => {\n if (typeof alt !== 'boolean' && alt.required) {\n const properties: JSONSchema7['properties'] = {};\n if (schema.properties) {\n for (const k of alt.required) {\n if (k in schema.properties) {\n properties[k] = schema.properties[k];\n }\n }\n }\n Object.assign(properties, alt.properties);\n return {\n ...base,\n ...alt,\n properties,\n };\n }\n return alt;\n });\n return [key, mergedSubschema];\n }),\n );\n};\n\nconst useColumnStyles = makeStyles({\n description: {\n width: '40%',\n whiteSpace: 'normal',\n wordWrap: 'break-word',\n '&.MuiTableCell-root': {\n whiteSpace: 'normal',\n },\n },\n standard: {\n whiteSpace: 'normal',\n },\n});\n\ntype SchemaRenderElement = {\n schema: JSONSchema7Definition;\n key?: string;\n required?: boolean;\n};\n\ntype RenderColumn = (\n element: SchemaRenderElement,\n context: SchemaRenderContext,\n) => JSX.Element;\n\ntype Column = {\n key: string;\n title: (t: TranslationMessages<typeof scaffolderTranslationRef>) => string;\n render: RenderColumn;\n className?: keyof ReturnType<typeof useColumnStyles>;\n};\n\nconst generateId = (\n element: SchemaRenderElement,\n context: SchemaRenderContext,\n) => {\n return element.key ? `${context.parentId}.${element.key}` : context.parentId;\n};\n\nconst nameColumn = {\n key: 'name',\n title: t => t('renderSchema.tableCell.name'),\n render: (element: SchemaRenderElement, context: SchemaRenderContext) => {\n return (\n <div\n className={classNames(context.classes.code, {\n [context.classes.codeRequired]: element.required,\n })}\n >\n {element.key}\n </div>\n );\n },\n} as Column;\n\nconst titleColumn = {\n key: 'title',\n title: t => t('renderSchema.tableCell.title'),\n render: (element: SchemaRenderElement) => (\n <MarkdownContent content={(element.schema as JSONSchema7).title ?? ''} />\n ),\n} as Column;\n\nconst descriptionColumn = {\n key: 'description',\n title: t => t('renderSchema.tableCell.description'),\n render: (element: SchemaRenderElement) => (\n <MarkdownContent\n content={(element.schema as JSONSchema7).description ?? ''}\n />\n ),\n className: 'description',\n} as Column;\n\nconst enumFrom = (schema: JSONSchema7) => {\n if (schema.type === 'array') {\n if (schema.items && typeof schema.items !== 'boolean') {\n if (Array.isArray(schema.items)) {\n const itemsWithEnum = schema.items\n .filter(e => typeof e === 'object' && 'enum' in e)\n .map(e => e as JSONSchema7);\n if (itemsWithEnum.length) {\n return itemsWithEnum[0].enum;\n }\n } else {\n return schema.items?.enum;\n }\n }\n return undefined;\n }\n return schema.enum;\n};\n\nconst inspectSchema = (\n schema: JSONSchema7Definition,\n): {\n canSubschema: boolean;\n hasEnum: boolean;\n} => {\n if (typeof schema === 'boolean') {\n return { canSubschema: false, hasEnum: false };\n }\n return {\n canSubschema:\n Object.getOwnPropertyNames(schema).some(p =>\n compositeSchemaProperties.includes(p as any),\n ) || getTypes(schema)!.some(t => t.includes('object')),\n hasEnum: !!enumFrom(schema),\n };\n};\n\nconst typeColumn = {\n key: 'type',\n title: t => t('renderSchema.tableCell.type'),\n render: (element: SchemaRenderElement, context: SchemaRenderContext) => {\n if (typeof element.schema === 'boolean') {\n return <Typography>{element.schema ? 'any' : 'none'}</Typography>;\n }\n const types = getTypes(element.schema);\n const [isExpanded, setIsExpanded] = context.expanded;\n const id = generateId(element, context);\n const info = inspectSchema(element.schema);\n return (\n <>\n {types?.map((type, index) =>\n info.canSubschema || (info.hasEnum && index === 0) ? (\n <Chip\n data-testid={`expand_${id}`}\n label={type}\n key={type}\n icon={isExpanded[id] ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n variant=\"outlined\"\n onClick={() =>\n setIsExpanded(prevState => {\n return {\n ...prevState,\n [id]: !!!prevState[id],\n };\n })\n }\n />\n ) : (\n <Chip label={type} key={type} variant=\"outlined\" />\n ),\n )}\n </>\n );\n },\n} as Column;\n\nexport const RenderEnum: FC<{\n e: JSONSchema7Type[];\n classes: ClassNameMap;\n [key: string]: any;\n}> = ({\n e,\n classes,\n ...props\n}: {\n e: JSONSchema7Type[];\n classes: ClassNameMap;\n}) => {\n return (\n <List {...props}>\n {e.map((v, i) => {\n let inner: JSX.Element = (\n <Typography\n data-testid={`enum_el${i}`}\n className={classNames(classes.code)}\n >\n {JSON.stringify(v)}\n </Typography>\n );\n if (v !== null && ['object', 'array'].includes(typeof v)) {\n inner = (\n <>\n {inner}\n <Tooltip\n title={\n <Typography\n data-testid={`pretty_${i}`}\n className={classNames(classes.code)}\n style={{ whiteSpace: 'pre-wrap' }}\n >\n {JSON.stringify(v, undefined, 2)}\n </Typography>\n }\n >\n <IconButton data-testid={`wrap-text_${i}`}>\n <WrapText />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n return <ListItem key={i}>{inner}</ListItem>;\n })}\n </List>\n );\n};\n\nconst useTableStyles = makeStyles({\n schema: {\n width: '100%',\n overflowX: 'hidden',\n '& table': {\n width: '100%',\n tableLayout: 'fixed',\n },\n },\n});\n\nexport const RenderSchema = ({\n strategy,\n context,\n schema,\n}: {\n strategy: SchemaRenderStrategy;\n context: SchemaRenderContext;\n schema?: JSONSchema7Definition;\n}) => {\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const tableStyles = useTableStyles();\n const columnStyles = useColumnStyles();\n const result = (() => {\n if (typeof schema === 'object') {\n const subschemas = getSubschemas(schema);\n let columns: Column[] | undefined;\n let elements: SchemaRenderElement[] | undefined;\n if (strategy === 'root') {\n if ('type' in schema || !Object.keys(subschemas).length) {\n elements = [{ schema }];\n columns = [typeColumn];\n if (schema.description) {\n columns.unshift(descriptionColumn);\n }\n if (schema.title) {\n columns.unshift(titleColumn);\n }\n }\n } else if (schema.properties) {\n columns = [nameColumn, titleColumn, descriptionColumn, typeColumn];\n elements = Object.entries(schema.properties!).map(([key, v]) => ({\n schema: v,\n key,\n required: schema.required?.includes(key),\n }));\n } else if (!Object.keys(subschemas).length) {\n return undefined;\n }\n const [isExpanded] = context.expanded;\n\n return (\n <>\n {columns && elements && (\n <TableContainer component={Paper} className={tableStyles.schema}>\n <Table\n data-testid={`${strategy}_${context.parentId}`}\n size=\"small\"\n >\n <TableHead>\n <TableRow>\n {columns.map((col, index) => (\n <TableCell\n key={index}\n className={columnStyles[col.className ?? 'standard']}\n >\n {col.title(t)}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {elements.map(el => {\n const id = generateId(el, context);\n const info = inspectSchema(el.schema);\n const rows = [\n <TableRow data-testid={`${strategy}-row_${id}`}>\n {columns!.map(col => (\n <TableCell\n key={col.key}\n className={\n columnStyles[col.className ?? 'standard']\n }\n >\n {col.render(el, context)}\n </TableCell>\n ))}\n </TableRow>,\n ];\n if (\n typeof el.schema !== 'boolean' &&\n (info.canSubschema || info.hasEnum)\n ) {\n let details: ReactElement = (\n <Box data-testid={`expansion_${id}`} sx={{ margin: 1 }}>\n {info.canSubschema && (\n <RenderSchema\n strategy=\"properties\"\n context={{\n ...context,\n parentId: id,\n parent: context,\n }}\n schema={\n el.schema.type === 'array'\n ? (el.schema.items as JSONSchema7 | undefined)\n : el.schema\n }\n />\n )}\n {info.hasEnum && (\n <>\n {cloneElement(\n context.headings[0],\n {},\n 'Valid values:',\n )}\n <RenderEnum\n data-testid={`enum_${id}`}\n e={enumFrom(el.schema)!}\n classes={context.classes}\n />\n </>\n )}\n </Box>\n );\n if (getTypes(el.schema)) {\n details = (\n <Collapse\n in={isExpanded[id]}\n timeout=\"auto\"\n unmountOnExit\n >\n {details}\n </Collapse>\n );\n }\n rows.push(\n <TableRow>\n <TableCell\n style={{ paddingBottom: 0, paddingTop: 0 }}\n colSpan={columns!.length}\n >\n {details}\n </TableCell>\n </TableRow>,\n );\n }\n return <Fragment key={id}>{rows}</Fragment>;\n })}\n </TableBody>\n </Table>\n </TableContainer>\n )}\n {(Object.keys(subschemas) as Array<keyof subSchemasType>).map(sk => (\n <Fragment key={sk}>\n {cloneElement(context.headings[0], {}, sk)}\n {subschemas[sk]!.map((sub, index) => (\n <RenderSchema\n key={index}\n strategy={\n typeof sub !== 'boolean' && 'properties' in sub\n ? strategy\n : 'root'\n }\n {...{\n context: {\n ...context,\n parentId: `${context.parentId}_${sk}${index}`,\n },\n schema: sub,\n }}\n />\n ))}\n </Fragment>\n ))}\n </>\n );\n }\n return undefined;\n })();\n return result ?? <Typography>No schema defined</Typography>;\n};\n"],"names":["Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAM,yBAAA,GAA4B,CAAC,OAAA,EAAS,OAAA,EAAS,OAAO,OAAO,CAAA;AAMnE,MAAM,QAAA,GAAW,CAAC,MAAA,KAAwB;AACxC,EAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAChB,IAAA,IACE,MAAA,CAAO,mBAAA,CAAoB,MAAM,CAAA,CAAE,IAAA;AAAA,MAAK,CAAA,CAAA,KACtC,yBAAA,CAA0B,QAAA,CAAS,CAAQ;AAAA,KAC7C,EACA;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,CAAC,SAAS,CAAA;AAAA,EACnB;AACA,EAAA,IAAI,MAAA,CAAO,SAAS,OAAA,EAAS;AAC3B,IAAA,OAAO,CAAC,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,EAAK;AAAA,EAC5B;AACA,EAAA,OAAO;AAAA,IACL,GAAG,MAAA,CAAO,IAAI,IACX,MAAA,CAAO,KAAA,EAAmC,QAAQ,SACrD,CAAA,CAAA;AAAA,GACF;AACF,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,MAAA,KAAkD;AACvE,EAAA,IAAI,OAAO,WAAW,SAAA,EAAW;AAC/B,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,MAAM,OAAgD,EAAC;AAEvD,EAAA,MAAM,aAA6B,EAAC;AAEpC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAG3C;AACH,IAAA,IAAI,yBAAA,CAA0B,QAAA,CAAS,GAA2B,CAAA,EAAG;AACnE,MAAA,IAAI,CAAA;AACJ,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,QAAA,IAAI,CAAC,MAAM,MAAA,EAAQ;AACjB,UAAA;AAAA,QACF;AACA,QAAA,CAAA,GAAI,KAAA;AAAA,MACN,WAAW,KAAA,EAAO;AAChB,QAAA,CAAA,GAAI,CAAC,KAAK,CAAA;AAAA,MACZ,CAAA,MAAO;AACL,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,GAA2B,CAAA,GAAI,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,GAAuD,CAAA,GAAI,KAAA;AAAA,IAClE;AAAA,EACF;AACA,EAAA,IAAI,EAAE,IAAA,EAAM,IAAA,KAAS,QAAA,IAAY,gBAAgB,IAAA,CAAA,EAAO;AACtD,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAA,CAAO,QAAQ,UAAU,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,GAAG,CAAA,KAAM;AAC7C,MAAA,MAAM,eAAA,GAAkB,GAAA,CAAI,GAAA,CAAI,CAAA,GAAA,KAAO;AACrC,QAAA,IAAI,OAAO,GAAA,KAAQ,SAAA,IAAa,GAAA,CAAI,QAAA,EAAU;AAC5C,UAAA,MAAM,aAAwC,EAAC;AAC/C,UAAA,IAAI,OAAO,UAAA,EAAY;AACrB,YAAA,KAAA,MAAW,CAAA,IAAK,IAAI,QAAA,EAAU;AAC5B,cAAA,IAAI,CAAA,IAAK,OAAO,UAAA,EAAY;AAC1B,gBAAA,UAAA,CAAW,CAAC,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,CAAC,CAAA;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AACA,UAAA,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,GAAA,CAAI,UAAU,CAAA;AACxC,UAAA,OAAO;AAAA,YACL,GAAG,IAAA;AAAA,YACH,GAAG,GAAA;AAAA,YACH;AAAA,WACF;AAAA,QACF;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AACD,MAAA,OAAO,CAAC,KAAK,eAAe,CAAA;AAAA,IAC9B,CAAC;AAAA,GACH;AACF,CAAA;AAEA,MAAM,kBAAkB,UAAA,CAAW;AAAA,EACjC,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU,YAAA;AAAA,IACV,qBAAA,EAAuB;AAAA,MACrB,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AAoBD,MAAM,UAAA,GAAa,CACjB,OAAA,EACA,OAAA,KACG;AACH,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA,CAAA,EAAI,OAAA,CAAQ,GAAG,CAAA,CAAA,GAAK,OAAA,CAAQ,QAAA;AACtE,CAAA;AAEA,MAAM,UAAA,GAAa;AAAA,EACjB,GAAA,EAAK,MAAA;AAAA,EACL,KAAA,EAAO,CAAA,CAAA,KAAK,CAAA,CAAE,6BAA6B,CAAA;AAAA,EAC3C,MAAA,EAAQ,CAAC,OAAA,EAA8B,OAAA,KAAiC;AACtE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,UAAA,CAAW,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM;AAAA,UAC1C,CAAC,OAAA,CAAQ,OAAA,CAAQ,YAAY,GAAG,OAAA,CAAQ;AAAA,SACzC,CAAA;AAAA,QAEA,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA,KACX;AAAA,EAEJ;AACF,CAAA;AAEA,MAAM,WAAA,GAAc;AAAA,EAClB,GAAA,EAAK,OAAA;AAAA,EACL,KAAA,EAAO,CAAA,CAAA,KAAK,CAAA,CAAE,8BAA8B,CAAA;AAAA,EAC5C,MAAA,EAAQ,CAAC,OAAA,qBACP,GAAA,CAAC,mBAAgB,OAAA,EAAU,OAAA,CAAQ,MAAA,CAAuB,KAAA,IAAS,EAAA,EAAI;AAE3E,CAAA;AAEA,MAAM,iBAAA,GAAoB;AAAA,EACxB,GAAA,EAAK,aAAA;AAAA,EACL,KAAA,EAAO,CAAA,CAAA,KAAK,CAAA,CAAE,oCAAoC,CAAA;AAAA,EAClD,MAAA,EAAQ,CAAC,OAAA,qBACP,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAU,OAAA,CAAQ,MAAA,CAAuB,WAAA,IAAe;AAAA;AAAA,GAC1D;AAAA,EAEF,SAAA,EAAW;AACb,CAAA;AAEA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAwB;AACxC,EAAA,IAAI,MAAA,CAAO,SAAS,OAAA,EAAS;AAC3B,IAAA,IAAI,MAAA,CAAO,KAAA,IAAS,OAAO,MAAA,CAAO,UAAU,SAAA,EAAW;AACrD,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,EAAG;AAC/B,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,KAAA,CAC1B,MAAA,CAAO,CAAA,CAAA,KAAK,OAAO,CAAA,KAAM,QAAA,IAAY,MAAA,IAAU,CAAC,CAAA,CAChD,GAAA,CAAI,OAAK,CAAgB,CAAA;AAC5B,QAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,UAAA,OAAO,aAAA,CAAc,CAAC,CAAA,CAAE,IAAA;AAAA,QAC1B;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO,OAAO,KAAA,EAAO,IAAA;AAAA,MACvB;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB,CAAA;AAEA,MAAM,aAAA,GAAgB,CACpB,MAAA,KAIG;AACH,EAAA,IAAI,OAAO,WAAW,SAAA,EAAW;AAC/B,IAAA,OAAO,EAAE,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM;AAAA,EAC/C;AACA,EAAA,OAAO;AAAA,IACL,YAAA,EACE,MAAA,CAAO,mBAAA,CAAoB,MAAM,CAAA,CAAE,IAAA;AAAA,MAAK,CAAA,CAAA,KACtC,yBAAA,CAA0B,QAAA,CAAS,CAAQ;AAAA,KAC7C,IAAK,SAAS,MAAM,CAAA,CAAG,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,IACvD,OAAA,EAAS,CAAC,CAAC,QAAA,CAAS,MAAM;AAAA,GAC5B;AACF,CAAA;AAEA,MAAM,UAAA,GAAa;AAAA,EACjB,GAAA,EAAK,MAAA;AAAA,EACL,KAAA,EAAO,CAAA,CAAA,KAAK,CAAA,CAAE,6BAA6B,CAAA;AAAA,EAC3C,MAAA,EAAQ,CAAC,OAAA,EAA8B,OAAA,KAAiC;AACtE,IAAA,IAAI,OAAO,OAAA,CAAQ,MAAA,KAAW,SAAA,EAAW;AACvC,MAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,OAAA,CAAQ,MAAA,GAAS,QAAQ,MAAA,EAAO,CAAA;AAAA,IACtD;AACA,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AACrC,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,OAAA,CAAQ,QAAA;AAC5C,IAAA,MAAM,EAAA,GAAK,UAAA,CAAW,OAAA,EAAS,OAAO,CAAA;AACtC,IAAA,MAAM,IAAA,GAAO,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AACzC,IAAA,uCAEK,QAAA,EAAA,KAAA,EAAO,GAAA;AAAA,MAAI,CAAC,MAAM,KAAA,KACjB,IAAA,CAAK,gBAAiB,IAAA,CAAK,OAAA,IAAW,UAAU,CAAA,mBAC9C,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAa,UAAU,EAAE,CAAA,CAAA;AAAA,UACzB,KAAA,EAAO,IAAA;AAAA,UAEP,IAAA,EAAM,WAAW,EAAE,CAAA,uBAAK,cAAA,EAAA,EAAe,CAAA,uBAAM,cAAA,EAAA,EAAe,CAAA;AAAA,UAC5D,OAAA,EAAQ,UAAA;AAAA,UACR,OAAA,EAAS,MACP,aAAA,CAAc,CAAA,SAAA,KAAa;AACzB,YAAA,OAAO;AAAA,cACL,GAAG,SAAA;AAAA,cACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE;AAAA,aACvB;AAAA,UACF,CAAC;AAAA,SAAA;AAAA,QATE;AAAA,0BAaP,GAAA,CAAC,IAAA,EAAA,EAAK,OAAO,IAAA,EAAiB,OAAA,EAAQ,cAAd,IAAyB;AAAA,KAErD,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEO,MAAM,aAIR,CAAC;AAAA,EACJ,CAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAGM;AACJ,EAAA,uBACE,GAAA,CAAC,QAAM,GAAG,KAAA,EACP,YAAE,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACf,IAAA,IAAI,KAAA,mBACF,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAa,UAAU,CAAC,CAAA,CAAA;AAAA,QACxB,SAAA,EAAW,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AAAA,QAEjC,QAAA,EAAA,IAAA,CAAK,UAAU,CAAC;AAAA;AAAA,KACnB;AAEF,IAAA,IAAI,CAAA,KAAM,QAAQ,CAAC,QAAA,EAAU,OAAO,CAAA,CAAE,QAAA,CAAS,OAAO,CAAC,CAAA,EAAG;AACxD,MAAA,KAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,wBACD,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,KAAA,kBACE,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAa,UAAU,CAAC,CAAA,CAAA;AAAA,gBACxB,SAAA,EAAW,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AAAA,gBAClC,KAAA,EAAO,EAAE,UAAA,EAAY,UAAA,EAAW;AAAA,gBAE/B,QAAA,EAAA,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,MAAA,EAAW,CAAC;AAAA;AAAA,aACjC;AAAA,YAGF,QAAA,kBAAA,GAAA,CAAC,cAAW,aAAA,EAAa,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,EACrC,QAAA,kBAAA,GAAA,CAAC,YAAS,CAAA,EACZ;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAkB,QAAA,EAAA,KAAA,EAAA,EAAJ,CAAU,CAAA;AAAA,EAClC,CAAC,CAAA,EACH,CAAA;AAEJ;AAEA,MAAM,iBAAiB,UAAA,CAAW;AAAA,EAChC,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,MAAA;AAAA,MACP,WAAA,EAAa;AAAA;AACf;AAEJ,CAAC,CAAA;AAEM,MAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,KAIM;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAM,UAAA,GAAa,cAAc,MAAM,CAAA;AACvC,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,QAAA,IAAI,UAAU,MAAA,IAAU,CAAC,OAAO,IAAA,CAAK,UAAU,EAAE,MAAA,EAAQ;AACvD,UAAA,QAAA,GAAW,CAAC,EAAE,MAAA,EAAQ,CAAA;AACtB,UAAA,OAAA,GAAU,CAAC,UAAU,CAAA;AACrB,UAAA,IAAI,OAAO,WAAA,EAAa;AACtB,YAAA,OAAA,CAAQ,QAAQ,iBAAiB,CAAA;AAAA,UACnC;AACA,UAAA,IAAI,OAAO,KAAA,EAAO;AAChB,YAAA,OAAA,CAAQ,QAAQ,WAAW,CAAA;AAAA,UAC7B;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAW,OAAO,UAAA,EAAY;AAC5B,QAAA,OAAA,GAAU,CAAC,UAAA,EAAY,WAAA,EAAa,iBAAA,EAAmB,UAAU,CAAA;AACjE,QAAA,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAW,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,CAAC,CAAA,MAAO;AAAA,UAC/D,MAAA,EAAQ,CAAA;AAAA,UACR,GAAA;AAAA,UACA,QAAA,EAAU,MAAA,CAAO,QAAA,EAAU,QAAA,CAAS,GAAG;AAAA,SACzC,CAAE,CAAA;AAAA,MACJ,WAAW,CAAC,MAAA,CAAO,IAAA,CAAK,UAAU,EAAE,MAAA,EAAQ;AAC1C,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,MAAM,CAAC,UAAU,CAAA,GAAI,OAAA,CAAQ,QAAA;AAE7B,MAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,OAAA,IAAW,4BACV,GAAA,CAAC,cAAA,EAAA,EAAe,WAAW,KAAA,EAAO,SAAA,EAAW,YAAY,MAAA,EACvD,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,QAAQ,CAAA,CAAA;AAAA,YAC5C,IAAA,EAAK,OAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,aACC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,KAAK,KAAA,qBACjB,GAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,YAAA,CAAa,GAAA,CAAI,SAAA,IAAa,UAAU,CAAA;AAAA,kBAElD,QAAA,EAAA,GAAA,CAAI,MAAM,CAAC;AAAA,iBAAA;AAAA,gBAHP;AAAA,eAKR,GACH,CAAA,EACF,CAAA;AAAA,8BACA,GAAA,CAAC,SAAA,EAAA,EACE,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAA,EAAA,KAAM;AAClB,gBAAA,MAAM,EAAA,GAAK,UAAA,CAAW,EAAA,EAAI,OAAO,CAAA;AACjC,gBAAA,MAAM,IAAA,GAAO,aAAA,CAAc,EAAA,CAAG,MAAM,CAAA;AACpC,gBAAA,MAAM,IAAA,GAAO;AAAA,kCACX,GAAA,CAAC,QAAA,EAAA,EAAS,aAAA,EAAa,CAAA,EAAG,QAAQ,QAAQ,EAAE,CAAA,CAAA,EACzC,QAAA,EAAA,OAAA,CAAS,GAAA,CAAI,CAAA,GAAA,qBACZ,GAAA;AAAA,oBAAC,SAAA;AAAA,oBAAA;AAAA,sBAEC,SAAA,EACE,YAAA,CAAa,GAAA,CAAI,SAAA,IAAa,UAAU,CAAA;AAAA,sBAGzC,QAAA,EAAA,GAAA,CAAI,MAAA,CAAO,EAAA,EAAI,OAAO;AAAA,qBAAA;AAAA,oBALlB,GAAA,CAAI;AAAA,mBAOZ,CAAA,EACH;AAAA,iBACF;AACA,gBAAA,IACE,OAAO,EAAA,CAAG,MAAA,KAAW,cACpB,IAAA,CAAK,YAAA,IAAgB,KAAK,OAAA,CAAA,EAC3B;AACA,kBAAA,IAAI,OAAA,mBACF,IAAA,CAAC,GAAA,EAAA,EAAI,aAAA,EAAa,CAAA,UAAA,EAAa,EAAE,CAAA,CAAA,EAAI,EAAA,EAAI,EAAE,MAAA,EAAQ,CAAA,EAAE,EAClD,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,YAAA,oBACJ,GAAA;AAAA,sBAAC,YAAA;AAAA,sBAAA;AAAA,wBACC,QAAA,EAAS,YAAA;AAAA,wBACT,OAAA,EAAS;AAAA,0BACP,GAAG,OAAA;AAAA,0BACH,QAAA,EAAU,EAAA;AAAA,0BACV,MAAA,EAAQ;AAAA,yBACV;AAAA,wBACA,MAAA,EACE,GAAG,MAAA,CAAO,IAAA,KAAS,UACd,EAAA,CAAG,MAAA,CAAO,QACX,EAAA,CAAG;AAAA;AAAA,qBAEX;AAAA,oBAED,IAAA,CAAK,2BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAA,YAAA;AAAA,wBACC,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,wBAClB,EAAC;AAAA,wBACD;AAAA,uBACF;AAAA,sCACA,GAAA;AAAA,wBAAC,UAAA;AAAA,wBAAA;AAAA,0BACC,aAAA,EAAa,QAAQ,EAAE,CAAA,CAAA;AAAA,0BACvB,CAAA,EAAG,QAAA,CAAS,EAAA,CAAG,MAAM,CAAA;AAAA,0BACrB,SAAS,OAAA,CAAQ;AAAA;AAAA;AACnB,qBAAA,EACF;AAAA,mBAAA,EAEJ,CAAA;AAEF,kBAAA,IAAI,QAAA,CAAS,EAAA,CAAG,MAAM,CAAA,EAAG;AACvB,oBAAA,OAAA,mBACE,GAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,EAAA,EAAI,WAAW,EAAE,CAAA;AAAA,wBACjB,OAAA,EAAQ,MAAA;AAAA,wBACR,aAAA,EAAa,IAAA;AAAA,wBAEZ,QAAA,EAAA;AAAA;AAAA,qBACH;AAAA,kBAEJ;AACA,kBAAA,IAAA,CAAK,IAAA;AAAA,wCACF,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,sBAAC,SAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO,EAAE,aAAA,EAAe,CAAA,EAAG,YAAY,CAAA,EAAE;AAAA,wBACzC,SAAS,OAAA,CAAS,MAAA;AAAA,wBAEjB,QAAA,EAAA;AAAA;AAAA,qBACH,EACF;AAAA,mBACF;AAAA,gBACF;AACA,gBAAA,uBAAO,GAAA,CAACA,UAAAA,EAAA,EAAmB,QAAA,EAAA,IAAA,EAAA,EAAL,EAAU,CAAA;AAAA,cAClC,CAAC,CAAA,EACH;AAAA;AAAA;AAAA,SACF,EACF,CAAA;AAAA,QAEA,MAAA,CAAO,KAAK,UAAU,CAAA,CAAkC,IAAI,CAAA,EAAA,qBAC5D,IAAA,CAACA,YAAA,EACE,QAAA,EAAA;AAAA,UAAA,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAC,CAAA,EAAG,IAAI,EAAE,CAAA;AAAA,UACxC,WAAW,EAAE,CAAA,CAAG,GAAA,CAAI,CAAC,KAAK,KAAA,qBACzB,GAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cAEC,UACE,OAAO,GAAA,KAAQ,SAAA,IAAa,YAAA,IAAgB,MACxC,QAAA,GACA,MAAA;AAAA,cAEL,GAAG;AAAA,gBACF,OAAA,EAAS;AAAA,kBACP,GAAG,OAAA;AAAA,kBACH,UAAU,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA,CAAA,EAAI,EAAE,GAAG,KAAK,CAAA;AAAA,iBAC7C;AAAA,gBACA,MAAA,EAAQ;AAAA;AACV,aAAA;AAAA,YAZK;AAAA,WAcR;AAAA,SAAA,EAAA,EAlBY,EAmBf,CACD;AAAA,OAAA,EACH,CAAA;AAAA,IAEJ;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,GAAG;AACH,EAAA,OAAO,MAAA,oBAAU,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAChD;;;;"}
1
+ {"version":3,"file":"RenderSchema.esm.js","sources":["../../../src/components/RenderSchema/RenderSchema.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { MarkdownContent } from '@backstage/core-components';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport {\n Button,\n Cell,\n CellText,\n ColumnConfig,\n Flex,\n Table,\n Text,\n Tooltip,\n TooltipTrigger,\n} from '@backstage/ui';\nimport {\n JSONSchema7,\n JSONSchema7Definition,\n JSONSchema7Type,\n} from 'json-schema';\nimport { FC } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { SchemaRenderContext, SchemaRenderStrategy } from './types';\n\nconst compositeSchemaProperties = ['allOf', 'anyOf', 'not', 'oneOf'] as const;\n\ntype subSchemasType = {\n [K in (typeof compositeSchemaProperties)[number]]?: JSONSchema7Definition[];\n};\n\nconst getTypes = (schema: JSONSchema7) => {\n if (!schema.type) {\n if (\n Object.getOwnPropertyNames(schema).some(p =>\n compositeSchemaProperties.includes(p as any),\n )\n ) {\n return undefined;\n }\n return ['unknown'];\n }\n if (schema.type !== 'array') {\n return [schema.type].flat();\n }\n return [\n `${schema.type}(${\n (schema.items as JSONSchema7 | undefined)?.type ?? 'unknown'\n })`,\n ];\n};\n\nconst getSubschemas = (schema: JSONSchema7Definition): subSchemasType => {\n if (typeof schema === 'boolean') {\n return {};\n }\n const base: Omit<JSONSchema7, keyof subSchemasType> = {};\n\n const subschemas: subSchemasType = {};\n\n for (const [key, value] of Object.entries(schema) as [\n keyof JSONSchema7,\n any,\n ][]) {\n if (compositeSchemaProperties.includes(key as keyof subSchemasType)) {\n let v;\n if (Array.isArray(value)) {\n if (!value.length) {\n continue;\n }\n v = value;\n } else if (value) {\n v = [value];\n } else {\n continue;\n }\n subschemas[key as keyof subSchemasType] = v as any;\n } else {\n base[key as Exclude<keyof JSONSchema7, keyof subSchemasType>] = value;\n }\n }\n if (!(base?.type === 'object' || 'properties' in base)) {\n return subschemas;\n }\n return Object.fromEntries(\n Object.entries(subschemas).map(([key, sub]) => {\n const mergedSubschema = sub.map(alt => {\n if (typeof alt !== 'boolean' && alt.required) {\n const properties: JSONSchema7['properties'] = {};\n if (schema.properties) {\n for (const k of alt.required) {\n if (k in schema.properties) {\n properties[k] = schema.properties[k];\n }\n }\n }\n Object.assign(properties, alt.properties);\n return {\n ...base,\n ...alt,\n properties,\n };\n }\n return alt;\n });\n return [key, mergedSubschema];\n }),\n );\n};\n\ninterface SchemaTableItem {\n id: string;\n schema: JSONSchema7Definition;\n propKey?: string;\n required?: boolean;\n}\n\nconst generateId = (\n item: { propKey?: string },\n context: SchemaRenderContext,\n) => {\n return item.propKey\n ? `${context.parentId}.${item.propKey}`\n : context.parentId;\n};\n\nconst enumFrom = (schema: JSONSchema7) => {\n if (schema.type === 'array') {\n if (schema.items && typeof schema.items !== 'boolean') {\n if (Array.isArray(schema.items)) {\n const itemsWithEnum = schema.items\n .filter(e => typeof e === 'object' && 'enum' in e)\n .map(e => e as JSONSchema7);\n if (itemsWithEnum.length) {\n return itemsWithEnum[0].enum;\n }\n } else {\n return schema.items?.enum;\n }\n }\n return undefined;\n }\n return schema.enum;\n};\n\nconst inspectSchema = (\n schema: JSONSchema7Definition,\n): {\n canSubschema: boolean;\n hasEnum: boolean;\n} => {\n if (typeof schema === 'boolean') {\n return { canSubschema: false, hasEnum: false };\n }\n return {\n canSubschema:\n Object.getOwnPropertyNames(schema).some(p =>\n compositeSchemaProperties.includes(p as any),\n ) || getTypes(schema)!.some(t => t.includes('object')),\n hasEnum: !!enumFrom(schema),\n };\n};\n\nexport const RenderEnum: FC<{\n e: JSONSchema7Type[];\n [key: string]: any;\n}> = ({ e, ...props }: { e: JSONSchema7Type[] }) => {\n return (\n <ul {...props} style={{ listStyle: 'none', padding: 0, margin: 0 }}>\n {e.map((v, i) => {\n const text = JSON.stringify(v);\n const isComplex = v !== null && ['object', 'array'].includes(typeof v);\n return (\n <li key={i} style={{ padding: '2px 0' }}>\n <Flex gap=\"2\" align=\"center\">\n <Text\n as=\"span\"\n variant=\"body-small\"\n data-testid={`enum_el${i}`}\n style={{ fontFamily: 'monospace' }}\n >\n {text}\n </Text>\n {isComplex && (\n <TooltipTrigger>\n <Button\n data-testid={`wrap-text_${i}`}\n variant=\"tertiary\"\n size=\"small\"\n aria-label=\"Show formatted value\"\n >\n ↵\n </Button>\n <Tooltip>\n <Text\n as=\"span\"\n data-testid={`pretty_${i}`}\n style={{\n fontFamily: 'monospace',\n whiteSpace: 'pre-wrap',\n }}\n >\n {JSON.stringify(v, undefined, 2)}\n </Text>\n </Tooltip>\n </TooltipTrigger>\n )}\n </Flex>\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport const RenderSchema = ({\n strategy,\n context,\n schema,\n}: {\n strategy: SchemaRenderStrategy;\n context: SchemaRenderContext;\n schema?: JSONSchema7Definition;\n}) => {\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const columnConfig: ColumnConfig<SchemaTableItem>[] =\n strategy === 'root'\n ? [\n {\n id: 'value',\n label: t('renderSchema.tableCell.value'),\n isRowHeader: true,\n defaultWidth: '3fr',\n cell: item => <ValueCell item={item} context={context} />,\n },\n ]\n : [\n {\n id: 'name',\n label: t('renderSchema.tableCell.name'),\n isRowHeader: true,\n defaultWidth: 300,\n cell: item => {\n const name = item.propKey ?? '';\n return (\n <Cell>\n <Text\n as=\"span\"\n variant=\"body-medium\"\n style={{ fontFamily: 'monospace' }}\n >\n {item.required ? `${name} *` : name}\n </Text>\n </Cell>\n );\n },\n },\n {\n id: 'value',\n label: t('renderSchema.tableCell.value'),\n defaultWidth: '1fr',\n cell: item => <ValueCell item={item} context={context} />,\n },\n ];\n\n const result = (() => {\n if (typeof schema === 'object') {\n const subschemas = getSubschemas(schema);\n let data: SchemaTableItem[] | undefined;\n if (strategy === 'root') {\n if ('type' in schema || !Object.keys(subschemas).length) {\n data = [{ id: `root-row_${context.parentId}`, schema }];\n }\n } else if (schema.properties) {\n data = Object.entries(schema.properties).map(([key, v]) => ({\n id: `${strategy}-row_${context.parentId}.${key}`,\n schema: v,\n propKey: key,\n required: schema.required?.includes(key),\n }));\n } else if (!Object.keys(subschemas).length) {\n return undefined;\n }\n const [isExpanded, setIsExpanded] = context.expanded;\n\n return (\n <Flex direction=\"column\" gap=\"2\">\n {data && (\n <div data-testid={`${strategy}_${context.parentId}`}>\n <Table\n columnConfig={columnConfig}\n data={data}\n pagination={{ type: 'none' }}\n />\n </div>\n )}\n {(Object.keys(subschemas) as Array<keyof subSchemasType>).map(sk => {\n const subId = `${context.parentId}_${sk}`;\n const isSubOpen = isExpanded[subId];\n return (\n <Flex key={sk} direction=\"column\" gap=\"2\">\n <Button\n data-testid={`expand_${subId}`}\n variant=\"tertiary\"\n size=\"small\"\n onPress={() =>\n setIsExpanded(prevState => ({\n ...prevState,\n [subId]: !prevState[subId],\n }))\n }\n style={{ alignSelf: 'flex-start' }}\n >\n {isSubOpen ? '▴' : '▾'} {sk}\n </Button>\n {isSubOpen &&\n subschemas[sk]!.map((sub, index) => (\n <RenderSchema\n key={index}\n strategy={\n typeof sub !== 'boolean' && 'properties' in sub\n ? strategy\n : 'root'\n }\n context={{\n ...context,\n parentId: `${context.parentId}_${sk}${index}`,\n }}\n schema={sub}\n />\n ))}\n </Flex>\n );\n })}\n </Flex>\n );\n }\n return undefined;\n })();\n return result ?? <Text as=\"p\">{t('renderSchema.undefined')}</Text>;\n};\n\nfunction RenderExpansion({\n item,\n context,\n}: {\n item: SchemaTableItem;\n context: SchemaRenderContext;\n}) {\n const id = generateId(item, context);\n const info = inspectSchema(item.schema);\n const hasDetails =\n typeof item.schema !== 'boolean' && (info.canSubschema || info.hasEnum);\n const s =\n typeof item.schema !== 'boolean' ? (item.schema as JSONSchema7) : undefined;\n const [isExpanded] = context.expanded;\n const isOpen = hasDetails && s && (!getTypes(s) || isExpanded[id]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div data-testid={`expansion_${id}`} style={{ paddingLeft: 16 }}>\n {info.canSubschema && (\n <RenderSchema\n strategy=\"properties\"\n context={{\n ...context,\n parentId: id,\n parent: context,\n }}\n schema={\n s!.type === 'array' ? (s!.items as JSONSchema7 | undefined) : s\n }\n />\n )}\n {info.hasEnum && (\n <>\n <Text as=\"h4\" variant=\"title-small\" weight=\"bold\">\n Valid values:\n </Text>\n <RenderEnum data-testid={`enum_${id}`} e={enumFrom(s!)!} />\n </>\n )}\n </div>\n );\n}\n\nfunction ValueCell({\n item,\n context,\n}: {\n item: SchemaTableItem;\n context: SchemaRenderContext;\n}) {\n if (typeof item.schema === 'boolean') {\n return <CellText title={item.schema ? 'any' : 'none'} />;\n }\n const types = getTypes(item.schema);\n const [isExpanded, setIsExpanded] = context.expanded;\n const id = generateId(item, context);\n const info = inspectSchema(item.schema);\n const { title, description } = item.schema;\n return (\n <Cell>\n <Flex direction=\"column\" gap=\"1\">\n <Flex gap=\"1\" align=\"center\">\n {types?.map((type, index) =>\n (info.canSubschema || info.hasEnum) && index === 0 ? (\n <Button\n key={type}\n data-testid={`expand_${id}`}\n variant=\"tertiary\"\n size=\"small\"\n onPress={() =>\n setIsExpanded(prevState => ({\n ...prevState,\n [id]: !prevState[id],\n }))\n }\n >\n {isExpanded[id] ? '▴' : '▾'} {type}\n </Button>\n ) : (\n <Text\n key={type}\n as=\"span\"\n variant=\"body-small\"\n color=\"secondary\"\n style={{\n fontFamily: 'monospace',\n background: 'var(--bui-bg-neutral-2)',\n padding: '1px 6px',\n borderRadius: 4,\n }}\n >\n {type}\n </Text>\n ),\n )}\n </Flex>\n {title && <MarkdownContent content={title} />}\n {description && <MarkdownContent content={description} />}\n <RenderExpansion item={item} context={context} />\n </Flex>\n </Cell>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -25,9 +25,7 @@ const FilterDetailContent = ({
25
25
  }
26
26
  const schema = filter.schema;
27
27
  const partialSchemaRenderContext = {
28
- classes,
29
- expanded,
30
- headings: [/* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h4" })]
28
+ expanded
31
29
  };
32
30
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
33
31
  filter.description && /* @__PURE__ */ jsx(MarkdownContent, { content: filter.description }),
@@ -63,8 +61,7 @@ const FilterDetailContent = ({
63
61
  strategy: "root",
64
62
  context: {
65
63
  parentId: `${name}.arg${i}`,
66
- ...partialSchemaRenderContext,
67
- headings: [/* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h5" })]
64
+ ...partialSchemaRenderContext
68
65
  },
69
66
  schema: argSchema
70
67
  }