@backstage/plugin-config-schema 0.1.67-next.0 → 0.1.67
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/CHANGELOG.md +28 -0
- package/dist/components/ConfigSchemaPage/ConfigSchemaPage.esm.js +9 -5
- package/dist/components/ConfigSchemaPage/ConfigSchemaPage.esm.js.map +1 -1
- package/dist/components/SchemaBrowser/SchemaBrowser.esm.js +34 -33
- package/dist/components/SchemaBrowser/SchemaBrowser.esm.js.map +1 -1
- package/dist/components/SchemaView/SchemaView.esm.js +202 -137
- package/dist/components/SchemaView/SchemaView.esm.js.map +1 -1
- package/dist/components/SchemaViewer/SchemaViewer.esm.js +9 -6
- package/dist/components/SchemaViewer/SchemaViewer.esm.js.map +1 -1
- package/dist/components/ScrollTargetsContext/ScrollTargetsContext.esm.js +3 -2
- package/dist/components/ScrollTargetsContext/ScrollTargetsContext.esm.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/package.json +14 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @backstage/plugin-config-schema
|
|
2
2
|
|
|
3
|
+
## 0.1.67
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
|
|
8
|
+
|
|
9
|
+
<https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html>
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
- @backstage/core-components@0.17.1
|
|
13
|
+
- @backstage/core-plugin-api@1.10.6
|
|
14
|
+
- @backstage/errors@1.2.7
|
|
15
|
+
- @backstage/types@1.2.1
|
|
16
|
+
|
|
17
|
+
## 0.1.67-next.1
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
|
|
22
|
+
|
|
23
|
+
<https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html>
|
|
24
|
+
|
|
25
|
+
- Updated dependencies
|
|
26
|
+
- @backstage/core-components@0.17.1-next.1
|
|
27
|
+
- @backstage/core-plugin-api@1.10.6-next.0
|
|
28
|
+
- @backstage/errors@1.2.7
|
|
29
|
+
- @backstage/types@1.2.1
|
|
30
|
+
|
|
3
31
|
## 0.1.67-next.0
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
2
3
|
import useObservable from 'react-use/esm/useObservable';
|
|
3
4
|
import { configSchemaApiRef } from '../../api/types.esm.js';
|
|
4
5
|
import 'zen-observable';
|
|
@@ -16,14 +17,17 @@ const ConfigSchemaPage = () => {
|
|
|
16
17
|
let content;
|
|
17
18
|
if (schemaResult) {
|
|
18
19
|
if (schemaResult.schema) {
|
|
19
|
-
content = /* @__PURE__ */
|
|
20
|
+
content = /* @__PURE__ */ jsx(SchemaViewer, { schema: schemaResult.schema });
|
|
20
21
|
} else {
|
|
21
|
-
content = /* @__PURE__ */
|
|
22
|
+
content = /* @__PURE__ */ jsx(Typography, { variant: "h4", children: "No configuration schema available" });
|
|
22
23
|
}
|
|
23
24
|
} else {
|
|
24
|
-
content = /* @__PURE__ */
|
|
25
|
+
content = /* @__PURE__ */ jsx(Progress, {});
|
|
25
26
|
}
|
|
26
|
-
return /* @__PURE__ */
|
|
27
|
+
return /* @__PURE__ */ jsxs(Page, { themeId: "tool", children: [
|
|
28
|
+
/* @__PURE__ */ jsx(Header, { title: "Configuration Reference" }),
|
|
29
|
+
/* @__PURE__ */ jsx(Content, { stretch: true, children: content })
|
|
30
|
+
] });
|
|
27
31
|
};
|
|
28
32
|
|
|
29
33
|
export { ConfigSchemaPage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigSchemaPage.esm.js","sources":["../../../src/components/ConfigSchemaPage/ConfigSchemaPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 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
|
|
1
|
+
{"version":3,"file":"ConfigSchemaPage.esm.js","sources":["../../../src/components/ConfigSchemaPage/ConfigSchemaPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 { useMemo } from 'react';\nimport useObservable from 'react-use/esm/useObservable';\nimport { configSchemaApiRef } from '../../api';\nimport { SchemaViewer } from '../SchemaViewer';\nimport Typography from '@material-ui/core/Typography';\n\nimport { Header, Page, Content, Progress } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const ConfigSchemaPage = () => {\n const configSchemaApi = useApi(configSchemaApiRef);\n const schemaResult = useObservable(\n useMemo(() => configSchemaApi.schema$(), [configSchemaApi]),\n );\n\n let content;\n if (schemaResult) {\n if (schemaResult.schema) {\n content = <SchemaViewer schema={schemaResult.schema} />;\n } else {\n content = (\n <Typography variant=\"h4\">No configuration schema available</Typography>\n );\n }\n } else {\n content = <Progress />;\n }\n\n return (\n <Page themeId=\"tool\">\n <Header title=\"Configuration Reference\" />\n <Content stretch>{content}</Content>\n </Page>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAwBO,MAAM,mBAAmB,MAAM;AACpC,EAAM,MAAA,eAAA,GAAkB,OAAO,kBAAkB,CAAA;AACjD,EAAA,MAAM,YAAe,GAAA,aAAA;AAAA,IACnB,QAAQ,MAAM,eAAA,CAAgB,SAAW,EAAA,CAAC,eAAe,CAAC;AAAA,GAC5D;AAEA,EAAI,IAAA,OAAA;AACJ,EAAA,IAAI,YAAc,EAAA;AAChB,IAAA,IAAI,aAAa,MAAQ,EAAA;AACvB,MAAA,OAAA,mBAAW,GAAA,CAAA,YAAA,EAAA,EAAa,MAAQ,EAAA,YAAA,CAAa,MAAQ,EAAA,CAAA;AAAA,KAChD,MAAA;AACL,MAAA,OAAA,mBACG,GAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,IAAA,EAAK,QAAiC,EAAA,mCAAA,EAAA,CAAA;AAAA;AAE9D,GACK,MAAA;AACL,IAAA,OAAA,uBAAW,QAAS,EAAA,EAAA,CAAA;AAAA;AAGtB,EACE,uBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,OAAA,EAAQ,MACZ,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,OAAM,yBAA0B,EAAA,CAAA;AAAA,oBACvC,GAAA,CAAA,OAAA,EAAA,EAAQ,OAAO,EAAA,IAAA,EAAE,QAAQ,EAAA,OAAA,EAAA;AAAA,GAC5B,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
1
2
|
import { withStyles, createStyles, alpha } from '@material-ui/core/styles';
|
|
2
3
|
import ChevronRightIcon from '@material-ui/icons/ChevronRight';
|
|
3
4
|
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
|
|
4
5
|
import TreeItem from '@material-ui/lab/TreeItem';
|
|
5
6
|
import TreeView from '@material-ui/lab/TreeView';
|
|
6
|
-
import
|
|
7
|
+
import { useRef, useMemo } from 'react';
|
|
7
8
|
import { useScrollTargets } from '../ScrollTargetsContext/ScrollTargetsContext.esm.js';
|
|
8
9
|
|
|
9
10
|
const StyledTreeItem = withStyles(
|
|
@@ -17,7 +18,7 @@ const StyledTreeItem = withStyles(
|
|
|
17
18
|
borderLeft: `1px solid ${alpha(theme.palette.text.primary, 0.15)}`
|
|
18
19
|
}
|
|
19
20
|
})
|
|
20
|
-
)((props) => /* @__PURE__ */
|
|
21
|
+
)((props) => /* @__PURE__ */ jsx(TreeItem, { ...props }));
|
|
21
22
|
function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
22
23
|
let matchArr;
|
|
23
24
|
if (schema.anyOf) {
|
|
@@ -31,19 +32,19 @@ function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
|
31
32
|
return matchArr.map((childSchema, index) => {
|
|
32
33
|
const childPath = `${path}/${index + 1}`;
|
|
33
34
|
if (depth > 0) expanded.push(childPath);
|
|
34
|
-
return /* @__PURE__ */
|
|
35
|
+
return /* @__PURE__ */ jsx(
|
|
35
36
|
StyledTreeItem,
|
|
36
37
|
{
|
|
37
|
-
key: childPath,
|
|
38
38
|
nodeId: childPath,
|
|
39
|
-
label: `<Option ${index + 1}
|
|
39
|
+
label: `<Option ${index + 1}>`,
|
|
40
|
+
children: createSchemaBrowserItems(
|
|
41
|
+
expanded,
|
|
42
|
+
childSchema,
|
|
43
|
+
childPath,
|
|
44
|
+
depth + 1
|
|
45
|
+
)
|
|
40
46
|
},
|
|
41
|
-
|
|
42
|
-
expanded,
|
|
43
|
-
childSchema,
|
|
44
|
-
childPath,
|
|
45
|
-
depth + 1
|
|
46
|
-
)
|
|
47
|
+
childPath
|
|
47
48
|
);
|
|
48
49
|
});
|
|
49
50
|
}
|
|
@@ -51,12 +52,12 @@ function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
|
51
52
|
case "array": {
|
|
52
53
|
const childPath = `${path}[]`;
|
|
53
54
|
if (depth > 0) expanded.push(childPath);
|
|
54
|
-
return /* @__PURE__ */
|
|
55
|
+
return /* @__PURE__ */ jsx(StyledTreeItem, { nodeId: childPath, label: "[]", children: schema.items && createSchemaBrowserItems(
|
|
55
56
|
expanded,
|
|
56
57
|
schema.items,
|
|
57
58
|
childPath,
|
|
58
59
|
depth + 1
|
|
59
|
-
));
|
|
60
|
+
) });
|
|
60
61
|
}
|
|
61
62
|
case "object":
|
|
62
63
|
case void 0: {
|
|
@@ -66,12 +67,12 @@ function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
|
66
67
|
...Object.entries(schema.properties).map(([name, childSchema]) => {
|
|
67
68
|
const childPath = path ? `${path}.${name}` : name;
|
|
68
69
|
if (depth > 0) expanded.push(childPath);
|
|
69
|
-
return /* @__PURE__ */
|
|
70
|
+
return /* @__PURE__ */ jsx(StyledTreeItem, { nodeId: childPath, label: name, children: createSchemaBrowserItems(
|
|
70
71
|
expanded,
|
|
71
72
|
childSchema,
|
|
72
73
|
childPath,
|
|
73
74
|
depth + 1
|
|
74
|
-
));
|
|
75
|
+
) }, childPath);
|
|
75
76
|
})
|
|
76
77
|
);
|
|
77
78
|
}
|
|
@@ -81,19 +82,19 @@ function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
|
81
82
|
([name, childSchema]) => {
|
|
82
83
|
const childPath = `${path}.<${name}>`;
|
|
83
84
|
if (depth > 0) expanded.push(childPath);
|
|
84
|
-
return /* @__PURE__ */
|
|
85
|
+
return /* @__PURE__ */ jsx(
|
|
85
86
|
StyledTreeItem,
|
|
86
87
|
{
|
|
87
|
-
key: childPath,
|
|
88
88
|
nodeId: childPath,
|
|
89
|
-
label: `<${name}
|
|
89
|
+
label: `<${name}>`,
|
|
90
|
+
children: createSchemaBrowserItems(
|
|
91
|
+
expanded,
|
|
92
|
+
childSchema,
|
|
93
|
+
childPath,
|
|
94
|
+
depth + 1
|
|
95
|
+
)
|
|
90
96
|
},
|
|
91
|
-
|
|
92
|
-
expanded,
|
|
93
|
-
childSchema,
|
|
94
|
-
childPath,
|
|
95
|
-
depth + 1
|
|
96
|
-
)
|
|
97
|
+
childPath
|
|
97
98
|
);
|
|
98
99
|
}
|
|
99
100
|
)
|
|
@@ -103,15 +104,15 @@ function createSchemaBrowserItems(expanded, schema, path = "", depth = 0) {
|
|
|
103
104
|
const childPath = `${path}.*`;
|
|
104
105
|
if (depth > 0) expanded.push(childPath);
|
|
105
106
|
children.push(
|
|
106
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ jsx(StyledTreeItem, { nodeId: childPath, label: "*", children: createSchemaBrowserItems(
|
|
107
108
|
expanded,
|
|
108
109
|
schema.additionalProperties,
|
|
109
110
|
childPath,
|
|
110
111
|
depth + 1
|
|
111
|
-
))
|
|
112
|
+
) }, childPath)
|
|
112
113
|
);
|
|
113
114
|
}
|
|
114
|
-
return /* @__PURE__ */
|
|
115
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
115
116
|
}
|
|
116
117
|
default:
|
|
117
118
|
return null;
|
|
@@ -136,16 +137,16 @@ function SchemaBrowser({ schema }) {
|
|
|
136
137
|
scroll.scrollTo(nodeId);
|
|
137
138
|
}
|
|
138
139
|
};
|
|
139
|
-
return /* @__PURE__ */
|
|
140
|
+
return /* @__PURE__ */ jsx(
|
|
140
141
|
TreeView,
|
|
141
142
|
{
|
|
142
143
|
defaultExpanded: data.expanded,
|
|
143
|
-
defaultCollapseIcon: /* @__PURE__ */
|
|
144
|
-
defaultExpandIcon: /* @__PURE__ */
|
|
144
|
+
defaultCollapseIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
145
|
+
defaultExpandIcon: /* @__PURE__ */ jsx(ChevronRightIcon, {}),
|
|
145
146
|
onNodeToggle: handleToggle,
|
|
146
|
-
onNodeSelect: handleSelect
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
onNodeSelect: handleSelect,
|
|
148
|
+
children: data.items
|
|
149
|
+
}
|
|
149
150
|
);
|
|
150
151
|
}
|
|
151
152
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaBrowser.esm.js","sources":["../../../src/components/SchemaBrowser/SchemaBrowser.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { alpha } from '@material-ui/core/styles';\nimport { createStyles, withStyles } from '@material-ui/core/styles';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport TreeItem, { TreeItemProps } from '@material-ui/lab/TreeItem';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { Schema } from 'jsonschema';\nimport React, { ReactNode, useMemo, useRef } from 'react';\nimport { useScrollTargets } from '../ScrollTargetsContext';\n\nconst StyledTreeItem = withStyles(theme =>\n createStyles({\n label: {\n userSelect: 'none',\n },\n group: {\n marginLeft: 7,\n paddingLeft: theme.spacing(1),\n borderLeft: `1px solid ${alpha(theme.palette.text.primary, 0.15)}`,\n },\n }),\n)((props: TreeItemProps) => <TreeItem {...props} />);\n\nexport function createSchemaBrowserItems(\n expanded: string[],\n schema: Schema,\n path: string = '',\n depth: number = 0,\n): ReactNode {\n let matchArr;\n if (schema.anyOf) {\n matchArr = schema.anyOf;\n } else if (schema.oneOf) {\n matchArr = schema.oneOf;\n } else if (schema.allOf) {\n matchArr = schema.allOf;\n }\n if (matchArr) {\n return matchArr.map((childSchema, index) => {\n const childPath = `${path}/${index + 1}`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem\n key={childPath}\n nodeId={childPath}\n label={`<Option ${index + 1}>`}\n >\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n });\n }\n\n switch (schema.type) {\n case 'array': {\n const childPath = `${path}[]`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem nodeId={childPath} label=\"[]\">\n {schema.items &&\n createSchemaBrowserItems(\n expanded,\n schema.items as Schema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n }\n case 'object':\n case undefined: {\n const children = [];\n\n if (schema.properties) {\n children.push(\n ...Object.entries(schema.properties).map(([name, childSchema]) => {\n const childPath = path ? `${path}.${name}` : name;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem key={childPath} nodeId={childPath} label={name}>\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n }),\n );\n }\n\n if (schema.patternProperties) {\n children.push(\n ...Object.entries(schema.patternProperties).map(\n ([name, childSchema]) => {\n const childPath = `${path}.<${name}>`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem\n key={childPath}\n nodeId={childPath}\n label={`<${name}>`}\n >\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n },\n ),\n );\n }\n\n if (schema.additionalProperties && schema.additionalProperties !== true) {\n const childPath = `${path}.*`;\n if (depth > 0) expanded.push(childPath);\n children.push(\n <StyledTreeItem key={childPath} nodeId={childPath} label=\"*\">\n {createSchemaBrowserItems(\n expanded,\n schema.additionalProperties,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>,\n );\n }\n\n return <>{children}</>;\n }\n\n default:\n return null;\n }\n}\n\nexport function SchemaBrowser({ schema }: { schema: Schema }) {\n const scroll = useScrollTargets();\n const expandedRef = useRef<string[]>([]);\n const data = useMemo(() => {\n const expanded = new Array<string>();\n\n const items = createSchemaBrowserItems(expanded, schema);\n\n return { items, expanded };\n }, [schema]);\n\n if (!scroll) {\n throw new Error('No scroll handler available');\n }\n\n const handleToggle = (_event: unknown, expanded: string[]) => {\n expandedRef.current = expanded;\n };\n\n const handleSelect = (_event: unknown, nodeId: string) => {\n if (expandedRef.current.includes(nodeId)) {\n scroll.scrollTo(nodeId);\n }\n };\n\n return (\n <TreeView\n defaultExpanded={data.expanded}\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n onNodeToggle={handleToggle}\n onNodeSelect={handleSelect}\n >\n {data.items}\n </TreeView>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaBrowser.esm.js","sources":["../../../src/components/SchemaBrowser/SchemaBrowser.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { alpha } from '@material-ui/core/styles';\nimport { createStyles, withStyles } from '@material-ui/core/styles';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport TreeItem, { TreeItemProps } from '@material-ui/lab/TreeItem';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { Schema } from 'jsonschema';\nimport { ReactNode, useMemo, useRef } from 'react';\nimport { useScrollTargets } from '../ScrollTargetsContext';\n\nconst StyledTreeItem = withStyles(theme =>\n createStyles({\n label: {\n userSelect: 'none',\n },\n group: {\n marginLeft: 7,\n paddingLeft: theme.spacing(1),\n borderLeft: `1px solid ${alpha(theme.palette.text.primary, 0.15)}`,\n },\n }),\n)((props: TreeItemProps) => <TreeItem {...props} />);\n\nexport function createSchemaBrowserItems(\n expanded: string[],\n schema: Schema,\n path: string = '',\n depth: number = 0,\n): ReactNode {\n let matchArr;\n if (schema.anyOf) {\n matchArr = schema.anyOf;\n } else if (schema.oneOf) {\n matchArr = schema.oneOf;\n } else if (schema.allOf) {\n matchArr = schema.allOf;\n }\n if (matchArr) {\n return matchArr.map((childSchema, index) => {\n const childPath = `${path}/${index + 1}`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem\n key={childPath}\n nodeId={childPath}\n label={`<Option ${index + 1}>`}\n >\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n });\n }\n\n switch (schema.type) {\n case 'array': {\n const childPath = `${path}[]`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem nodeId={childPath} label=\"[]\">\n {schema.items &&\n createSchemaBrowserItems(\n expanded,\n schema.items as Schema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n }\n case 'object':\n case undefined: {\n const children = [];\n\n if (schema.properties) {\n children.push(\n ...Object.entries(schema.properties).map(([name, childSchema]) => {\n const childPath = path ? `${path}.${name}` : name;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem key={childPath} nodeId={childPath} label={name}>\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n }),\n );\n }\n\n if (schema.patternProperties) {\n children.push(\n ...Object.entries(schema.patternProperties).map(\n ([name, childSchema]) => {\n const childPath = `${path}.<${name}>`;\n if (depth > 0) expanded.push(childPath);\n return (\n <StyledTreeItem\n key={childPath}\n nodeId={childPath}\n label={`<${name}>`}\n >\n {createSchemaBrowserItems(\n expanded,\n childSchema,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>\n );\n },\n ),\n );\n }\n\n if (schema.additionalProperties && schema.additionalProperties !== true) {\n const childPath = `${path}.*`;\n if (depth > 0) expanded.push(childPath);\n children.push(\n <StyledTreeItem key={childPath} nodeId={childPath} label=\"*\">\n {createSchemaBrowserItems(\n expanded,\n schema.additionalProperties,\n childPath,\n depth + 1,\n )}\n </StyledTreeItem>,\n );\n }\n\n return <>{children}</>;\n }\n\n default:\n return null;\n }\n}\n\nexport function SchemaBrowser({ schema }: { schema: Schema }) {\n const scroll = useScrollTargets();\n const expandedRef = useRef<string[]>([]);\n const data = useMemo(() => {\n const expanded = new Array<string>();\n\n const items = createSchemaBrowserItems(expanded, schema);\n\n return { items, expanded };\n }, [schema]);\n\n if (!scroll) {\n throw new Error('No scroll handler available');\n }\n\n const handleToggle = (_event: unknown, expanded: string[]) => {\n expandedRef.current = expanded;\n };\n\n const handleSelect = (_event: unknown, nodeId: string) => {\n if (expandedRef.current.includes(nodeId)) {\n scroll.scrollTo(nodeId);\n }\n };\n\n return (\n <TreeView\n defaultExpanded={data.expanded}\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n onNodeToggle={handleToggle}\n onNodeSelect={handleSelect}\n >\n {data.items}\n </TreeView>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
1
2
|
import Box from '@material-ui/core/Box';
|
|
2
3
|
import Chip from '@material-ui/core/Chip';
|
|
3
4
|
import Divider from '@material-ui/core/Divider';
|
|
@@ -8,13 +9,13 @@ import TableCell from '@material-ui/core/TableCell';
|
|
|
8
9
|
import TableRow from '@material-ui/core/TableRow';
|
|
9
10
|
import Typography from '@material-ui/core/Typography';
|
|
10
11
|
import { makeStyles } from '@material-ui/core/styles';
|
|
11
|
-
import
|
|
12
|
+
import { useRef, useEffect } from 'react';
|
|
12
13
|
import { useScrollTargets } from '../ScrollTargetsContext/ScrollTargetsContext.esm.js';
|
|
13
14
|
|
|
14
15
|
function SchemaView(props) {
|
|
15
16
|
const { schema } = props;
|
|
16
17
|
if (schema.anyOf) {
|
|
17
|
-
return /* @__PURE__ */
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
18
19
|
MatchView,
|
|
19
20
|
{
|
|
20
21
|
...props,
|
|
@@ -24,7 +25,7 @@ function SchemaView(props) {
|
|
|
24
25
|
);
|
|
25
26
|
}
|
|
26
27
|
if (schema.oneOf) {
|
|
27
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ jsx(
|
|
28
29
|
MatchView,
|
|
29
30
|
{
|
|
30
31
|
...props,
|
|
@@ -34,7 +35,7 @@ function SchemaView(props) {
|
|
|
34
35
|
);
|
|
35
36
|
}
|
|
36
37
|
if (schema.allOf) {
|
|
37
|
-
return /* @__PURE__ */
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
38
39
|
MatchView,
|
|
39
40
|
{
|
|
40
41
|
...props,
|
|
@@ -45,35 +46,46 @@ function SchemaView(props) {
|
|
|
45
46
|
}
|
|
46
47
|
switch (schema.type) {
|
|
47
48
|
case "array":
|
|
48
|
-
return /* @__PURE__ */
|
|
49
|
+
return /* @__PURE__ */ jsx(ArrayView, { ...props });
|
|
49
50
|
case "object":
|
|
50
51
|
case void 0:
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
+
return /* @__PURE__ */ jsx(ObjectView, { ...props });
|
|
52
53
|
default:
|
|
53
|
-
return /* @__PURE__ */
|
|
54
|
+
return /* @__PURE__ */ jsx(ScalarView, { ...props });
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
function ArrayView({ path, depth, schema }) {
|
|
57
58
|
const itemDepth = depth + 1;
|
|
58
59
|
const itemPath = path ? `${path}[]` : "[]";
|
|
59
60
|
const itemSchema = schema.items;
|
|
60
|
-
return /* @__PURE__ */
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
61
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
62
|
+
/* @__PURE__ */ jsxs(Box, { marginBottom: 4, children: [
|
|
63
|
+
schema.description && /* @__PURE__ */ jsx(Box, { marginBottom: 4, children: /* @__PURE__ */ jsx(Typography, { variant: "body1", children: schema.description }) }),
|
|
64
|
+
/* @__PURE__ */ jsx(MetadataView, { schema })
|
|
65
|
+
] }),
|
|
66
|
+
/* @__PURE__ */ jsx(Typography, { variant: "overline", children: "Items" }),
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
ChildView,
|
|
69
|
+
{
|
|
70
|
+
lastChild: true,
|
|
71
|
+
path: itemPath,
|
|
72
|
+
depth: itemDepth,
|
|
73
|
+
schema: itemSchema
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
schema.additionalItems && schema.additionalItems !== true && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
+
/* @__PURE__ */ jsx(Typography, { variant: "overline", children: "Additional Items" }),
|
|
78
|
+
/* @__PURE__ */ jsx(
|
|
79
|
+
ChildView,
|
|
80
|
+
{
|
|
81
|
+
path: itemPath,
|
|
82
|
+
depth: itemDepth,
|
|
83
|
+
schema: schema.additionalItems,
|
|
84
|
+
lastChild: true
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
] })
|
|
88
|
+
] });
|
|
77
89
|
}
|
|
78
90
|
function isRequired(name, required) {
|
|
79
91
|
if (required === true) {
|
|
@@ -87,35 +99,52 @@ function isRequired(name, required) {
|
|
|
87
99
|
function ObjectView({ path, depth, schema }) {
|
|
88
100
|
const properties = Object.entries(schema.properties ?? {});
|
|
89
101
|
const patternProperties = Object.entries(schema.patternProperties ?? {});
|
|
90
|
-
return /* @__PURE__ */
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
102
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
103
|
+
depth > 0 && /* @__PURE__ */ jsxs(Box, { marginBottom: 4, children: [
|
|
104
|
+
schema.description && /* @__PURE__ */ jsx(Box, { marginBottom: 4, children: /* @__PURE__ */ jsx(Typography, { variant: "body1", children: schema.description }) }),
|
|
105
|
+
/* @__PURE__ */ jsx(MetadataView, { schema })
|
|
106
|
+
] }),
|
|
107
|
+
properties.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
108
|
+
depth > 0 && /* @__PURE__ */ jsx(Typography, { variant: "overline", children: "Properties" }),
|
|
109
|
+
properties.map(([name, propSchema], index) => /* @__PURE__ */ jsx(
|
|
110
|
+
ChildView,
|
|
111
|
+
{
|
|
112
|
+
path: path ? `${path}.${name}` : name,
|
|
113
|
+
depth: depth + 1,
|
|
114
|
+
schema: propSchema,
|
|
115
|
+
lastChild: index === properties.length - 1,
|
|
116
|
+
required: isRequired(name, schema.required)
|
|
117
|
+
},
|
|
118
|
+
name
|
|
119
|
+
))
|
|
120
|
+
] }),
|
|
121
|
+
patternProperties.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
122
|
+
depth > 0 && /* @__PURE__ */ jsx(Typography, { variant: "overline", children: "Pattern Properties" }),
|
|
123
|
+
patternProperties.map(([name, propSchema], index) => /* @__PURE__ */ jsx(
|
|
124
|
+
ChildView,
|
|
125
|
+
{
|
|
126
|
+
path: path ? `${path}.<${name}>` : name,
|
|
127
|
+
depth: depth + 1,
|
|
128
|
+
schema: propSchema,
|
|
129
|
+
lastChild: index === patternProperties.length - 1,
|
|
130
|
+
required: isRequired(name, schema.required)
|
|
131
|
+
},
|
|
132
|
+
name
|
|
133
|
+
))
|
|
134
|
+
] }),
|
|
135
|
+
schema.additionalProperties && schema.additionalProperties !== true && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
136
|
+
/* @__PURE__ */ jsx(Typography, { variant: "overline", children: "Additional Properties" }),
|
|
137
|
+
/* @__PURE__ */ jsx(
|
|
138
|
+
ChildView,
|
|
139
|
+
{
|
|
140
|
+
path: `${path}.*`,
|
|
141
|
+
depth: depth + 1,
|
|
142
|
+
schema: schema.additionalProperties,
|
|
143
|
+
lastChild: true
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] })
|
|
147
|
+
] });
|
|
119
148
|
}
|
|
120
149
|
function titleVariant(depth) {
|
|
121
150
|
if (depth <= 1) {
|
|
@@ -158,39 +187,47 @@ function ChildView({
|
|
|
158
187
|
const chipProps = { size: "small", classes: { root: classes.chip } };
|
|
159
188
|
if (required) {
|
|
160
189
|
chips.push(
|
|
161
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ jsx(Chip, { label: "required", color: "default", ...chipProps }, "required")
|
|
162
191
|
);
|
|
163
192
|
}
|
|
164
193
|
const visibility = schema?.visibility;
|
|
165
194
|
if (visibility === "frontend") {
|
|
166
195
|
chips.push(
|
|
167
|
-
/* @__PURE__ */
|
|
196
|
+
/* @__PURE__ */ jsx(Chip, { label: "frontend", color: "primary", ...chipProps }, "visibility")
|
|
168
197
|
);
|
|
169
198
|
} else if (visibility === "secret") {
|
|
170
199
|
chips.push(
|
|
171
|
-
/* @__PURE__ */
|
|
200
|
+
/* @__PURE__ */ jsx(Chip, { label: "secret", color: "secondary", ...chipProps }, "visibility")
|
|
172
201
|
);
|
|
173
202
|
}
|
|
174
|
-
return /* @__PURE__ */
|
|
175
|
-
|
|
176
|
-
{
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
203
|
+
return /* @__PURE__ */ jsxs(Box, { paddingBottom: lastChild ? 4 : 8, display: "flex", flexDirection: "row", children: [
|
|
204
|
+
/* @__PURE__ */ jsx(Divider, { orientation: "vertical", flexItem: true }),
|
|
205
|
+
/* @__PURE__ */ jsxs(Box, { paddingLeft: 2, flex: 1, children: [
|
|
206
|
+
/* @__PURE__ */ jsxs(
|
|
207
|
+
Box,
|
|
208
|
+
{
|
|
209
|
+
display: "flex",
|
|
210
|
+
flexDirection: "row",
|
|
211
|
+
marginBottom: 2,
|
|
212
|
+
alignItems: "center",
|
|
213
|
+
children: [
|
|
214
|
+
/* @__PURE__ */ jsx(
|
|
215
|
+
Typography,
|
|
216
|
+
{
|
|
217
|
+
ref: titleRef,
|
|
218
|
+
variant: titleVariant(depth),
|
|
219
|
+
classes: { root: classes.title },
|
|
220
|
+
children: path
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
chips.length > 0 && /* @__PURE__ */ jsx(Box, { marginLeft: 1 }),
|
|
224
|
+
chips
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
schema && /* @__PURE__ */ jsx(SchemaView, { path, depth, schema })
|
|
229
|
+
] })
|
|
230
|
+
] });
|
|
194
231
|
}
|
|
195
232
|
function MatchView({
|
|
196
233
|
path,
|
|
@@ -198,76 +235,104 @@ function MatchView({
|
|
|
198
235
|
schema,
|
|
199
236
|
label
|
|
200
237
|
}) {
|
|
201
|
-
return /* @__PURE__ */
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
238
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
239
|
+
/* @__PURE__ */ jsx(Typography, { variant: "overline", children: label }),
|
|
240
|
+
schema.map((optionSchema, index) => /* @__PURE__ */ jsx(
|
|
241
|
+
ChildView,
|
|
242
|
+
{
|
|
243
|
+
path: `${path}/${index + 1}`,
|
|
244
|
+
depth: depth + 1,
|
|
245
|
+
schema: optionSchema,
|
|
246
|
+
lastChild: index === schema.length - 1
|
|
247
|
+
},
|
|
248
|
+
index
|
|
249
|
+
))
|
|
250
|
+
] });
|
|
211
251
|
}
|
|
212
252
|
function ScalarView({ schema }) {
|
|
213
|
-
return /* @__PURE__ */
|
|
253
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
254
|
+
schema.description && /* @__PURE__ */ jsx(Box, { marginBottom: 4, children: /* @__PURE__ */ jsx(Typography, { variant: "body1", children: schema.description }) }),
|
|
255
|
+
/* @__PURE__ */ jsx(MetadataView, { schema })
|
|
256
|
+
] });
|
|
214
257
|
}
|
|
215
258
|
function MetadataViewRow({ label, text, data }) {
|
|
216
259
|
if (text === void 0 && data === void 0) {
|
|
217
260
|
return null;
|
|
218
261
|
}
|
|
219
|
-
return /* @__PURE__ */
|
|
262
|
+
return /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
263
|
+
/* @__PURE__ */ jsx(TableCell, { style: { width: 160 }, children: /* @__PURE__ */ jsx(Typography, { variant: "body1", noWrap: true, style: { fontWeight: 900 }, children: label }) }),
|
|
264
|
+
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { variant: "body1", children: data ? JSON.stringify(data) : text }) })
|
|
265
|
+
] });
|
|
220
266
|
}
|
|
221
267
|
function MetadataView({ schema }) {
|
|
222
|
-
return /* @__PURE__ */
|
|
223
|
-
MetadataViewRow,
|
|
224
|
-
{
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
MetadataViewRow,
|
|
236
|
-
{
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
268
|
+
return /* @__PURE__ */ jsx(Paper, { variant: "outlined", square: true, style: { width: "100%" }, children: /* @__PURE__ */ jsx(Table, { size: "small", children: /* @__PURE__ */ jsxs(TableBody, { children: [
|
|
269
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Type", data: schema.type }),
|
|
270
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Allowed values", data: schema.enum }),
|
|
271
|
+
schema.additionalProperties === true && /* @__PURE__ */ jsx(MetadataViewRow, { label: "Additional Properties", text: "true" }),
|
|
272
|
+
schema.additionalItems === true && /* @__PURE__ */ jsx(MetadataViewRow, { label: "Additional Items", text: "true" }),
|
|
273
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Format", text: schema.format }),
|
|
274
|
+
/* @__PURE__ */ jsx(
|
|
275
|
+
MetadataViewRow,
|
|
276
|
+
{
|
|
277
|
+
label: "Pattern",
|
|
278
|
+
text: schema.pattern && String(schema.pattern)
|
|
279
|
+
}
|
|
280
|
+
),
|
|
281
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Minimum", data: schema.minimum }),
|
|
282
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Maximum", data: schema.maximum }),
|
|
283
|
+
/* @__PURE__ */ jsx(
|
|
284
|
+
MetadataViewRow,
|
|
285
|
+
{
|
|
286
|
+
label: "Exclusive minimum",
|
|
287
|
+
data: schema.exclusiveMinimum
|
|
288
|
+
}
|
|
289
|
+
),
|
|
290
|
+
/* @__PURE__ */ jsx(
|
|
291
|
+
MetadataViewRow,
|
|
292
|
+
{
|
|
293
|
+
label: "Exclusive maximum",
|
|
294
|
+
data: schema.exclusiveMaximum
|
|
295
|
+
}
|
|
296
|
+
),
|
|
297
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Multiple of", data: schema.multipleOf }),
|
|
298
|
+
/* @__PURE__ */ jsx(
|
|
299
|
+
MetadataViewRow,
|
|
300
|
+
{
|
|
301
|
+
label: "Maximum number of items",
|
|
302
|
+
data: schema.maxItems
|
|
303
|
+
}
|
|
304
|
+
),
|
|
305
|
+
/* @__PURE__ */ jsx(
|
|
306
|
+
MetadataViewRow,
|
|
307
|
+
{
|
|
308
|
+
label: "Minimum number of items",
|
|
309
|
+
data: schema.minItems
|
|
310
|
+
}
|
|
311
|
+
),
|
|
312
|
+
/* @__PURE__ */ jsx(
|
|
313
|
+
MetadataViewRow,
|
|
314
|
+
{
|
|
315
|
+
label: "Maximum number of properties",
|
|
316
|
+
data: schema.maxProperties
|
|
317
|
+
}
|
|
318
|
+
),
|
|
319
|
+
/* @__PURE__ */ jsx(
|
|
320
|
+
MetadataViewRow,
|
|
321
|
+
{
|
|
322
|
+
label: "Minimum number of properties",
|
|
323
|
+
data: schema.minProperties
|
|
324
|
+
}
|
|
325
|
+
),
|
|
326
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Maximum Length", data: schema.maxLength }),
|
|
327
|
+
/* @__PURE__ */ jsx(MetadataViewRow, { label: "Minimum Length", data: schema.minLength }),
|
|
328
|
+
/* @__PURE__ */ jsx(
|
|
329
|
+
MetadataViewRow,
|
|
330
|
+
{
|
|
331
|
+
label: "Items must be unique",
|
|
332
|
+
data: schema.uniqueItems
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
] }) }) });
|
|
271
336
|
}
|
|
272
337
|
|
|
273
338
|
export { SchemaView };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.esm.js","sources":["../../../src/components/SchemaView/SchemaView.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { JsonValue } from '@backstage/types';\nimport Box from '@material-ui/core/Box';\nimport Chip from '@material-ui/core/Chip';\nimport Divider from '@material-ui/core/Divider';\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 TableRow from '@material-ui/core/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Schema } from 'jsonschema';\nimport React, { useEffect, useRef } from 'react';\nimport { useScrollTargets } from '../ScrollTargetsContext/ScrollTargetsContext';\nimport { SchemaViewProps } from './types';\n\nexport function SchemaView(props: SchemaViewProps) {\n const { schema } = props;\n if (schema.anyOf) {\n return (\n <MatchView\n {...props}\n schema={schema.anyOf}\n label=\"Any of the following\"\n />\n );\n }\n if (schema.oneOf) {\n return (\n <MatchView\n {...props}\n schema={schema.oneOf}\n label=\"One of the following\"\n />\n );\n }\n if (schema.allOf) {\n return (\n <MatchView\n {...props}\n schema={schema.allOf}\n label=\"All of the following\"\n />\n );\n }\n switch (schema.type) {\n case 'array':\n return <ArrayView {...props} />;\n case 'object':\n case undefined:\n return <ObjectView {...props} />;\n default:\n return <ScalarView {...props} />;\n }\n}\n\nfunction ArrayView({ path, depth, schema }: SchemaViewProps) {\n const itemDepth = depth + 1;\n const itemPath = path ? `${path}[]` : '[]';\n const itemSchema = schema.items;\n\n return (\n <>\n <Box marginBottom={4}>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </Box>\n <Typography variant=\"overline\">Items</Typography>\n <ChildView\n lastChild\n path={itemPath}\n depth={itemDepth}\n schema={itemSchema as Schema | undefined}\n />\n {schema.additionalItems && schema.additionalItems !== true && (\n <>\n <Typography variant=\"overline\">Additional Items</Typography>\n <ChildView\n path={itemPath}\n depth={itemDepth}\n schema={schema.additionalItems}\n lastChild\n />\n </>\n )}\n </>\n );\n}\n\nfunction isRequired(name: string, required?: boolean | string[]) {\n if (required === true) {\n return true;\n }\n if (Array.isArray(required)) {\n return required.includes(name);\n }\n return false;\n}\n\nfunction ObjectView({ path, depth, schema }: SchemaViewProps) {\n const properties = Object.entries(schema.properties ?? {});\n const patternProperties = Object.entries(schema.patternProperties ?? {});\n\n return (\n <>\n {depth > 0 && (\n <Box marginBottom={4}>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </Box>\n )}\n {properties.length > 0 && (\n <>\n {depth > 0 && <Typography variant=\"overline\">Properties</Typography>}\n {properties.map(([name, propSchema], index) => (\n <ChildView\n key={name}\n path={path ? `${path}.${name}` : name}\n depth={depth + 1}\n schema={propSchema}\n lastChild={index === properties.length - 1}\n required={isRequired(name, schema.required)}\n />\n ))}\n </>\n )}\n {patternProperties.length > 0 && (\n <>\n {depth > 0 && (\n <Typography variant=\"overline\">Pattern Properties</Typography>\n )}\n {patternProperties.map(([name, propSchema], index) => (\n <ChildView\n key={name}\n path={path ? `${path}.<${name}>` : name}\n depth={depth + 1}\n schema={propSchema}\n lastChild={index === patternProperties.length - 1}\n required={isRequired(name, schema.required)}\n />\n ))}\n </>\n )}\n {schema.additionalProperties && schema.additionalProperties !== true && (\n <>\n <Typography variant=\"overline\">Additional Properties</Typography>\n <ChildView\n path={`${path}.*`}\n depth={depth + 1}\n schema={schema.additionalProperties}\n lastChild\n />\n </>\n )}\n </>\n );\n}\n\ninterface MetadataViewRowProps {\n label: string;\n text?: string;\n data?: JsonValue;\n}\n\nfunction titleVariant(depth: number) {\n if (depth <= 1) {\n return 'h2';\n } else if (depth === 2) {\n return 'h3';\n } else if (depth === 3) {\n return 'h4';\n } else if (depth === 4) {\n return 'h5';\n }\n return 'h6';\n}\n\nconst useChildViewStyles = makeStyles(theme => ({\n title: {\n marginBottom: 0,\n },\n chip: {\n marginLeft: theme.spacing(1),\n marginRight: 0,\n marginBottom: 0,\n },\n}));\n\nfunction ChildView({\n path,\n depth,\n schema,\n required,\n lastChild,\n}: {\n path: string;\n depth: number;\n schema?: Schema;\n required?: boolean;\n lastChild?: boolean;\n}) {\n const classes = useChildViewStyles();\n const titleRef = useRef<HTMLElement>(null);\n const scroll = useScrollTargets();\n\n useEffect(() => {\n return scroll?.setScrollListener(path, () => {\n titleRef.current?.scrollIntoView({ behavior: 'smooth' });\n });\n }, [scroll, path]);\n\n const chips = new Array<JSX.Element>();\n const chipProps = { size: 'small' as const, classes: { root: classes.chip } };\n\n if (required) {\n chips.push(\n <Chip label=\"required\" color=\"default\" key=\"required\" {...chipProps} />,\n );\n }\n\n const visibility = (schema as { visibility?: string })?.visibility;\n if (visibility === 'frontend') {\n chips.push(\n <Chip label=\"frontend\" color=\"primary\" key=\"visibility\" {...chipProps} />,\n );\n } else if (visibility === 'secret') {\n chips.push(\n <Chip label=\"secret\" color=\"secondary\" key=\"visibility\" {...chipProps} />,\n );\n }\n\n return (\n <Box paddingBottom={lastChild ? 4 : 8} display=\"flex\" flexDirection=\"row\">\n <Divider orientation=\"vertical\" flexItem />\n <Box paddingLeft={2} flex={1}>\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n marginBottom={2}\n alignItems=\"center\"\n >\n <Typography\n ref={titleRef}\n variant={titleVariant(depth)}\n classes={{ root: classes.title }}\n >\n {path}\n </Typography>\n {chips.length > 0 && <Box marginLeft={1} />}\n {chips}\n </Box>\n {schema && (\n <SchemaView path={path} depth={depth} schema={schema as Schema} />\n )}\n </Box>\n </Box>\n );\n}\n\nfunction MatchView({\n path,\n depth,\n schema,\n label,\n}: {\n path: string;\n depth: number;\n schema: Schema[];\n label: string;\n}) {\n return (\n <>\n <Typography variant=\"overline\">{label}</Typography>\n {schema.map((optionSchema, index) => (\n <ChildView\n key={index}\n path={`${path}/${index + 1}`}\n depth={depth + 1}\n schema={optionSchema}\n lastChild={index === schema.length - 1}\n />\n ))}\n </>\n );\n}\n\nfunction ScalarView({ schema }: SchemaViewProps) {\n return (\n <>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </>\n );\n}\n\ninterface MetadataViewRowProps {\n label: string;\n text?: string;\n data?: JsonValue;\n}\n\nfunction MetadataViewRow({ label, text, data }: MetadataViewRowProps) {\n if (text === undefined && data === undefined) {\n return null;\n }\n return (\n <TableRow>\n <TableCell style={{ width: 160 }}>\n <Typography variant=\"body1\" noWrap style={{ fontWeight: 900 }}>\n {label}\n </Typography>\n </TableCell>\n <TableCell>\n <Typography variant=\"body1\">\n {data ? JSON.stringify(data) : text}\n </Typography>\n </TableCell>\n </TableRow>\n );\n}\n\nfunction MetadataView({ schema }: { schema: Schema }) {\n return (\n <Paper variant=\"outlined\" square style={{ width: '100%' }}>\n <Table size=\"small\">\n <TableBody>\n <MetadataViewRow label=\"Type\" data={schema.type} />\n <MetadataViewRow label=\"Allowed values\" data={schema.enum} />\n {schema.additionalProperties === true && (\n <MetadataViewRow label=\"Additional Properties\" text=\"true\" />\n )}\n {schema.additionalItems === true && (\n <MetadataViewRow label=\"Additional Items\" text=\"true\" />\n )}\n <MetadataViewRow label=\"Format\" text={schema.format} />\n <MetadataViewRow\n label=\"Pattern\"\n text={schema.pattern && String(schema.pattern)}\n />\n <MetadataViewRow label=\"Minimum\" data={schema.minimum} />\n <MetadataViewRow label=\"Maximum\" data={schema.maximum} />\n <MetadataViewRow\n label=\"Exclusive minimum\"\n data={schema.exclusiveMinimum}\n />\n <MetadataViewRow\n label=\"Exclusive maximum\"\n data={schema.exclusiveMaximum}\n />\n <MetadataViewRow label=\"Multiple of\" data={schema.multipleOf} />\n <MetadataViewRow\n label=\"Maximum number of items\"\n data={schema.maxItems}\n />\n <MetadataViewRow\n label=\"Minimum number of items\"\n data={schema.minItems}\n />\n <MetadataViewRow\n label=\"Maximum number of properties\"\n data={schema.maxProperties}\n />\n <MetadataViewRow\n label=\"Minimum number of properties\"\n data={schema.minProperties}\n />\n <MetadataViewRow label=\"Maximum Length\" data={schema.maxLength} />\n <MetadataViewRow label=\"Minimum Length\" data={schema.minLength} />\n <MetadataViewRow\n label=\"Items must be unique\"\n data={schema.uniqueItems}\n />\n </TableBody>\n </Table>\n </Paper>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAgCO,SAAS,WAAW,KAAwB,EAAA;AACjD,EAAM,MAAA,EAAE,QAAW,GAAA,KAAA;AACnB,EAAA,IAAI,OAAO,KAAO,EAAA;AAChB,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,QAAQ,MAAO,CAAA,KAAA;AAAA,QACf,KAAM,EAAA;AAAA;AAAA,KACR;AAAA;AAGJ,EAAA,IAAI,OAAO,KAAO,EAAA;AAChB,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,QAAQ,MAAO,CAAA,KAAA;AAAA,QACf,KAAM,EAAA;AAAA;AAAA,KACR;AAAA;AAGJ,EAAA,IAAI,OAAO,KAAO,EAAA;AAChB,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,QAAQ,MAAO,CAAA,KAAA;AAAA,QACf,KAAM,EAAA;AAAA;AAAA,KACR;AAAA;AAGJ,EAAA,QAAQ,OAAO,IAAM;AAAA,IACnB,KAAK,OAAA;AACH,MAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,SAAW,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA;AAAA,IAC/B,KAAK,QAAA;AAAA,IACL,KAAK,KAAA,CAAA;AACH,MAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,UAAY,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA;AAAA,IAChC;AACE,MAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,UAAY,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA;AAAA;AAEpC;AAEA,SAAS,SAAU,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,QAA2B,EAAA;AAC3D,EAAA,MAAM,YAAY,KAAQ,GAAA,CAAA;AAC1B,EAAA,MAAM,QAAW,GAAA,IAAA,GAAO,CAAG,EAAA,IAAI,CAAO,EAAA,CAAA,GAAA,IAAA;AACtC,EAAA,MAAM,aAAa,MAAO,CAAA,KAAA;AAE1B,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,YAAA,EAAc,CAChB,EAAA,EAAA,MAAA,CAAO,WACN,oBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,YAAA,EAAc,CACjB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAS,EAAA,EAAA,MAAA,CAAO,WAAY,CAClD,CAEF,kBAAA,KAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,MAAA,EAAgB,CAChC,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,UAAA,EAAA,EAAW,OAAK,CACpC,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAS,EAAA,IAAA;AAAA,MACT,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA,SAAA;AAAA,MACP,MAAQ,EAAA;AAAA;AAAA,GAET,EAAA,MAAA,CAAO,eAAmB,IAAA,MAAA,CAAO,eAAoB,KAAA,IAAA,oBAElD,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,UAAW,EAAA,EAAA,kBAAgB,CAC/C,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA,SAAA;AAAA,MACP,QAAQ,MAAO,CAAA,eAAA;AAAA,MACf,SAAS,EAAA;AAAA;AAAA,GAEb,CAEJ,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,MAAc,QAA+B,EAAA;AAC/D,EAAA,IAAI,aAAa,IAAM,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AAET,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAQ,CAAG,EAAA;AAC3B,IAAO,OAAA,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA;AAE/B,EAAO,OAAA,KAAA;AACT;AAEA,SAAS,UAAW,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,QAA2B,EAAA;AAC5D,EAAA,MAAM,aAAa,MAAO,CAAA,OAAA,CAAQ,MAAO,CAAA,UAAA,IAAc,EAAE,CAAA;AACzD,EAAA,MAAM,oBAAoB,MAAO,CAAA,OAAA,CAAQ,MAAO,CAAA,iBAAA,IAAqB,EAAE,CAAA;AAEvE,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,QAAQ,CACP,oBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,YAAc,EAAA,CAAA,EAAA,EAChB,OAAO,WACN,oBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,YAAc,EAAA,CAAA,EAAA,sCAChB,UAAW,EAAA,EAAA,OAAA,EAAQ,WAAS,MAAO,CAAA,WAAY,CAClD,CAEF,kBAAA,KAAA,CAAA,aAAA,CAAC,gBAAa,MAAgB,EAAA,CAChC,GAED,UAAW,CAAA,MAAA,GAAS,qBAEhB,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAA,KAAA,GAAQ,qBAAM,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,UAAW,EAAA,EAAA,YAAU,GACtD,UAAW,CAAA,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,UAAU,CAAA,EAAG,KACnC,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,IAAA;AAAA,MACL,MAAM,IAAO,GAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAK,CAAA,GAAA,IAAA;AAAA,MACjC,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,MAAQ,EAAA,UAAA;AAAA,MACR,SAAA,EAAW,KAAU,KAAA,UAAA,CAAW,MAAS,GAAA,CAAA;AAAA,MACzC,QAAU,EAAA,UAAA,CAAW,IAAM,EAAA,MAAA,CAAO,QAAQ;AAAA;AAAA,GAE7C,CACH,CAED,EAAA,iBAAA,CAAkB,SAAS,CAC1B,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,KAAQ,GAAA,CAAA,oBACN,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,UAAW,EAAA,EAAA,oBAAkB,GAElD,iBAAkB,CAAA,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,UAAU,CAAA,EAAG,KAC1C,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,IAAA;AAAA,MACL,MAAM,IAAO,GAAA,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAM,CAAA,CAAA,GAAA,IAAA;AAAA,MACnC,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,MAAQ,EAAA,UAAA;AAAA,MACR,SAAA,EAAW,KAAU,KAAA,iBAAA,CAAkB,MAAS,GAAA,CAAA;AAAA,MAChD,QAAU,EAAA,UAAA,CAAW,IAAM,EAAA,MAAA,CAAO,QAAQ;AAAA;AAAA,GAE7C,CACH,CAED,EAAA,MAAA,CAAO,wBAAwB,MAAO,CAAA,oBAAA,KAAyB,IAC9D,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACG,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,UAAA,EAAA,EAAW,uBAAqB,CACpD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,MACb,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,QAAQ,MAAO,CAAA,oBAAA;AAAA,MACf,SAAS,EAAA;AAAA;AAAA,GAEb,CAEJ,CAAA;AAEJ;AAQA,SAAS,aAAa,KAAe,EAAA;AACnC,EAAA,IAAI,SAAS,CAAG,EAAA;AACd,IAAO,OAAA,IAAA;AAAA,GACT,MAAA,IAAW,UAAU,CAAG,EAAA;AACtB,IAAO,OAAA,IAAA;AAAA,GACT,MAAA,IAAW,UAAU,CAAG,EAAA;AACtB,IAAO,OAAA,IAAA;AAAA,GACT,MAAA,IAAW,UAAU,CAAG,EAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AAET,EAAO,OAAA,IAAA;AACT;AAEA,MAAM,kBAAA,GAAqB,WAAW,CAAU,KAAA,MAAA;AAAA,EAC9C,KAAO,EAAA;AAAA,IACL,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC3B,WAAa,EAAA,CAAA;AAAA,IACb,YAAc,EAAA;AAAA;AAElB,CAAE,CAAA,CAAA;AAEF,SAAS,SAAU,CAAA;AAAA,EACjB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAMG,EAAA;AACD,EAAA,MAAM,UAAU,kBAAmB,EAAA;AACnC,EAAM,MAAA,QAAA,GAAW,OAAoB,IAAI,CAAA;AACzC,EAAA,MAAM,SAAS,gBAAiB,EAAA;AAEhC,EAAA,SAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAA,EAAQ,iBAAkB,CAAA,IAAA,EAAM,MAAM;AAC3C,MAAA,QAAA,CAAS,OAAS,EAAA,cAAA,CAAe,EAAE,QAAA,EAAU,UAAU,CAAA;AAAA,KACxD,CAAA;AAAA,GACA,EAAA,CAAC,MAAQ,EAAA,IAAI,CAAC,CAAA;AAEjB,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAmB,EAAA;AACrC,EAAM,MAAA,SAAA,GAAY,EAAE,IAAM,EAAA,OAAA,EAAkB,SAAS,EAAE,IAAA,EAAM,OAAQ,CAAA,IAAA,EAAO,EAAA;AAE5E,EAAA,IAAI,QAAU,EAAA;AACZ,IAAM,KAAA,CAAA,IAAA;AAAA,sBACJ,KAAA,CAAA,aAAA,CAAC,QAAK,KAAM,EAAA,UAAA,EAAW,OAAM,SAAU,EAAA,GAAA,EAAI,UAAY,EAAA,GAAG,SAAW,EAAA;AAAA,KACvE;AAAA;AAGF,EAAA,MAAM,aAAc,MAAoC,EAAA,UAAA;AACxD,EAAA,IAAI,eAAe,UAAY,EAAA;AAC7B,IAAM,KAAA,CAAA,IAAA;AAAA,sBACJ,KAAA,CAAA,aAAA,CAAC,QAAK,KAAM,EAAA,UAAA,EAAW,OAAM,SAAU,EAAA,GAAA,EAAI,YAAc,EAAA,GAAG,SAAW,EAAA;AAAA,KACzE;AAAA,GACF,MAAA,IAAW,eAAe,QAAU,EAAA;AAClC,IAAM,KAAA,CAAA,IAAA;AAAA,sBACJ,KAAA,CAAA,aAAA,CAAC,QAAK,KAAM,EAAA,QAAA,EAAS,OAAM,WAAY,EAAA,GAAA,EAAI,YAAc,EAAA,GAAG,SAAW,EAAA;AAAA,KACzE;AAAA;AAGF,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,aAAe,EAAA,SAAA,GAAY,IAAI,CAAG,EAAA,OAAA,EAAQ,MAAO,EAAA,aAAA,EAAc,KAClE,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAQ,WAAY,EAAA,UAAA,EAAW,UAAQ,IAAC,EAAA,CAAA,sCACxC,GAAI,EAAA,EAAA,WAAA,EAAa,CAAG,EAAA,IAAA,EAAM,CACzB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,MAAA;AAAA,MACR,aAAc,EAAA,KAAA;AAAA,MACd,YAAc,EAAA,CAAA;AAAA,MACd,UAAW,EAAA;AAAA,KAAA;AAAA,oBAEX,KAAA,CAAA,aAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,QAAA;AAAA,QACL,OAAA,EAAS,aAAa,KAAK,CAAA;AAAA,QAC3B,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,KAAM;AAAA,OAAA;AAAA,MAE9B;AAAA,KACH;AAAA,IACC,MAAM,MAAS,GAAA,CAAA,oBAAM,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,YAAY,CAAG,EAAA,CAAA;AAAA,IACxC;AAAA,GACH,EACC,0BACE,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,MAAY,KAAc,EAAA,MAAA,EAA0B,CAEpE,CACF,CAAA;AAEJ;AAEA,SAAS,SAAU,CAAA;AAAA,EACjB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAKG,EAAA;AACD,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACG,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,UAAA,EAAA,EAAY,KAAM,CAAA,EACrC,MAAO,CAAA,GAAA,CAAI,CAAC,YAAA,EAAc,KACzB,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,KAAA;AAAA,MACL,IAAM,EAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAC,CAAA,CAAA;AAAA,MAC1B,OAAO,KAAQ,GAAA,CAAA;AAAA,MACf,MAAQ,EAAA,YAAA;AAAA,MACR,SAAA,EAAW,KAAU,KAAA,MAAA,CAAO,MAAS,GAAA;AAAA;AAAA,GAExC,CACH,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,MAAA,EAA2B,EAAA;AAC/C,EAAA,iEAEK,MAAO,CAAA,WAAA,wCACL,GAAI,EAAA,EAAA,YAAA,EAAc,qBAChB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAA,EAAS,OAAO,WAAY,CAClD,mBAED,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,QAAgB,CAChC,CAAA;AAEJ;AAQA,SAAS,eAAgB,CAAA,EAAE,KAAO,EAAA,IAAA,EAAM,MAA8B,EAAA;AACpE,EAAI,IAAA,IAAA,KAAS,KAAa,CAAA,IAAA,IAAA,KAAS,KAAW,CAAA,EAAA;AAC5C,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,2CACG,QACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,KAAA,EAAO,EAAE,KAAO,EAAA,GAAA,EACzB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,OAAA,EAAQ,MAAM,EAAA,IAAA,EAAC,OAAO,EAAE,UAAA,EAAY,GAAI,EAAA,EAAA,EACzD,KACH,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,IAAA,sCACE,UAAW,EAAA,EAAA,OAAA,EAAQ,OACjB,EAAA,EAAA,IAAA,GAAO,KAAK,SAAU,CAAA,IAAI,CAAI,GAAA,IACjC,CACF,CACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,MAAA,EAA8B,EAAA;AACpD,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,OAAQ,EAAA,UAAA,EAAW,MAAM,EAAA,IAAA,EAAC,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAC/C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAM,EAAA,EAAA,IAAA,EAAK,OACV,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,KAAA,EAAM,MAAO,EAAA,IAAA,EAAM,MAAO,CAAA,IAAA,EAAM,CACjD,kBAAA,KAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,KAAA,EAAM,gBAAiB,EAAA,IAAA,EAAM,MAAO,CAAA,IAAA,EAAM,CAC1D,EAAA,MAAA,CAAO,oBAAyB,KAAA,IAAA,oBAC9B,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,KAAM,EAAA,uBAAA,EAAwB,IAAK,EAAA,MAAA,EAAO,CAE5D,EAAA,MAAA,CAAO,eAAoB,KAAA,IAAA,oBACzB,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,KAAM,EAAA,kBAAA,EAAmB,IAAK,EAAA,MAAA,EAAO,CAExD,kBAAA,KAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,KAAA,EAAM,QAAS,EAAA,IAAA,EAAM,MAAO,CAAA,MAAA,EAAQ,CACrD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,MAAA,CAAO,OAAW,IAAA,MAAA,CAAO,OAAO,OAAO;AAAA;AAAA,qBAE9C,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,KAAM,EAAA,SAAA,EAAU,MAAM,MAAO,CAAA,OAAA,EAAS,CACvD,kBAAA,KAAA,CAAA,aAAA,CAAC,mBAAgB,KAAM,EAAA,SAAA,EAAU,IAAM,EAAA,MAAA,CAAO,SAAS,CACvD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,mBAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GAEf,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,mBAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GACf,sCACC,eAAgB,EAAA,EAAA,KAAA,EAAM,eAAc,IAAM,EAAA,MAAA,CAAO,YAAY,CAC9D,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,yBAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GAEf,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,yBAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GAEf,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,8BAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GAEf,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,8BAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,qBAEd,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,KAAM,EAAA,gBAAA,EAAiB,MAAM,MAAO,CAAA,SAAA,EAAW,CAChE,kBAAA,KAAA,CAAA,aAAA,CAAC,mBAAgB,KAAM,EAAA,gBAAA,EAAiB,IAAM,EAAA,MAAA,CAAO,WAAW,CAChE,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,sBAAA;AAAA,MACN,MAAM,MAAO,CAAA;AAAA;AAAA,GAEjB,CACF,CACF,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"SchemaView.esm.js","sources":["../../../src/components/SchemaView/SchemaView.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { JsonValue } from '@backstage/types';\nimport Box from '@material-ui/core/Box';\nimport Chip from '@material-ui/core/Chip';\nimport Divider from '@material-ui/core/Divider';\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 TableRow from '@material-ui/core/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Schema } from 'jsonschema';\nimport { useEffect, useRef } from 'react';\nimport { useScrollTargets } from '../ScrollTargetsContext/ScrollTargetsContext';\nimport { SchemaViewProps } from './types';\n\nexport function SchemaView(props: SchemaViewProps) {\n const { schema } = props;\n if (schema.anyOf) {\n return (\n <MatchView\n {...props}\n schema={schema.anyOf}\n label=\"Any of the following\"\n />\n );\n }\n if (schema.oneOf) {\n return (\n <MatchView\n {...props}\n schema={schema.oneOf}\n label=\"One of the following\"\n />\n );\n }\n if (schema.allOf) {\n return (\n <MatchView\n {...props}\n schema={schema.allOf}\n label=\"All of the following\"\n />\n );\n }\n switch (schema.type) {\n case 'array':\n return <ArrayView {...props} />;\n case 'object':\n case undefined:\n return <ObjectView {...props} />;\n default:\n return <ScalarView {...props} />;\n }\n}\n\nfunction ArrayView({ path, depth, schema }: SchemaViewProps) {\n const itemDepth = depth + 1;\n const itemPath = path ? `${path}[]` : '[]';\n const itemSchema = schema.items;\n\n return (\n <>\n <Box marginBottom={4}>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </Box>\n <Typography variant=\"overline\">Items</Typography>\n <ChildView\n lastChild\n path={itemPath}\n depth={itemDepth}\n schema={itemSchema as Schema | undefined}\n />\n {schema.additionalItems && schema.additionalItems !== true && (\n <>\n <Typography variant=\"overline\">Additional Items</Typography>\n <ChildView\n path={itemPath}\n depth={itemDepth}\n schema={schema.additionalItems}\n lastChild\n />\n </>\n )}\n </>\n );\n}\n\nfunction isRequired(name: string, required?: boolean | string[]) {\n if (required === true) {\n return true;\n }\n if (Array.isArray(required)) {\n return required.includes(name);\n }\n return false;\n}\n\nfunction ObjectView({ path, depth, schema }: SchemaViewProps) {\n const properties = Object.entries(schema.properties ?? {});\n const patternProperties = Object.entries(schema.patternProperties ?? {});\n\n return (\n <>\n {depth > 0 && (\n <Box marginBottom={4}>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </Box>\n )}\n {properties.length > 0 && (\n <>\n {depth > 0 && <Typography variant=\"overline\">Properties</Typography>}\n {properties.map(([name, propSchema], index) => (\n <ChildView\n key={name}\n path={path ? `${path}.${name}` : name}\n depth={depth + 1}\n schema={propSchema}\n lastChild={index === properties.length - 1}\n required={isRequired(name, schema.required)}\n />\n ))}\n </>\n )}\n {patternProperties.length > 0 && (\n <>\n {depth > 0 && (\n <Typography variant=\"overline\">Pattern Properties</Typography>\n )}\n {patternProperties.map(([name, propSchema], index) => (\n <ChildView\n key={name}\n path={path ? `${path}.<${name}>` : name}\n depth={depth + 1}\n schema={propSchema}\n lastChild={index === patternProperties.length - 1}\n required={isRequired(name, schema.required)}\n />\n ))}\n </>\n )}\n {schema.additionalProperties && schema.additionalProperties !== true && (\n <>\n <Typography variant=\"overline\">Additional Properties</Typography>\n <ChildView\n path={`${path}.*`}\n depth={depth + 1}\n schema={schema.additionalProperties}\n lastChild\n />\n </>\n )}\n </>\n );\n}\n\ninterface MetadataViewRowProps {\n label: string;\n text?: string;\n data?: JsonValue;\n}\n\nfunction titleVariant(depth: number) {\n if (depth <= 1) {\n return 'h2';\n } else if (depth === 2) {\n return 'h3';\n } else if (depth === 3) {\n return 'h4';\n } else if (depth === 4) {\n return 'h5';\n }\n return 'h6';\n}\n\nconst useChildViewStyles = makeStyles(theme => ({\n title: {\n marginBottom: 0,\n },\n chip: {\n marginLeft: theme.spacing(1),\n marginRight: 0,\n marginBottom: 0,\n },\n}));\n\nfunction ChildView({\n path,\n depth,\n schema,\n required,\n lastChild,\n}: {\n path: string;\n depth: number;\n schema?: Schema;\n required?: boolean;\n lastChild?: boolean;\n}) {\n const classes = useChildViewStyles();\n const titleRef = useRef<HTMLElement>(null);\n const scroll = useScrollTargets();\n\n useEffect(() => {\n return scroll?.setScrollListener(path, () => {\n titleRef.current?.scrollIntoView({ behavior: 'smooth' });\n });\n }, [scroll, path]);\n\n const chips = new Array<JSX.Element>();\n const chipProps = { size: 'small' as const, classes: { root: classes.chip } };\n\n if (required) {\n chips.push(\n <Chip label=\"required\" color=\"default\" key=\"required\" {...chipProps} />,\n );\n }\n\n const visibility = (schema as { visibility?: string })?.visibility;\n if (visibility === 'frontend') {\n chips.push(\n <Chip label=\"frontend\" color=\"primary\" key=\"visibility\" {...chipProps} />,\n );\n } else if (visibility === 'secret') {\n chips.push(\n <Chip label=\"secret\" color=\"secondary\" key=\"visibility\" {...chipProps} />,\n );\n }\n\n return (\n <Box paddingBottom={lastChild ? 4 : 8} display=\"flex\" flexDirection=\"row\">\n <Divider orientation=\"vertical\" flexItem />\n <Box paddingLeft={2} flex={1}>\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n marginBottom={2}\n alignItems=\"center\"\n >\n <Typography\n ref={titleRef}\n variant={titleVariant(depth)}\n classes={{ root: classes.title }}\n >\n {path}\n </Typography>\n {chips.length > 0 && <Box marginLeft={1} />}\n {chips}\n </Box>\n {schema && (\n <SchemaView path={path} depth={depth} schema={schema as Schema} />\n )}\n </Box>\n </Box>\n );\n}\n\nfunction MatchView({\n path,\n depth,\n schema,\n label,\n}: {\n path: string;\n depth: number;\n schema: Schema[];\n label: string;\n}) {\n return (\n <>\n <Typography variant=\"overline\">{label}</Typography>\n {schema.map((optionSchema, index) => (\n <ChildView\n key={index}\n path={`${path}/${index + 1}`}\n depth={depth + 1}\n schema={optionSchema}\n lastChild={index === schema.length - 1}\n />\n ))}\n </>\n );\n}\n\nfunction ScalarView({ schema }: SchemaViewProps) {\n return (\n <>\n {schema.description && (\n <Box marginBottom={4}>\n <Typography variant=\"body1\">{schema.description}</Typography>\n </Box>\n )}\n <MetadataView schema={schema} />\n </>\n );\n}\n\ninterface MetadataViewRowProps {\n label: string;\n text?: string;\n data?: JsonValue;\n}\n\nfunction MetadataViewRow({ label, text, data }: MetadataViewRowProps) {\n if (text === undefined && data === undefined) {\n return null;\n }\n return (\n <TableRow>\n <TableCell style={{ width: 160 }}>\n <Typography variant=\"body1\" noWrap style={{ fontWeight: 900 }}>\n {label}\n </Typography>\n </TableCell>\n <TableCell>\n <Typography variant=\"body1\">\n {data ? JSON.stringify(data) : text}\n </Typography>\n </TableCell>\n </TableRow>\n );\n}\n\nfunction MetadataView({ schema }: { schema: Schema }) {\n return (\n <Paper variant=\"outlined\" square style={{ width: '100%' }}>\n <Table size=\"small\">\n <TableBody>\n <MetadataViewRow label=\"Type\" data={schema.type} />\n <MetadataViewRow label=\"Allowed values\" data={schema.enum} />\n {schema.additionalProperties === true && (\n <MetadataViewRow label=\"Additional Properties\" text=\"true\" />\n )}\n {schema.additionalItems === true && (\n <MetadataViewRow label=\"Additional Items\" text=\"true\" />\n )}\n <MetadataViewRow label=\"Format\" text={schema.format} />\n <MetadataViewRow\n label=\"Pattern\"\n text={schema.pattern && String(schema.pattern)}\n />\n <MetadataViewRow label=\"Minimum\" data={schema.minimum} />\n <MetadataViewRow label=\"Maximum\" data={schema.maximum} />\n <MetadataViewRow\n label=\"Exclusive minimum\"\n data={schema.exclusiveMinimum}\n />\n <MetadataViewRow\n label=\"Exclusive maximum\"\n data={schema.exclusiveMaximum}\n />\n <MetadataViewRow label=\"Multiple of\" data={schema.multipleOf} />\n <MetadataViewRow\n label=\"Maximum number of items\"\n data={schema.maxItems}\n />\n <MetadataViewRow\n label=\"Minimum number of items\"\n data={schema.minItems}\n />\n <MetadataViewRow\n label=\"Maximum number of properties\"\n data={schema.maxProperties}\n />\n <MetadataViewRow\n label=\"Minimum number of properties\"\n data={schema.minProperties}\n />\n <MetadataViewRow label=\"Maximum Length\" data={schema.maxLength} />\n <MetadataViewRow label=\"Minimum Length\" data={schema.minLength} />\n <MetadataViewRow\n label=\"Items must be unique\"\n data={schema.uniqueItems}\n />\n </TableBody>\n </Table>\n </Paper>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
1
2
|
import Box from '@material-ui/core/Box';
|
|
2
3
|
import Paper from '@material-ui/core/Paper';
|
|
3
|
-
import React from 'react';
|
|
4
4
|
import { SchemaView } from '../SchemaView/SchemaView.esm.js';
|
|
5
5
|
import { SchemaBrowser } from '../SchemaBrowser/SchemaBrowser.esm.js';
|
|
6
6
|
import { ScrollTargetsProvider } from '../ScrollTargetsContext/ScrollTargetsContext.esm.js';
|
|
7
7
|
|
|
8
8
|
const SchemaViewer = ({ schema }) => {
|
|
9
|
-
return /* @__PURE__ */
|
|
9
|
+
return /* @__PURE__ */ jsx(Box, { flex: "1", position: "relative", children: /* @__PURE__ */ jsx(
|
|
10
10
|
Box,
|
|
11
11
|
{
|
|
12
12
|
clone: true,
|
|
@@ -14,10 +14,13 @@ const SchemaViewer = ({ schema }) => {
|
|
|
14
14
|
display: "flex",
|
|
15
15
|
flexDirection: "row",
|
|
16
16
|
flexWrap: "nowrap",
|
|
17
|
-
maxHeight: "100%"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
maxHeight: "100%",
|
|
18
|
+
children: /* @__PURE__ */ jsx(Paper, { elevation: 3, children: /* @__PURE__ */ jsxs(ScrollTargetsProvider, { children: [
|
|
19
|
+
/* @__PURE__ */ jsx(Box, { padding: 1, overflow: "auto", width: 300, children: /* @__PURE__ */ jsx(SchemaBrowser, { schema }) }),
|
|
20
|
+
/* @__PURE__ */ jsx(Box, { flex: "1", overflow: "auto", children: /* @__PURE__ */ jsx(SchemaView, { schema, path: "", depth: 0 }) })
|
|
21
|
+
] }) })
|
|
22
|
+
}
|
|
23
|
+
) });
|
|
21
24
|
};
|
|
22
25
|
|
|
23
26
|
export { SchemaViewer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaViewer.esm.js","sources":["../../../src/components/SchemaViewer/SchemaViewer.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport { Schema } from 'jsonschema';\nimport
|
|
1
|
+
{"version":3,"file":"SchemaViewer.esm.js","sources":["../../../src/components/SchemaViewer/SchemaViewer.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport { Schema } from 'jsonschema';\nimport { SchemaView } from '../SchemaView';\nimport { SchemaBrowser } from '../SchemaBrowser';\nimport { ScrollTargetsProvider } from '../ScrollTargetsContext/ScrollTargetsContext';\n\nexport interface SchemaViewerProps {\n schema: Schema;\n}\n\nexport const SchemaViewer = ({ schema }: SchemaViewerProps) => {\n return (\n <Box flex=\"1\" position=\"relative\">\n <Box\n clone\n position=\"absolute\"\n display=\"flex\"\n flexDirection=\"row\"\n flexWrap=\"nowrap\"\n maxHeight=\"100%\"\n >\n <Paper elevation={3}>\n <ScrollTargetsProvider>\n <Box padding={1} overflow=\"auto\" width={300}>\n <SchemaBrowser schema={schema} />\n </Box>\n\n <Box flex=\"1\" overflow=\"auto\">\n <SchemaView schema={schema} path=\"\" depth={0} />\n </Box>\n </ScrollTargetsProvider>\n </Paper>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA2BO,MAAM,YAAe,GAAA,CAAC,EAAE,MAAA,EAAgC,KAAA;AAC7D,EAAA,uBACG,GAAA,CAAA,GAAA,EAAA,EAAI,IAAK,EAAA,GAAA,EAAI,UAAS,UACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,KAAK,EAAA,IAAA;AAAA,MACL,QAAS,EAAA,UAAA;AAAA,MACT,OAAQ,EAAA,MAAA;AAAA,MACR,aAAc,EAAA,KAAA;AAAA,MACd,QAAS,EAAA,QAAA;AAAA,MACT,SAAU,EAAA,MAAA;AAAA,MAEV,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAM,SAAW,EAAA,CAAA,EAChB,+BAAC,qBACC,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAI,OAAS,EAAA,CAAA,EAAG,QAAS,EAAA,MAAA,EAAO,OAAO,GACtC,EAAA,QAAA,kBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,MAAA,EAAgB,CACjC,EAAA,CAAA;AAAA,wBAEC,GAAA,CAAA,GAAA,EAAA,EAAI,IAAK,EAAA,GAAA,EAAI,QAAS,EAAA,MAAA,EACrB,QAAC,kBAAA,GAAA,CAAA,UAAA,EAAA,EAAW,MAAgB,EAAA,IAAA,EAAK,EAAG,EAAA,KAAA,EAAO,GAAG,CAChD,EAAA;AAAA,OAAA,EACF,CACF,EAAA;AAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
2
3
|
|
|
3
4
|
class ScrollTargetsForwarder {
|
|
4
5
|
listeners = /* @__PURE__ */ new Map();
|
|
@@ -18,7 +19,7 @@ const ScrollTargetsContext = createContext(
|
|
|
18
19
|
void 0
|
|
19
20
|
);
|
|
20
21
|
function ScrollTargetsProvider({ children }) {
|
|
21
|
-
return /* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
22
23
|
ScrollTargetsContext.Provider,
|
|
23
24
|
{
|
|
24
25
|
value: new ScrollTargetsForwarder(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollTargetsContext.esm.js","sources":["../../../src/components/ScrollTargetsContext/ScrollTargetsContext.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport
|
|
1
|
+
{"version":3,"file":"ScrollTargetsContext.esm.js","sources":["../../../src/components/ScrollTargetsContext/ScrollTargetsContext.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { createContext, ReactNode, useContext } from 'react';\n\nclass ScrollTargetsForwarder {\n private readonly listeners = new Map<string, () => void>();\n\n setScrollListener(id: string, listener: () => void): () => void {\n this.listeners.set(id, listener);\n\n return () => {\n if (this.listeners.get(id) === listener) {\n this.listeners.delete(id);\n }\n };\n }\n\n scrollTo(id: string) {\n this.listeners.get(id)?.();\n }\n}\n\nconst ScrollTargetsContext = createContext<ScrollTargetsForwarder | undefined>(\n undefined,\n);\n\nexport function ScrollTargetsProvider({ children }: { children: ReactNode }) {\n return (\n <ScrollTargetsContext.Provider\n value={new ScrollTargetsForwarder()}\n children={children}\n />\n );\n}\n\nexport function useScrollTargets() {\n return useContext(ScrollTargetsContext);\n}\n"],"names":[],"mappings":";;;AAkBA,MAAM,sBAAuB,CAAA;AAAA,EACV,SAAA,uBAAgB,GAAwB,EAAA;AAAA,EAEzD,iBAAA,CAAkB,IAAY,QAAkC,EAAA;AAC9D,IAAK,IAAA,CAAA,SAAA,CAAU,GAAI,CAAA,EAAA,EAAI,QAAQ,CAAA;AAE/B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,IAAK,CAAA,SAAA,CAAU,GAAI,CAAA,EAAE,MAAM,QAAU,EAAA;AACvC,QAAK,IAAA,CAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AAAA;AAC1B,KACF;AAAA;AACF,EAEA,SAAS,EAAY,EAAA;AACnB,IAAK,IAAA,CAAA,SAAA,CAAU,GAAI,CAAA,EAAE,CAAI,IAAA;AAAA;AAE7B;AAEA,MAAM,oBAAuB,GAAA,aAAA;AAAA,EAC3B,KAAA;AACF,CAAA;AAEgB,SAAA,qBAAA,CAAsB,EAAE,QAAA,EAAqC,EAAA;AAC3E,EACE,uBAAA,GAAA;AAAA,IAAC,oBAAqB,CAAA,QAAA;AAAA,IAArB;AAAA,MACC,KAAA,EAAO,IAAI,sBAAuB,EAAA;AAAA,MAClC;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAO,WAAW,oBAAoB,CAAA;AACxC;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
2
2
|
import { Schema } from 'jsonschema';
|
|
3
3
|
import { Observable } from '@backstage/types';
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
/** @public */
|
|
7
7
|
interface ConfigSchemaResult {
|
|
@@ -33,6 +33,6 @@ declare const configSchemaPlugin: _backstage_core_plugin_api.BackstagePlugin<{
|
|
|
33
33
|
root: _backstage_core_plugin_api.RouteRef<undefined>;
|
|
34
34
|
}, {}>;
|
|
35
35
|
/** @public */
|
|
36
|
-
declare const ConfigSchemaPage: () =>
|
|
36
|
+
declare const ConfigSchemaPage: () => react_jsx_runtime.JSX.Element;
|
|
37
37
|
|
|
38
38
|
export { type ConfigSchemaApi, ConfigSchemaPage, type ConfigSchemaResult, StaticSchemaLoader, configSchemaApiRef, configSchemaPlugin };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-config-schema",
|
|
3
|
-
"version": "0.1.67
|
|
3
|
+
"version": "0.1.67",
|
|
4
4
|
"description": "A Backstage plugin that lets you browse the configuration schema of your app",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"test": "backstage-cli package test"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@backstage/core-components": "0.17.1
|
|
41
|
-
"@backstage/core-plugin-api": "1.10.
|
|
42
|
-
"@backstage/errors": "1.2.7",
|
|
43
|
-
"@backstage/types": "1.2.1",
|
|
40
|
+
"@backstage/core-components": "^0.17.1",
|
|
41
|
+
"@backstage/core-plugin-api": "^1.10.6",
|
|
42
|
+
"@backstage/errors": "^1.2.7",
|
|
43
|
+
"@backstage/types": "^1.2.1",
|
|
44
44
|
"@material-ui/core": "^4.12.2",
|
|
45
45
|
"@material-ui/icons": "^4.9.1",
|
|
46
46
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"zen-observable": "^0.10.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@backstage/cli": "0.32.0
|
|
53
|
-
"@backstage/dev-utils": "1.1.9
|
|
52
|
+
"@backstage/cli": "^0.32.0",
|
|
53
|
+
"@backstage/dev-utils": "^1.1.9",
|
|
54
54
|
"@testing-library/dom": "^10.0.0",
|
|
55
55
|
"@testing-library/jest-dom": "^6.0.0",
|
|
56
56
|
"@testing-library/react": "^16.0.0",
|
|
@@ -70,5 +70,12 @@
|
|
|
70
70
|
"optional": true
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
|
+
"typesVersions": {
|
|
74
|
+
"*": {
|
|
75
|
+
"package.json": [
|
|
76
|
+
"package.json"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
},
|
|
73
80
|
"module": "./dist/index.esm.js"
|
|
74
81
|
}
|