@tduniec/plugin-template-designer-foundation 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +13 -0
  3. package/dist/api/useScaffolderActions.esm.js +59 -0
  4. package/dist/api/useScaffolderActions.esm.js.map +1 -0
  5. package/dist/components/FieldEditorDialog.esm.js +55 -0
  6. package/dist/components/FieldEditorDialog.esm.js.map +1 -0
  7. package/dist/components/Nodes/ActionNode.esm.js +613 -0
  8. package/dist/components/Nodes/ActionNode.esm.js.map +1 -0
  9. package/dist/components/Nodes/OutputNode.esm.js +373 -0
  10. package/dist/components/Nodes/OutputNode.esm.js.map +1 -0
  11. package/dist/components/Nodes/ParameterInputNode.esm.js +320 -0
  12. package/dist/components/Nodes/ParameterInputNode.esm.js.map +1 -0
  13. package/dist/components/Nodes/ParameterTitlesNode.esm.js +251 -0
  14. package/dist/components/Nodes/ParameterTitlesNode.esm.js.map +1 -0
  15. package/dist/components/Nodes/ParametersNode.esm.js +147 -0
  16. package/dist/components/Nodes/ParametersNode.esm.js.map +1 -0
  17. package/dist/components/Nodes/action/schema.esm.js +68 -0
  18. package/dist/components/Nodes/action/schema.esm.js.map +1 -0
  19. package/dist/components/Nodes/action/useActionInputs.esm.js +71 -0
  20. package/dist/components/Nodes/action/useActionInputs.esm.js.map +1 -0
  21. package/dist/components/Nodes/common/AutoWidthPopper.esm.js +11 -0
  22. package/dist/components/Nodes/common/AutoWidthPopper.esm.js.map +1 -0
  23. package/dist/components/Nodes/common/nodeInteraction.esm.js +20 -0
  24. package/dist/components/Nodes/common/nodeInteraction.esm.js.map +1 -0
  25. package/dist/components/Nodes/output/useOutputController.esm.js +125 -0
  26. package/dist/components/Nodes/output/useOutputController.esm.js.map +1 -0
  27. package/dist/components/TemplateDesigner/TemplateLanding.esm.js +157 -0
  28. package/dist/components/TemplateDesigner/TemplateLanding.esm.js.map +1 -0
  29. package/dist/components/TemplateDesigner/TemplateWorkspace.esm.js +416 -0
  30. package/dist/components/TemplateDesigner/TemplateWorkspace.esm.js.map +1 -0
  31. package/dist/components/TemplateDesigner/codemirrorTheme.esm.js +30 -0
  32. package/dist/components/TemplateDesigner/codemirrorTheme.esm.js.map +1 -0
  33. package/dist/components/TemplateDesigner/useFieldEditor.esm.js +95 -0
  34. package/dist/components/TemplateDesigner/useFieldEditor.esm.js.map +1 -0
  35. package/dist/components/TemplateDesignerIcon.esm.js +33 -0
  36. package/dist/components/TemplateDesignerIcon.esm.js.map +1 -0
  37. package/dist/components/designerFlowConfig.esm.js +13 -0
  38. package/dist/components/designerFlowConfig.esm.js.map +1 -0
  39. package/dist/designerFlow/DesignerFlow.esm.js +828 -0
  40. package/dist/designerFlow/DesignerFlow.esm.js.map +1 -0
  41. package/dist/designerFlow/handlers.esm.js +317 -0
  42. package/dist/designerFlow/handlers.esm.js.map +1 -0
  43. package/dist/designerFlow/model.esm.js +166 -0
  44. package/dist/designerFlow/model.esm.js.map +1 -0
  45. package/dist/designerFlow/nodeLayout.esm.js +108 -0
  46. package/dist/designerFlow/nodeLayout.esm.js.map +1 -0
  47. package/dist/designerFlow/parameterTransforms.esm.js +124 -0
  48. package/dist/designerFlow/parameterTransforms.esm.js.map +1 -0
  49. package/dist/designerFlow/utils/stableComparators.esm.js +69 -0
  50. package/dist/designerFlow/utils/stableComparators.esm.js.map +1 -0
  51. package/dist/foundation/actionNodeCustomization.esm.js +20 -0
  52. package/dist/foundation/actionNodeCustomization.esm.js.map +1 -0
  53. package/dist/foundation/actionNodeRegistry.esm.js +30 -0
  54. package/dist/foundation/actionNodeRegistry.esm.js.map +1 -0
  55. package/dist/foundation/featureFlags.esm.js +6 -0
  56. package/dist/foundation/featureFlags.esm.js.map +1 -0
  57. package/dist/foundation/templateSources.esm.js +16 -0
  58. package/dist/foundation/templateSources.esm.js.map +1 -0
  59. package/dist/index.d.ts +382 -0
  60. package/dist/index.esm.js +25 -0
  61. package/dist/index.esm.js.map +1 -0
  62. package/dist/state/templateUtils.esm.js +46 -0
  63. package/dist/state/templateUtils.esm.js.map +1 -0
  64. package/dist/state/useParameterSections.esm.js +162 -0
  65. package/dist/state/useParameterSections.esm.js.map +1 -0
  66. package/dist/state/useTemplateState.esm.js +627 -0
  67. package/dist/state/useTemplateState.esm.js.map +1 -0
  68. package/dist/types/flowNodes.esm.js +8 -0
  69. package/dist/types/flowNodes.esm.js.map +1 -0
  70. package/dist/utils/createSequentialEdges.esm.js +15 -0
  71. package/dist/utils/createSequentialEdges.esm.js.map +1 -0
  72. package/dist/utils/mocks/mocks.esm.js +120 -0
  73. package/dist/utils/mocks/mocks.esm.js.map +1 -0
  74. package/dist/utils/sampleTemplate.esm.js +40 -0
  75. package/dist/utils/sampleTemplate.esm.js.map +1 -0
  76. package/dist/utils/yamlJsonConversion.esm.js +47 -0
  77. package/dist/utils/yamlJsonConversion.esm.js.map +1 -0
  78. package/package.json +103 -0
