@tduniec/plugin-template-designer 0.2.2 → 0.2.4

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.
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useMemo } from 'react';
2
+ import { useRef, useMemo, useCallback, useEffect } from 'react';
3
3
  import { Grid, Typography, Button, Paper } from '@material-ui/core';
4
4
  import { useTheme } from '@material-ui/core/styles';
5
5
  import CodeMirror from '@uiw/react-codemirror';
@@ -30,170 +30,222 @@ const TemplateWorkspace = ({
30
30
  }) => {
31
31
  const theme = useTheme();
32
32
  const paletteMode = theme.palette.mode ?? theme.palette.type ?? "light";
33
+ const yamlDraftRef = useRef(templateYaml);
34
+ const templateYamlRef = useRef(templateYaml);
35
+ const debounceRef = useRef(null);
33
36
  const yamlExtensions = useMemo(() => [yaml()], []);
34
37
  const codeMirrorTheme = useMemo(
35
38
  () => paletteMode === "dark" ? "dark" : "light",
36
39
  [paletteMode]
37
40
  );
38
- return /* @__PURE__ */ jsx(Grid, { container: true, spacing: 3, direction: "column", children: /* @__PURE__ */ jsx(Grid, { item: true, style: { height: 800 }, children: /* @__PURE__ */ jsxs(
39
- "div",
41
+ const flushYamlDraft = useCallback(() => {
42
+ if (debounceRef.current) {
43
+ clearTimeout(debounceRef.current);
44
+ debounceRef.current = null;
45
+ }
46
+ if (yamlDraftRef.current !== templateYamlRef.current) {
47
+ onYamlChange(yamlDraftRef.current);
48
+ }
49
+ }, [onYamlChange]);
50
+ const handleYamlChange = useCallback(
51
+ (value) => {
52
+ yamlDraftRef.current = value;
53
+ if (debounceRef.current) {
54
+ clearTimeout(debounceRef.current);
55
+ }
56
+ debounceRef.current = setTimeout(() => {
57
+ if (yamlDraftRef.current !== templateYamlRef.current) {
58
+ onYamlChange(yamlDraftRef.current);
59
+ }
60
+ debounceRef.current = null;
61
+ }, 600);
62
+ },
63
+ [onYamlChange]
64
+ );
65
+ const handleYamlBlur = useCallback(() => {
66
+ flushYamlDraft();
67
+ }, [flushYamlDraft]);
68
+ useEffect(() => {
69
+ yamlDraftRef.current = templateYaml;
70
+ templateYamlRef.current = templateYaml;
71
+ }, [templateYaml]);
72
+ useEffect(
73
+ () => () => {
74
+ if (debounceRef.current) {
75
+ clearTimeout(debounceRef.current);
76
+ }
77
+ },
78
+ []
79
+ );
80
+ return /* @__PURE__ */ jsx(
81
+ Grid,
40
82
  {
41
- style: {
42
- height: "100%",
43
- display: "flex",
44
- flexDirection: "column",
45
- gap: 16
46
- },
47
- children: [
48
- /* @__PURE__ */ jsxs(
49
- "div",
50
- {
51
- style: {
52
- display: "flex",
53
- justifyContent: "space-between",
54
- alignItems: "center",
55
- flexWrap: "wrap",
56
- gap: 12
57
- },
58
- children: [
59
- /* @__PURE__ */ jsxs(
60
- "div",
61
- {
62
- style: {
63
- display: "flex",
64
- alignItems: "center",
65
- gap: 12,
66
- flexWrap: "wrap"
67
- },
68
- children: [
69
- activeTemplateLabel && /* @__PURE__ */ jsxs(Typography, { variant: "body2", color: "textSecondary", children: [
70
- "Active template: ",
71
- activeTemplateLabel
72
- ] }),
73
- /* @__PURE__ */ jsx(
74
- Button,
75
- {
76
- color: "primary",
77
- variant: "contained",
78
- size: "small",
79
- onClick: onReload,
80
- disabled: isReloading,
81
- children: reloadButtonLabel
82
- }
83
- ),
84
- /* @__PURE__ */ jsx(
85
- Button,
86
- {
87
- color: "primary",
88
- variant: "outlined",
89
- size: "small",
90
- onClick: onSave,
91
- disabled: isSaving,
92
- children: saveButtonLabel
93
- }
94
- ),
95
- /* @__PURE__ */ jsx(
96
- Button,
97
- {
98
- color: "primary",
99
- variant: "outlined",
100
- size: "small",
101
- onClick: onOpenTemplatePicker,
102
- children: "Load different file"
103
- }
104
- )
105
- ]
106
- }
107
- ),
108
- /* @__PURE__ */ jsx(Button, { variant: "outlined", size: "small", onClick: onToggleYaml, children: showYaml ? "Hide YAML" : "Show YAML" })
109
- ]
110
- }
111
- ),
112
- loadError && /* @__PURE__ */ jsx(
113
- Typography,
114
- {
115
- variant: "body2",
116
- style: { color: theme.palette.error.main },
117
- children: loadError
118
- }
119
- ),
120
- /* @__PURE__ */ jsxs(
121
- "div",
122
- {
123
- style: {
124
- flex: 1,
125
- display: "flex",
126
- gap: 16,
127
- minHeight: 0
128
- },
129
- children: [
130
- /* @__PURE__ */ jsx("div", { style: { flex: showYaml ? 1.6 : 1, minWidth: 0 }, children: /* @__PURE__ */ jsx("div", { style: { height: "100%" }, children: /* @__PURE__ */ jsx(
131
- App,
132
- {
133
- steps: templateSteps,
134
- parameters: templateParameters,
135
- output: templateOutput,
136
- onStepsChange,
137
- onParametersChange,
138
- onOutputChange
139
- }
140
- ) }) }),
141
- showYaml && /* @__PURE__ */ jsxs(
142
- Paper,
143
- {
144
- elevation: 2,
145
- style: {
146
- flex: 1,
147
- display: "flex",
148
- flexDirection: "column",
149
- minWidth: 0,
150
- overflow: "hidden"
151
- },
152
- children: [
153
- /* @__PURE__ */ jsx(
154
- "div",
155
- {
156
- style: {
157
- padding: "12px 16px",
158
- borderBottom: "1px solid rgba(0,0,0,0.12)",
159
- fontWeight: 600,
160
- fontSize: "0.875rem"
161
- },
162
- children: "YAML Preview"
163
- }
164
- ),
165
- yamlError && /* @__PURE__ */ jsx(
166
- "div",
167
- {
168
- style: {
169
- padding: "8px 16px",
170
- borderBottom: "1px solid rgba(0,0,0,0.08)",
171
- color: theme.palette.error.main,
172
- fontSize: "0.75rem",
173
- background: paletteMode === "dark" ? "rgba(255, 82, 82, 0.1)" : "rgba(244, 67, 54, 0.08)"
174
- },
175
- children: yamlError
176
- }
177
- ),
178
- /* @__PURE__ */ jsx("div", { style: { flex: 1, minHeight: 0, overflow: "auto" }, children: /* @__PURE__ */ jsx(
179
- CodeMirror,
180
- {
181
- value: templateYaml,
182
- extensions: yamlExtensions,
183
- theme: codeMirrorTheme,
184
- height: "100%",
185
- onChange: (value) => onYamlChange(value)
186
- }
187
- ) })
188
- ]
189
- }
190
- )
191
- ]
192
- }
193
- )
194
- ]
83
+ container: true,
84
+ spacing: 3,
85
+ direction: "column",
86
+ style: { height: "calc(100% - 15px)" },
87
+ children: /* @__PURE__ */ jsx(Grid, { item: true, style: { height: "100%" }, children: /* @__PURE__ */ jsxs(
88
+ "div",
89
+ {
90
+ style: {
91
+ height: "100%",
92
+ display: "flex",
93
+ flexDirection: "column",
94
+ gap: 16
95
+ },
96
+ children: [
97
+ /* @__PURE__ */ jsxs(
98
+ "div",
99
+ {
100
+ style: {
101
+ display: "flex",
102
+ justifyContent: "space-between",
103
+ alignItems: "center",
104
+ flexWrap: "wrap",
105
+ gap: 12
106
+ },
107
+ children: [
108
+ /* @__PURE__ */ jsxs(
109
+ "div",
110
+ {
111
+ style: {
112
+ display: "flex",
113
+ alignItems: "center",
114
+ gap: 12,
115
+ flexWrap: "wrap"
116
+ },
117
+ children: [
118
+ activeTemplateLabel && /* @__PURE__ */ jsxs(Typography, { variant: "body2", color: "textSecondary", children: [
119
+ "Active template: ",
120
+ activeTemplateLabel
121
+ ] }),
122
+ /* @__PURE__ */ jsx(
123
+ Button,
124
+ {
125
+ color: "primary",
126
+ variant: "contained",
127
+ size: "small",
128
+ onClick: onReload,
129
+ disabled: isReloading,
130
+ children: reloadButtonLabel
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsx(
134
+ Button,
135
+ {
136
+ color: "primary",
137
+ variant: "outlined",
138
+ size: "small",
139
+ onClick: onSave,
140
+ disabled: isSaving,
141
+ children: saveButtonLabel
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsx(
145
+ Button,
146
+ {
147
+ color: "primary",
148
+ variant: "outlined",
149
+ size: "small",
150
+ onClick: onOpenTemplatePicker,
151
+ children: "Load different file"
152
+ }
153
+ )
154
+ ]
155
+ }
156
+ ),
157
+ /* @__PURE__ */ jsx(Button, { variant: "outlined", size: "small", onClick: onToggleYaml, children: showYaml ? "Hide YAML" : "Show YAML" })
158
+ ]
159
+ }
160
+ ),
161
+ loadError && /* @__PURE__ */ jsx(
162
+ Typography,
163
+ {
164
+ variant: "body2",
165
+ style: { color: theme.palette.error.main },
166
+ children: loadError
167
+ }
168
+ ),
169
+ /* @__PURE__ */ jsxs(
170
+ "div",
171
+ {
172
+ style: {
173
+ flex: 1,
174
+ display: "flex",
175
+ gap: 16,
176
+ minHeight: 0
177
+ },
178
+ children: [
179
+ /* @__PURE__ */ jsx("div", { style: { flex: showYaml ? 1.6 : 1, minWidth: 0 }, children: /* @__PURE__ */ jsx("div", { style: { height: "100%" }, children: /* @__PURE__ */ jsx(
180
+ App,
181
+ {
182
+ steps: templateSteps,
183
+ parameters: templateParameters,
184
+ output: templateOutput,
185
+ onStepsChange,
186
+ onParametersChange,
187
+ onOutputChange
188
+ }
189
+ ) }) }),
190
+ showYaml && /* @__PURE__ */ jsxs(
191
+ Paper,
192
+ {
193
+ elevation: 2,
194
+ style: {
195
+ flex: 1,
196
+ display: "flex",
197
+ flexDirection: "column",
198
+ minWidth: 0,
199
+ overflow: "hidden"
200
+ },
201
+ children: [
202
+ /* @__PURE__ */ jsx(
203
+ "div",
204
+ {
205
+ style: {
206
+ padding: "12px 16px",
207
+ borderBottom: "1px solid rgba(0,0,0,0.12)",
208
+ fontWeight: 600,
209
+ fontSize: "0.875rem"
210
+ },
211
+ children: "YAML Preview"
212
+ }
213
+ ),
214
+ yamlError && /* @__PURE__ */ jsx(
215
+ "div",
216
+ {
217
+ style: {
218
+ padding: "8px 16px",
219
+ borderBottom: "1px solid rgba(0,0,0,0.08)",
220
+ color: theme.palette.error.main,
221
+ fontSize: "0.75rem",
222
+ background: paletteMode === "dark" ? "rgba(255, 82, 82, 0.1)" : "rgba(244, 67, 54, 0.08)"
223
+ },
224
+ children: yamlError
225
+ }
226
+ ),
227
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, minHeight: 0, overflow: "auto" }, children: /* @__PURE__ */ jsx(
228
+ CodeMirror,
229
+ {
230
+ value: templateYaml,
231
+ extensions: yamlExtensions,
232
+ theme: codeMirrorTheme,
233
+ height: "100%",
234
+ onChange: handleYamlChange,
235
+ onBlur: handleYamlBlur
236
+ }
237
+ ) })
238
+ ]
239
+ }
240
+ )
241
+ ]
242
+ }
243
+ )
244
+ ]
245
+ }
246
+ ) })
195
247
  }
196
- ) }) });
248
+ );
197
249
  };
198
250
 
199
251
  export { TemplateWorkspace };
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateWorkspace.esm.js","sources":["../../../../src/components/TemplateDesigner/components/TemplateWorkspace.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Button, Grid, Paper, Typography } from \"@material-ui/core\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport { yaml } from \"@codemirror/lang-yaml\";\nimport type {\n ScaffolderTaskOutput,\n TaskStep,\n} from \"@backstage/plugin-scaffolder-common\";\nimport type { TemplateParametersValue } from \"../../Nodes/types\";\nimport App from \"../../DesignerFlow/DesignerFlow\";\n\ntype TemplateWorkspaceProps = {\n templateSteps: TaskStep[];\n templateParameters: TemplateParametersValue;\n templateOutput?: ScaffolderTaskOutput;\n templateYaml: string;\n yamlError?: string;\n loadError?: string;\n showYaml: boolean;\n onToggleYaml: () => void;\n onYamlChange: (value: string) => void;\n onStepsChange: (steps: TaskStep[]) => void;\n onParametersChange: (parameters: TemplateParametersValue) => void;\n onOutputChange: (output?: ScaffolderTaskOutput) => void;\n onReload: () => void;\n onSave: () => void;\n onOpenTemplatePicker: () => void;\n activeTemplateLabel?: string;\n reloadButtonLabel: string;\n saveButtonLabel: string;\n isReloading: boolean;\n isSaving: boolean;\n};\n\nexport const TemplateWorkspace = ({\n templateSteps,\n templateParameters,\n templateOutput,\n templateYaml,\n yamlError,\n loadError,\n showYaml,\n onToggleYaml,\n onYamlChange,\n onStepsChange,\n onParametersChange,\n onOutputChange,\n onReload,\n onSave,\n onOpenTemplatePicker,\n activeTemplateLabel,\n reloadButtonLabel,\n saveButtonLabel,\n isReloading,\n isSaving,\n}: TemplateWorkspaceProps) => {\n const theme = useTheme();\n const paletteMode =\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n const yamlExtensions = useMemo(() => [yaml()], []);\n const codeMirrorTheme = useMemo(\n () => (paletteMode === \"dark\" ? \"dark\" : \"light\"),\n [paletteMode]\n );\n\n return (\n <Grid container spacing={3} direction=\"column\">\n <Grid item style={{ height: 800 }}>\n <div\n style={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 12,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n flexWrap: \"wrap\",\n }}\n >\n {activeTemplateLabel && (\n <Typography variant=\"body2\" color=\"textSecondary\">\n Active template: {activeTemplateLabel}\n </Typography>\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n size=\"small\"\n onClick={onReload}\n disabled={isReloading}\n >\n {reloadButtonLabel}\n </Button>\n <Button\n color=\"primary\"\n variant=\"outlined\"\n size=\"small\"\n onClick={onSave}\n disabled={isSaving}\n >\n {saveButtonLabel}\n </Button>\n <Button\n color=\"primary\"\n variant=\"outlined\"\n size=\"small\"\n onClick={onOpenTemplatePicker}\n >\n Load different file\n </Button>\n </div>\n <Button variant=\"outlined\" size=\"small\" onClick={onToggleYaml}>\n {showYaml ? \"Hide YAML\" : \"Show YAML\"}\n </Button>\n </div>\n {loadError && (\n <Typography\n variant=\"body2\"\n style={{ color: theme.palette.error.main }}\n >\n {loadError}\n </Typography>\n )}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n gap: 16,\n minHeight: 0,\n }}\n >\n <div style={{ flex: showYaml ? 1.6 : 1, minWidth: 0 }}>\n <div style={{ height: \"100%\" }}>\n <App\n steps={templateSteps}\n parameters={templateParameters}\n output={templateOutput}\n onStepsChange={onStepsChange}\n onParametersChange={onParametersChange}\n onOutputChange={onOutputChange}\n />\n </div>\n </div>\n {showYaml && (\n <Paper\n elevation={2}\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n padding: \"12px 16px\",\n borderBottom: \"1px solid rgba(0,0,0,0.12)\",\n fontWeight: 600,\n fontSize: \"0.875rem\",\n }}\n >\n YAML Preview\n </div>\n {yamlError && (\n <div\n style={{\n padding: \"8px 16px\",\n borderBottom: \"1px solid rgba(0,0,0,0.08)\",\n color: theme.palette.error.main,\n fontSize: \"0.75rem\",\n background:\n paletteMode === \"dark\"\n ? \"rgba(255, 82, 82, 0.1)\"\n : \"rgba(244, 67, 54, 0.08)\",\n }}\n >\n {yamlError}\n </div>\n )}\n <div style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n <CodeMirror\n value={templateYaml}\n extensions={yamlExtensions}\n theme={codeMirrorTheme}\n height=\"100%\"\n onChange={(value) => onYamlChange(value)}\n />\n </div>\n </Paper>\n )}\n </div>\n </div>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateWorkspace.esm.js","sources":["../../../../src/components/TemplateDesigner/components/TemplateWorkspace.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { Button, Grid, Paper, Typography } from \"@material-ui/core\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport { yaml } from \"@codemirror/lang-yaml\";\nimport type {\n ScaffolderTaskOutput,\n TaskStep,\n} from \"@backstage/plugin-scaffolder-common\";\nimport type { TemplateParametersValue } from \"../../Nodes/types\";\nimport App from \"../../DesignerFlow/DesignerFlow\";\n\ntype TemplateWorkspaceProps = {\n templateSteps: TaskStep[];\n templateParameters: TemplateParametersValue;\n templateOutput?: ScaffolderTaskOutput;\n templateYaml: string;\n yamlError?: string;\n loadError?: string;\n showYaml: boolean;\n onToggleYaml: () => void;\n onYamlChange: (value: string) => void;\n onStepsChange: (steps: TaskStep[]) => void;\n onParametersChange: (parameters: TemplateParametersValue) => void;\n onOutputChange: (output?: ScaffolderTaskOutput) => void;\n onReload: () => void;\n onSave: () => void;\n onOpenTemplatePicker: () => void;\n activeTemplateLabel?: string;\n reloadButtonLabel: string;\n saveButtonLabel: string;\n isReloading: boolean;\n isSaving: boolean;\n};\n\nexport const TemplateWorkspace = ({\n templateSteps,\n templateParameters,\n templateOutput,\n templateYaml,\n yamlError,\n loadError,\n showYaml,\n onToggleYaml,\n onYamlChange,\n onStepsChange,\n onParametersChange,\n onOutputChange,\n onReload,\n onSave,\n onOpenTemplatePicker,\n activeTemplateLabel,\n reloadButtonLabel,\n saveButtonLabel,\n isReloading,\n isSaving,\n}: TemplateWorkspaceProps) => {\n const theme = useTheme();\n const paletteMode =\n (theme.palette as { mode?: \"light\" | \"dark\" }).mode ??\n theme.palette.type ??\n \"light\";\n const yamlDraftRef = useRef(templateYaml);\n const templateYamlRef = useRef(templateYaml);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const yamlExtensions = useMemo(() => [yaml()], []);\n const codeMirrorTheme = useMemo(\n () => (paletteMode === \"dark\" ? \"dark\" : \"light\"),\n [paletteMode]\n );\n\n // implementation releated to yaml rendering -> onBlue and onDebounce\n const flushYamlDraft = useCallback(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n if (yamlDraftRef.current !== templateYamlRef.current) {\n onYamlChange(yamlDraftRef.current);\n }\n }, [onYamlChange]);\n const handleYamlChange = useCallback(\n (value: string) => {\n yamlDraftRef.current = value;\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n debounceRef.current = setTimeout(() => {\n if (yamlDraftRef.current !== templateYamlRef.current) {\n onYamlChange(yamlDraftRef.current);\n }\n debounceRef.current = null;\n }, 600);\n },\n [onYamlChange]\n );\n const handleYamlBlur = useCallback(() => {\n flushYamlDraft();\n }, [flushYamlDraft]);\n\n useEffect(() => {\n yamlDraftRef.current = templateYaml;\n templateYamlRef.current = templateYaml;\n }, [templateYaml]);\n useEffect(\n () => () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n },\n []\n );\n\n return (\n <Grid\n container\n spacing={3}\n direction=\"column\"\n style={{ height: \"calc(100% - 15px)\" }}\n >\n <Grid item style={{ height: \"100%\" }}>\n <div\n style={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 12,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n flexWrap: \"wrap\",\n }}\n >\n {activeTemplateLabel && (\n <Typography variant=\"body2\" color=\"textSecondary\">\n Active template: {activeTemplateLabel}\n </Typography>\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n size=\"small\"\n onClick={onReload}\n disabled={isReloading}\n >\n {reloadButtonLabel}\n </Button>\n <Button\n color=\"primary\"\n variant=\"outlined\"\n size=\"small\"\n onClick={onSave}\n disabled={isSaving}\n >\n {saveButtonLabel}\n </Button>\n <Button\n color=\"primary\"\n variant=\"outlined\"\n size=\"small\"\n onClick={onOpenTemplatePicker}\n >\n Load different file\n </Button>\n </div>\n <Button variant=\"outlined\" size=\"small\" onClick={onToggleYaml}>\n {showYaml ? \"Hide YAML\" : \"Show YAML\"}\n </Button>\n </div>\n {loadError && (\n <Typography\n variant=\"body2\"\n style={{ color: theme.palette.error.main }}\n >\n {loadError}\n </Typography>\n )}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n gap: 16,\n minHeight: 0,\n }}\n >\n <div style={{ flex: showYaml ? 1.6 : 1, minWidth: 0 }}>\n <div style={{ height: \"100%\" }}>\n <App\n steps={templateSteps}\n parameters={templateParameters}\n output={templateOutput}\n onStepsChange={onStepsChange}\n onParametersChange={onParametersChange}\n onOutputChange={onOutputChange}\n />\n </div>\n </div>\n {showYaml && (\n <Paper\n elevation={2}\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n padding: \"12px 16px\",\n borderBottom: \"1px solid rgba(0,0,0,0.12)\",\n fontWeight: 600,\n fontSize: \"0.875rem\",\n }}\n >\n YAML Preview\n </div>\n {yamlError && (\n <div\n style={{\n padding: \"8px 16px\",\n borderBottom: \"1px solid rgba(0,0,0,0.08)\",\n color: theme.palette.error.main,\n fontSize: \"0.75rem\",\n background:\n paletteMode === \"dark\"\n ? \"rgba(255, 82, 82, 0.1)\"\n : \"rgba(244, 67, 54, 0.08)\",\n }}\n >\n {yamlError}\n </div>\n )}\n <div style={{ flex: 1, minHeight: 0, overflow: \"auto\" }}>\n <CodeMirror\n value={templateYaml}\n extensions={yamlExtensions}\n theme={codeMirrorTheme}\n height=\"100%\"\n onChange={handleYamlChange}\n onBlur={handleYamlBlur}\n />\n </div>\n </Paper>\n )}\n </div>\n </div>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ var name = "@tduniec/plugin-template-designer";
2
+ var description = "Template Designer turns blank Backstage YAML into a storyboard-like canvas, guiding anyone through drag-and-drop scaffolder authoring before ever touching code. Rally non-experts, broadcast best practices, and accelerate template launches directly inside Backstage.";
3
+ var version = "0.2.4";
4
+ var license = "Apache-2.0";
5
+ var keywords = [
6
+ "backstage",
7
+ "scaffolder",
8
+ "template-designer",
9
+ "no-code",
10
+ "yaml",
11
+ "canvas"
12
+ ];
13
+ var repository = {
14
+ type: "git",
15
+ url: "git+https://github.com/tduniec/template-designer-plugin.git",
16
+ directory: "."
17
+ };
18
+ var exports = {
19
+ ".": "./src/index.ts",
20
+ "./alpha": "./src/alpha.tsx",
21
+ "./package.json": "./package.json"
22
+ };
23
+ var main = "dist/index.esm.js";
24
+ var types = "dist/index.d.ts";
25
+ var publishConfig = {
26
+ access: "public",
27
+ main: "dist/index.esm.js",
28
+ types: "dist/index.d.ts"
29
+ };
30
+ var backstage = {
31
+ role: "frontend-plugin",
32
+ pluginId: "template-designer",
33
+ pluginPackages: [
34
+ "@tduniec/plugin-template-designer"
35
+ ],
36
+ features: {
37
+ "./alpha": "@backstage/FrontendPlugin"
38
+ }
39
+ };
40
+ var sideEffects = false;
41
+ var scripts = {
42
+ start: "backstage-cli package start",
43
+ build: "backstage-cli package build",
44
+ lint: "backstage-cli package lint",
45
+ test: "backstage-cli package test",
46
+ clean: "backstage-cli package clean",
47
+ tsc: "tsc",
48
+ "tsc:full": "tsc --skipLibCheck false --incremental false",
49
+ "lint:all": "backstage-cli repo lint",
50
+ "prettier:check": "prettier --check .",
51
+ prepack: "backstage-cli package prepack",
52
+ postpack: "backstage-cli package postpack",
53
+ validate: "tsc && backstage-cli package lint && prettier --check .",
54
+ "validate:fix": "tsc && backstage-cli package lint --fix && prettier -w .",
55
+ "validate:full": "tsc --skipLibCheck false --incremental false && backstage-cli repo lint && prettier --check .",
56
+ prepare: "husky"
57
+ };
58
+ var dependencies = {
59
+ "@backstage/core-compat-api": "backstage:^",
60
+ "@backstage/core-components": "backstage:^",
61
+ "@backstage/core-plugin-api": "backstage:^",
62
+ "@backstage/frontend-plugin-api": "backstage:^",
63
+ "@backstage/plugin-scaffolder-common": "backstage:^",
64
+ "@backstage/plugin-scaffolder-react": "backstage:^",
65
+ "@backstage/theme": "backstage:^",
66
+ "@codemirror/lang-yaml": "^6.1.2",
67
+ "@material-ui/core": "^4.12.4",
68
+ "@material-ui/icons": "^4.11.3",
69
+ "@material-ui/lab": "^4.0.0-alpha.61",
70
+ "@xyflow/react": "^12.8.6",
71
+ yaml: "^2.8.1"
72
+ };
73
+ var peerDependencies = {
74
+ "@codemirror/lang-yaml": "^6.0.0",
75
+ "@codemirror/state": "^6.0.0",
76
+ "@codemirror/view": "^6.0.0",
77
+ "@uiw/react-codemirror": "^4.25.2",
78
+ react: "^18.0.0",
79
+ "react-router-dom": "^6.23.0",
80
+ "react-use": "^17.2.4"
81
+ };
82
+ var devDependencies = {
83
+ "@backstage/cli": "backstage:^",
84
+ "@backstage/core-app-api": "backstage:^",
85
+ "@backstage/dev-utils": "backstage:^",
86
+ "@backstage/test-utils": "backstage:^",
87
+ "@codemirror/lang-yaml": "6.1.2",
88
+ "@codemirror/state": "6.5.2",
89
+ "@codemirror/view": "6.26.3",
90
+ "@commitlint/cli": "^20.1.0",
91
+ "@commitlint/config-conventional": "^20.0.0",
92
+ "@semantic-release/changelog": "^6.0.3",
93
+ "@semantic-release/commit-analyzer": "^13.0.1",
94
+ "@semantic-release/git": "^10.0.1",
95
+ "@semantic-release/github": "^12.0.1",
96
+ "@semantic-release/npm": "^13.1.1",
97
+ "@semantic-release/release-notes-generator": "^14.1.0",
98
+ "@testing-library/dom": "^10.0.0",
99
+ "@testing-library/jest-dom": "^6.0.0",
100
+ "@testing-library/react": "^16.0.0",
101
+ "@testing-library/user-event": "^14.0.0",
102
+ "@types/react": "^18",
103
+ "@types/react-dom": "^18",
104
+ "@uiw/react-codemirror": "4.25.2",
105
+ husky: "^9.1.7",
106
+ "lint-staged": "^16.2.6",
107
+ msw: "^1.0.0",
108
+ prettier: "^2.3.2",
109
+ react: "^18.3.1",
110
+ "react-dom": "^18.3.1",
111
+ "react-router-dom": "^6.23.0",
112
+ "react-use": "^17.2.4",
113
+ "semantic-release": "^25.0.1",
114
+ typescript: "~5.8.0",
115
+ webpack: "~5.96.0"
116
+ };
117
+ var files = [
118
+ "dist"
119
+ ];
120
+ var packageManager = "yarn@4.10.3";
121
+ var typesVersions = {
122
+ "*": {
123
+ alpha: [
124
+ "dist/alpha.d.ts"
125
+ ],
126
+ "package.json": [
127
+ "package.json"
128
+ ]
129
+ }
130
+ };
131
+ var module = "./dist/index.esm.js";
132
+ var _package = {
133
+ name: name,
134
+ description: description,
135
+ version: version,
136
+ license: license,
137
+ keywords: keywords,
138
+ repository: repository,
139
+ exports: exports,
140
+ main: main,
141
+ types: types,
142
+ publishConfig: publishConfig,
143
+ backstage: backstage,
144
+ sideEffects: sideEffects,
145
+ scripts: scripts,
146
+ "lint-staged": {
147
+ "*.{js,ts,jsx,tsx}": "backstage-cli package lint",
148
+ "*.{json,md}": "prettier --write"
149
+ },
150
+ dependencies: dependencies,
151
+ peerDependencies: peerDependencies,
152
+ devDependencies: devDependencies,
153
+ files: files,
154
+ packageManager: packageManager,
155
+ typesVersions: typesVersions,
156
+ module: module
157
+ };
158
+
159
+ export { backstage, _package as default, dependencies, description, devDependencies, exports, files, keywords, license, main, module, name, packageManager, peerDependencies, publishConfig, repository, scripts, sideEffects, types, typesVersions, version };
160
+ //# sourceMappingURL=package.json.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}