@@ -0,0 +1,30 @@
1
+ import { EditorView } from '@codemirror/view';
2
+
3
+ const createCodeMirrorTheme = (materialTheme, paletteMode) => EditorView.theme(
4
+ {
5
+ "&": {
6
+ backgroundColor: materialTheme.palette.background.paper,
7
+ color: materialTheme.palette.text.primary
8
+ },
9
+ ".cm-content": {
10
+ fontFamily: '"Roboto Mono", "SFMono-Regular", Consolas, monospace'
11
+ },
12
+ ".cm-scroller": {
13
+ fontSize: 13,
14
+ lineHeight: 1.5
15
+ },
16
+ ".cm-gutters": {
17
+ backgroundColor: materialTheme.palette.background.paper,
18
+ color: materialTheme.palette.text.secondary,
19
+ borderRight: `1px solid ${materialTheme.palette.divider}`
20
+ },
21
+ "&.cm-editor.cm-focused": {
22
+ outline: `1px solid ${materialTheme.palette.primary.main}`,
23
+ outlineOffset: 0
24
+ }
25
+ },
26
+ { dark: paletteMode === "dark" }
27
+ );
28
+
29
+ export { createCodeMirrorTheme };
30
+ //# sourceMappingURL=codemirrorTheme.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemirrorTheme.esm.js","sources":["../../../src/components/TemplateDesigner/codemirrorTheme.ts"],"sourcesContent":["import { EditorView } from \"@codemirror/view\";\nimport type { Extension } from \"@codemirror/state\";\nimport type { Theme } from \"@material-ui/core/styles\";\n\nexport const createCodeMirrorTheme = (\n materialTheme: Theme,\n paletteMode: \"light\" | \"dark\"\n): Extension =>\n EditorView.theme(\n {\n \"&\": {\n backgroundColor: materialTheme.palette.background.paper,\n color: materialTheme.palette.text.primary,\n },\n \".cm-content\": {\n fontFamily: '\"Roboto Mono\", \"SFMono-Regular\", Consolas, monospace',\n },\n \".cm-scroller\": {\n fontSize: 13,\n lineHeight: 1.5,\n },\n \".cm-gutters\": {\n backgroundColor: materialTheme.palette.background.paper,\n color: materialTheme.palette.text.secondary,\n borderRight: `1px solid ${materialTheme.palette.divider}`,\n },\n \"&.cm-editor.cm-focused\": {\n outline: `1px solid ${materialTheme.palette.primary.main}`,\n outlineOffset: 0,\n },\n },\n { dark: paletteMode === \"dark\" }\n );\n"],"names":[],"mappings":";;AAIO,MAAM,qBAAA,GAAwB,CACnC,aAAA,EACA,WAAA,KAEA,UAAA,CAAW,KAAA;AAAA,EACT;AAAA,IACE,GAAA,EAAK;AAAA,MACH,eAAA,EAAiB,aAAA,CAAc,OAAA,CAAQ,UAAA,CAAW,KAAA;AAAA,MAClD,KAAA,EAAO,aAAA,CAAc,OAAA,CAAQ,IAAA,CAAK;AAAA,KACpC;AAAA,IACA,aAAA,EAAe;AAAA,MACb,UAAA,EAAY;AAAA,KACd;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAA,EAAU,EAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA,IACA,aAAA,EAAe;AAAA,MACb,eAAA,EAAiB,aAAA,CAAc,OAAA,CAAQ,UAAA,CAAW,KAAA;AAAA,MAClD,KAAA,EAAO,aAAA,CAAc,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,MAClC,WAAA,EAAa,CAAA,UAAA,EAAa,aAAA,CAAc,OAAA,CAAQ,OAAO,CAAA;AAAA,KACzD;AAAA,IACA,wBAAA,EAA0B;AAAA,MACxB,OAAA,EAAS,CAAA,UAAA,EAAa,aAAA,CAAc,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,MACxD,aAAA,EAAe;AAAA;AACjB,GACF;AAAA,EACA,EAAE,IAAA,EAAM,WAAA,KAAgB,MAAA;AAC1B;;;;"}
@@ -0,0 +1,95 @@
1
+ import { useState, useRef, useCallback, useEffect } from 'react';
2
+
3
+ const resolveLabel = (element) => element.getAttribute("aria-label") ?? element.name ?? element.placeholder ?? "Field editor";
4
+ const useFieldEditor = () => {
5
+ const [editorState, setEditorState] = useState(null);
6
+ const interactionRootRef = useRef(null);
7
+ const closeEditor = useCallback(() => {
8
+ setEditorState(null);
9
+ }, []);
10
+ const applyEditorValue = useCallback(
11
+ (value) => {
12
+ const current = editorState;
13
+ if (!current) {
14
+ return;
15
+ }
16
+ const setNativeValue = (element, nextValue) => {
17
+ const valueSetter = Object.getOwnPropertyDescriptor(
18
+ element,
19
+ "value"
20
+ )?.set;
21
+ const prototype = Object.getPrototypeOf(element);
22
+ const prototypeValueSetter = Object.getOwnPropertyDescriptor(
23
+ prototype,
24
+ "value"
25
+ )?.set;
26
+ if (valueSetter && valueSetter !== prototypeValueSetter) {
27
+ prototypeValueSetter?.call(element, nextValue);
28
+ } else if (valueSetter) {
29
+ valueSetter.call(element, nextValue);
30
+ } else {
31
+ element.value = nextValue;
32
+ }
33
+ };
34
+ setNativeValue(current.target, value);
35
+ current.target.dispatchEvent(new Event("input", { bubbles: true }));
36
+ closeEditor();
37
+ },
38
+ [closeEditor, editorState]
39
+ );
40
+ const openEditor = useCallback(
41
+ (target) => {
42
+ setEditorState({
43
+ target,
44
+ label: resolveLabel(target),
45
+ initialValue: target.value
46
+ });
47
+ },
48
+ []
49
+ );
50
+ useEffect(() => {
51
+ const root = interactionRootRef.current;
52
+ if (!root) {
53
+ return void 0;
54
+ }
55
+ const handleDoubleClick = (event) => {
56
+ const target = event.target;
57
+ if (target instanceof HTMLInputElement && !target.readOnly && !target.disabled) {
58
+ const type = target.type?.toLowerCase();
59
+ const editableTypes = [
60
+ "text",
61
+ "search",
62
+ "url",
63
+ "tel",
64
+ "email",
65
+ "number",
66
+ "password"
67
+ ];
68
+ const isTextual = !type || editableTypes.includes(type);
69
+ if (!isTextual || !target.value) {
70
+ return;
71
+ }
72
+ event.stopPropagation();
73
+ openEditor(target);
74
+ return;
75
+ }
76
+ if (target instanceof HTMLTextAreaElement && !target.readOnly && !target.disabled && target.value) {
77
+ event.stopPropagation();
78
+ openEditor(target);
79
+ }
80
+ };
81
+ root.addEventListener("dblclick", handleDoubleClick, true);
82
+ return () => {
83
+ root.removeEventListener("dblclick", handleDoubleClick, true);
84
+ };
85
+ }, [openEditor]);
86
+ return {
87
+ editorState,
88
+ interactionRootRef,
89
+ closeEditor,
90
+ applyEditorValue
91
+ };
92
+ };
93
+
94
+ export { useFieldEditor };
95
+ //# sourceMappingURL=useFieldEditor.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFieldEditor.esm.js","sources":["../../../src/components/TemplateDesigner/useFieldEditor.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype EditorState = null | {\n target: HTMLInputElement | HTMLTextAreaElement;\n label: string;\n initialValue: string;\n};\n\nconst resolveLabel = (element: HTMLInputElement | HTMLTextAreaElement) =>\n element.getAttribute(\"aria-label\") ??\n element.name ??\n element.placeholder ??\n \"Field editor\";\n\n/**\n * Provides a modal-friendly editing experience for readonly-looking inputs\n * by letting users double-click any text field and edit its value centrally.\n */\nexport const useFieldEditor = () => {\n const [editorState, setEditorState] = useState<EditorState>(null);\n const interactionRootRef = useRef<HTMLDivElement | null>(null);\n\n const closeEditor = useCallback(() => {\n setEditorState(null);\n }, []);\n\n const applyEditorValue = useCallback(\n (value: string) => {\n const current = editorState;\n if (!current) {\n return;\n }\n\n const setNativeValue = (\n element: HTMLInputElement | HTMLTextAreaElement,\n nextValue: string\n ) => {\n const valueSetter = Object.getOwnPropertyDescriptor(\n element,\n \"value\"\n )?.set;\n const prototype = Object.getPrototypeOf(element);\n const prototypeValueSetter = Object.getOwnPropertyDescriptor(\n prototype,\n \"value\"\n )?.set;\n\n if (valueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter?.call(element, nextValue);\n } else if (valueSetter) {\n valueSetter.call(element, nextValue);\n } else {\n // eslint-disable-next-line no-param-reassign\n element.value = nextValue;\n }\n };\n\n setNativeValue(current.target, value);\n current.target.dispatchEvent(new Event(\"input\", { bubbles: true }));\n closeEditor();\n },\n [closeEditor, editorState]\n );\n\n const openEditor = useCallback(\n (target: HTMLInputElement | HTMLTextAreaElement) => {\n setEditorState({\n target,\n label: resolveLabel(target),\n initialValue: target.value,\n });\n },\n []\n );\n\n useEffect(() => {\n const root = interactionRootRef.current;\n if (!root) {\n return undefined;\n }\n\n const handleDoubleClick = (event: MouseEvent) => {\n const target = event.target;\n if (\n target instanceof HTMLInputElement &&\n !target.readOnly &&\n !target.disabled\n ) {\n const type = target.type?.toLowerCase();\n const editableTypes = [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"number\",\n \"password\",\n ];\n const isTextual = !type || editableTypes.includes(type);\n if (!isTextual || !target.value) {\n return;\n }\n event.stopPropagation();\n openEditor(target);\n return;\n }\n if (\n target instanceof HTMLTextAreaElement &&\n !target.readOnly &&\n !target.disabled &&\n target.value\n ) {\n event.stopPropagation();\n openEditor(target);\n }\n };\n\n root.addEventListener(\"dblclick\", handleDoubleClick, true);\n return () => {\n root.removeEventListener(\"dblclick\", handleDoubleClick, true);\n };\n }, [openEditor]);\n\n return {\n editorState,\n interactionRootRef,\n closeEditor,\n applyEditorValue,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import SvgIcon from '@material-ui/core/SvgIcon';
3
+
4
+ const TemplateDesignerIcon = (props) => /* @__PURE__ */ jsxs(
5
+ SvgIcon,
6
+ {
7
+ ...props,
8
+ viewBox: "0 0 96 96",
9
+ stroke: "currentColor",
10
+ style: { ...props.style, fill: "none" },
11
+ strokeWidth: 3.4,
12
+ strokeLinecap: "round",
13
+ strokeLinejoin: "round",
14
+ children: [
15
+ /* @__PURE__ */ jsx("rect", { x: 6, y: 6, width: 84, height: 84, rx: 22, fill: "none" }),
16
+ /* @__PURE__ */ jsx("polygon", { points: "28,18 42,32 28,46 14,32", fill: "none" }),
17
+ /* @__PURE__ */ jsx("rect", { x: 58, y: 24, width: 24, height: 16, rx: 3, fill: "none" }),
18
+ /* @__PURE__ */ jsx("rect", { x: 16, y: 60, width: 24, height: 16, rx: 3, fill: "none" }),
19
+ /* @__PURE__ */ jsx("rect", { x: 58, y: 60, width: 24, height: 16, rx: 3, fill: "none" }),
20
+ /* @__PURE__ */ jsx("path", { d: "M42 32 H58" }),
21
+ /* @__PURE__ */ jsx("path", { d: "M58 32 l-4 -3.5 M58 32 l-4 3.5" }),
22
+ /* @__PURE__ */ jsx("path", { d: "M28 46 V60" }),
23
+ /* @__PURE__ */ jsx("path", { d: "M28 60 l-4 -4 M28 60 l4 -4" }),
24
+ /* @__PURE__ */ jsx("path", { d: "M40 68 H58" }),
25
+ /* @__PURE__ */ jsx("path", { d: "M58 68 l-4 -3.5 M58 68 l-4 3.5" }),
26
+ /* @__PURE__ */ jsx("path", { d: "M70 40 V60" }),
27
+ /* @__PURE__ */ jsx("path", { d: "M70 60 l-4 -4 M70 60 l4 -4" })
28
+ ]
29
+ }
30
+ );
31
+
32
+ export { TemplateDesignerIcon, TemplateDesignerIcon as default };
33
+ //# sourceMappingURL=TemplateDesignerIcon.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateDesignerIcon.esm.js","sources":["../../src/components/TemplateDesignerIcon.tsx"],"sourcesContent":["import SvgIcon, { SvgIconProps } from \"@material-ui/core/SvgIcon\";\n\nexport const TemplateDesignerIcon = (props: SvgIconProps) => (\n <SvgIcon\n {...props}\n viewBox=\"0 0 96 96\"\n stroke=\"currentColor\"\n // Explicitly clear the default Material-UI fill so the icon renders as an outline in Backstage.\n style={{ ...props.style, fill: \"none\" }}\n strokeWidth={3.4}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x={6} y={6} width={84} height={84} rx={22} fill=\"none\" />\n <polygon points=\"28,18 42,32 28,46 14,32\" fill=\"none\" />\n <rect x={58} y={24} width={24} height={16} rx={3} fill=\"none\" />\n <rect x={16} y={60} width={24} height={16} rx={3} fill=\"none\" />\n <rect x={58} y={60} width={24} height={16} rx={3} fill=\"none\" />\n <path d=\"M42 32 H58\" />\n <path d=\"M58 32 l-4 -3.5 M58 32 l-4 3.5\" />\n <path d=\"M28 46 V60\" />\n <path d=\"M28 60 l-4 -4 M28 60 l4 -4\" />\n <path d=\"M40 68 H58\" />\n <path d=\"M58 68 l-4 -3.5 M58 68 l-4 3.5\" />\n <path d=\"M70 40 V60\" />\n <path d=\"M70 60 l-4 -4 M70 60 l4 -4\" />\n </SvgIcon>\n);\n\nexport default TemplateDesignerIcon;\n"],"names":[],"mappings":";;;AAEO,MAAM,oBAAA,GAAuB,CAAC,KAAA,qBACnC,IAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACE,GAAG,KAAA;AAAA,IACJ,OAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAO,cAAA;AAAA,IAEP,OAAO,EAAE,GAAG,KAAA,CAAM,KAAA,EAAO,MAAM,MAAA,EAAO;AAAA,IACtC,WAAA,EAAa,GAAA;AAAA,IACb,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IAEf,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAA,EAAK,MAAA,EAAO,CAAA;AAAA,sBAC7D,GAAA,CAAC,SAAA,EAAA,EAAQ,MAAA,EAAO,yBAAA,EAA0B,MAAK,MAAA,EAAO,CAAA;AAAA,sBACtD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,MAAK,MAAA,EAAO,CAAA;AAAA,sBAC9D,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,MAAK,MAAA,EAAO,CAAA;AAAA,sBAC9D,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,MAAK,MAAA,EAAO,CAAA;AAAA,sBAC9D,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,CAAA;AAAA,sBACrB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gCAAA,EAAiC,CAAA;AAAA,sBACzC,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,CAAA;AAAA,sBACrB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4BAAA,EAA6B,CAAA;AAAA,sBACrC,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,CAAA;AAAA,sBACrB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gCAAA,EAAiC,CAAA;AAAA,sBACzC,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa,CAAA;AAAA,sBACrB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4BAAA,EAA6B;AAAA;AAAA;AACvC;;;;"}
@@ -0,0 +1,13 @@
1
+ import { Position } from '@xyflow/react';
2
+
3
+ const FLOW_LAYOUT = {
4
+ verticalSpacing: 200,
5
+ fixedXPosition: 100
6
+ };
7
+ const nodeDefaults = {
8
+ sourcePosition: Position.Bottom,
9
+ targetPosition: Position.Top
10
+ };
11
+
12
+ export { FLOW_LAYOUT, nodeDefaults };
13
+ //# sourceMappingURL=designerFlowConfig.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designerFlowConfig.esm.js","sources":["../../src/components/designerFlowConfig.ts"],"sourcesContent":["import { Position } from \"@xyflow/react\";\n\nexport const FLOW_LAYOUT = {\n verticalSpacing: 200,\n fixedXPosition: 100,\n} as const;\n\nexport const nodeDefaults = {\n sourcePosition: Position.Bottom,\n targetPosition: Position.Top,\n};\n"],"names":[],"mappings":";;AAEO,MAAM,WAAA,GAAc;AAAA,EACzB,eAAA,EAAiB,GAAA;AAAA,EACjB,cAAA,EAAgB;AAClB;AAEO,MAAM,YAAA,GAAe;AAAA,EAC1B,gBAAgB,QAAA,CAAS,MAAA;AAAA,EACzB,gBAAgB,QAAA,CAAS;AAC3B;;;;"}