@operato/flow 9.0.0-beta.52
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 +25 -0
- package/README.md +95 -0
- package/assets/images/no-image.png +0 -0
- package/dist/src/api/tasks.d.ts +7 -0
- package/dist/src/api/tasks.js +2517 -0
- package/dist/src/api/tasks.js.map +1 -0
- package/dist/src/base/anchor-instance.d.ts +30 -0
- package/dist/src/base/anchor-instance.js +82 -0
- package/dist/src/base/anchor-instance.js.map +1 -0
- package/dist/src/base/flow-edge-instance.d.ts +31 -0
- package/dist/src/base/flow-edge-instance.js +170 -0
- package/dist/src/base/flow-edge-instance.js.map +1 -0
- package/dist/src/base/flow-node-abstract.d.ts +44 -0
- package/dist/src/base/flow-node-abstract.js +144 -0
- package/dist/src/base/flow-node-abstract.js.map +1 -0
- package/dist/src/components/flow-debug-panel.d.ts +22 -0
- package/dist/src/components/flow-debug-panel.js +156 -0
- package/dist/src/components/flow-debug-panel.js.map +1 -0
- package/dist/src/components/flow-executor.d.ts +29 -0
- package/dist/src/components/flow-executor.js +88 -0
- package/dist/src/components/flow-executor.js.map +1 -0
- package/dist/src/components/flow-options-builder.d.ts +18 -0
- package/dist/src/components/flow-options-builder.js +145 -0
- package/dist/src/components/flow-options-builder.js.map +1 -0
- package/dist/src/components/flow-properties-panel.d.ts +20 -0
- package/dist/src/components/flow-properties-panel.js +212 -0
- package/dist/src/components/flow-properties-panel.js.map +1 -0
- package/dist/src/components/flow-side-panel.d.ts +9 -0
- package/dist/src/components/flow-side-panel.js +83 -0
- package/dist/src/components/flow-side-panel.js.map +1 -0
- package/dist/src/components/flow-sidebar.d.ts +7 -0
- package/dist/src/components/flow-sidebar.js +84 -0
- package/dist/src/components/flow-sidebar.js.map +1 -0
- package/dist/src/components/flow-toolbar.d.ts +15 -0
- package/dist/src/components/flow-toolbar.js +161 -0
- package/dist/src/components/flow-toolbar.js.map +1 -0
- package/dist/src/components/property-editor.d.ts +34 -0
- package/dist/src/components/property-editor.js +76 -0
- package/dist/src/components/property-editor.js.map +1 -0
- package/dist/src/components/property-panel/data-mapper-popup.d.ts +11 -0
- package/dist/src/components/property-panel/data-mapper-popup.js +86 -0
- package/dist/src/components/property-panel/data-mapper-popup.js.map +1 -0
- package/dist/src/components/property-panel/task-selection-popup.d.ts +10 -0
- package/dist/src/components/property-panel/task-selection-popup.js +106 -0
- package/dist/src/components/property-panel/task-selection-popup.js.map +1 -0
- package/dist/src/context/flow-context.d.ts +21 -0
- package/dist/src/context/flow-context.js +3 -0
- package/dist/src/context/flow-context.js.map +1 -0
- package/dist/src/context/flow-debug-context.d.ts +16 -0
- package/dist/src/context/flow-debug-context.js +3 -0
- package/dist/src/context/flow-debug-context.js.map +1 -0
- package/dist/src/context/flow-edit-context.d.ts +11 -0
- package/dist/src/context/flow-edit-context.js +3 -0
- package/dist/src/context/flow-edit-context.js.map +1 -0
- package/dist/src/handlers/dnd-event-handler.d.ts +9 -0
- package/dist/src/handlers/dnd-event-handler.js +41 -0
- package/dist/src/handlers/dnd-event-handler.js.map +1 -0
- package/dist/src/handlers/flow-event-handler.d.ts +20 -0
- package/dist/src/handlers/flow-event-handler.js +75 -0
- package/dist/src/handlers/flow-event-handler.js.map +1 -0
- package/dist/src/handlers/keydown-event-handler.d.ts +6 -0
- package/dist/src/handlers/keydown-event-handler.js +24 -0
- package/dist/src/handlers/keydown-event-handler.js.map +1 -0
- package/dist/src/handlers/pointer-event-handler.d.ts +9 -0
- package/dist/src/handlers/pointer-event-handler.js +118 -0
- package/dist/src/handlers/pointer-event-handler.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/nodes/decision.d.ts +12 -0
- package/dist/src/nodes/decision.js +41 -0
- package/dist/src/nodes/decision.js.map +1 -0
- package/dist/src/nodes/end-event.d.ts +10 -0
- package/dist/src/nodes/end-event.js +44 -0
- package/dist/src/nodes/end-event.js.map +1 -0
- package/dist/src/nodes/index.d.ts +5 -0
- package/dist/src/nodes/index.js +19 -0
- package/dist/src/nodes/index.js.map +1 -0
- package/dist/src/nodes/intermediate-event.d.ts +10 -0
- package/dist/src/nodes/intermediate-event.js +46 -0
- package/dist/src/nodes/intermediate-event.js.map +1 -0
- package/dist/src/nodes/iterator.d.ts +8 -0
- package/dist/src/nodes/iterator.js +26 -0
- package/dist/src/nodes/iterator.js.map +1 -0
- package/dist/src/nodes/select.d.ts +13 -0
- package/dist/src/nodes/select.js +68 -0
- package/dist/src/nodes/select.js.map +1 -0
- package/dist/src/nodes/start-event.d.ts +11 -0
- package/dist/src/nodes/start-event.js +43 -0
- package/dist/src/nodes/start-event.js.map +1 -0
- package/dist/src/nodes/subflow.d.ts +8 -0
- package/dist/src/nodes/subflow.js +27 -0
- package/dist/src/nodes/subflow.js.map +1 -0
- package/dist/src/nodes/task.d.ts +13 -0
- package/dist/src/nodes/task.js +57 -0
- package/dist/src/nodes/task.js.map +1 -0
- package/dist/src/ox-flow-editor.d.ts +94 -0
- package/dist/src/ox-flow-editor.js +426 -0
- package/dist/src/ox-flow-editor.js.map +1 -0
- package/dist/src/ox-flow-monitor.d.ts +24 -0
- package/dist/src/ox-flow-monitor.js +117 -0
- package/dist/src/ox-flow-monitor.js.map +1 -0
- package/dist/src/types.d.ts +92 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/generate-mapping-scheme.d.ts +6 -0
- package/dist/src/utils/generate-mapping-scheme.js +50 -0
- package/dist/src/utils/generate-mapping-scheme.js.map +1 -0
- package/dist/stories/ox-flow-editor.stories.d.ts +24 -0
- package/dist/stories/ox-flow-editor.stories.js +249 -0
- package/dist/stories/ox-flow-editor.stories.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +91 -0
- package/themes/app-theme.css +138 -0
- package/themes/calendar-theme.css +61 -0
- package/themes/dark.css +51 -0
- package/themes/form-theme.css +70 -0
- package/themes/grist-theme.css +175 -0
- package/themes/layout-theme.css +94 -0
- package/themes/light.css +51 -0
- package/themes/material-theme.css +23 -0
- package/themes/md-typescale-styles.css +100 -0
- package/themes/oops-theme.css +22 -0
- package/themes/report-theme.css +47 -0
- package/themes/spacing.css +23 -0
- package/themes/state-color.css +6 -0
- package/themes/tooltip-theme.css +11 -0
- package/translations/en.json +3 -0
- package/translations/ja.json +3 -0
- package/translations/ko.json +3 -0
- package/translations/ms.json +3 -0
- package/translations/zh.json +3 -0
- package/types/dagre-esm.d.ts +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterator.js","sourceRoot":"","sources":["../../../src/nodes/iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,KAAK,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,MAAM,OAAO,QAAS,SAAQ,gBAAgB;IAC5C,IAAI,IAAI;QACN,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,UAAU;QACR,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAEhD,OAAO,GAAG,CAAA;sCACwB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC;;;iBAGpE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;;qFAEsC,IAAI,CAAC,KAAK;KAC1F,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAErC,OAAO;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;YAC3D,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;SAC7D,CAAA;IACH,CAAC;CACF","sourcesContent":["import { svg, SVGTemplateResult } from 'lit'\nimport { AnchorModel } from '../types.js'\nimport { FlowNodeAbstract } from '../base/flow-node-abstract.js'\n\nexport class Iterator extends FlowNodeAbstract {\n get type() {\n return 'iterator'\n }\n\n renderNode(): SVGTemplateResult {\n const { w, h } = this.size || { w: 200, h: 500 }\n\n return svg`\n <rect class=\"node-outline\" x=\"${-w / 2}\" y=\"${-h / 2}\" width=\"${w}\" height=\"${h}\" \n fill=\"#f3f3f3\" stroke=\"#000\" stroke-dasharray=\"5,5\" stroke-width=\"1.5\" />\n\n <text x=\"${-w / 2 + 10}\" y=\"${-h / 2 + 15}\" font-size=\"12\" fill=\"#333\">🔁</text>\n\n <text class=\"node-label\" x=\"0\" y=\"5\" text-anchor=\"middle\" font-weight=\"bold\">${this.label}</text>\n `\n }\n\n get anchorModels(): AnchorModel[] {\n const { h } = this.size || { h: 500 }\n\n return [\n { id: 'in', type: 'in', pos: { x: 0, y: -(h ?? 500) / 2 } },\n { id: 'out', type: 'out', pos: { x: 0, y: (h ?? 500) / 2 } }\n ]\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SVGTemplateResult } from 'lit';
|
|
2
|
+
import { AnchorModel, FlowDataSchema } from '../types.js';
|
|
3
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
4
|
+
import { PropertySpec } from '@operato/property-editor';
|
|
5
|
+
export declare class Select extends FlowNodeAbstract {
|
|
6
|
+
get type(): string;
|
|
7
|
+
get optionsSpec(): PropertySpec[];
|
|
8
|
+
get inputSchema(): FlowDataSchema;
|
|
9
|
+
get outputSchema(): FlowDataSchema;
|
|
10
|
+
renderNode(): SVGTemplateResult;
|
|
11
|
+
/** 기본 앵커 포인트 (input 1개, output 3개) */
|
|
12
|
+
get anchorModels(): AnchorModel[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
3
|
+
const MINWIDTH = 160;
|
|
4
|
+
const ANCHOR_SPACING = 80;
|
|
5
|
+
const HEIGHT = 40;
|
|
6
|
+
export class Select extends FlowNodeAbstract {
|
|
7
|
+
get type() {
|
|
8
|
+
return 'select';
|
|
9
|
+
}
|
|
10
|
+
get optionsSpec() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
type: 'number',
|
|
14
|
+
name: 'outputCount',
|
|
15
|
+
label: 'output-count'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
get inputSchema() {
|
|
20
|
+
return {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
selectionKey: { type: 'string' }
|
|
24
|
+
},
|
|
25
|
+
required: ['selectionKey']
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
get outputSchema() {
|
|
29
|
+
return {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
selectionKey: { type: 'string' }
|
|
33
|
+
},
|
|
34
|
+
required: ['selectionKey']
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
renderNode() {
|
|
38
|
+
const { outputCount } = this.options || { outputCount: 3 };
|
|
39
|
+
const { w, h } = this.size || { w: Math.max(MINWIDTH, outputCount * ANCHOR_SPACING), h: HEIGHT };
|
|
40
|
+
return svg `
|
|
41
|
+
<rect class="node-outline" x="${-w / 2}" y="${-h / 2}" width="${w}" height="${h}" fill="#e2e3e5" stroke="#000" stroke-width="1" />
|
|
42
|
+
|
|
43
|
+
<text class="node-label" x="0" y="5" text-anchor="middle">${this.label}</text>
|
|
44
|
+
`;
|
|
45
|
+
}
|
|
46
|
+
/** 기본 앵커 포인트 (input 1개, output 3개) */
|
|
47
|
+
get anchorModels() {
|
|
48
|
+
const { outputCount } = this.options || { outputCount: 3 };
|
|
49
|
+
const { w, h } = this.size || { w: Math.max(MINWIDTH, outputCount * ANCHOR_SPACING), h: HEIGHT };
|
|
50
|
+
const anchors = [{ id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } }];
|
|
51
|
+
const anchorSpacing = w / outputCount;
|
|
52
|
+
const startOffsetX = (-(outputCount - 1) * anchorSpacing) / 2;
|
|
53
|
+
for (let i = 0; i < outputCount; i++) {
|
|
54
|
+
anchors.push({
|
|
55
|
+
id: `out-${i + 1}`,
|
|
56
|
+
type: 'out',
|
|
57
|
+
pos: {
|
|
58
|
+
x: startOffsetX + i * anchorSpacing,
|
|
59
|
+
y: h / 2
|
|
60
|
+
},
|
|
61
|
+
label: `case ${i + 1}`,
|
|
62
|
+
weight: outputCount - i
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return anchors;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/nodes/select.ts"],"names":[],"mappings":"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","sourcesContent":["import { svg, SVGTemplateResult } from 'lit'\nimport { AnchorModel, FlowDataSchema } from '../types.js'\nimport { FlowNodeAbstract } from '../base/flow-node-abstract.js'\nimport { PropertySpec } from '@operato/property-editor'\n\nconst MINWIDTH = 160\nconst ANCHOR_SPACING = 80\nconst HEIGHT = 40\nexport class Select extends FlowNodeAbstract {\n get type() {\n return 'select'\n }\n\n get optionsSpec(): PropertySpec[] {\n return [\n {\n type: 'number',\n name: 'outputCount',\n label: 'output-count'\n }\n ]\n }\n\n get inputSchema(): FlowDataSchema {\n return {\n type: 'object',\n properties: {\n selectionKey: { type: 'string' }\n },\n required: ['selectionKey']\n }\n }\n\n get outputSchema(): FlowDataSchema {\n return {\n type: 'object',\n properties: {\n selectionKey: { type: 'string' }\n },\n required: ['selectionKey']\n }\n }\n\n renderNode(): SVGTemplateResult {\n const { outputCount } = this.options || { outputCount: 3 }\n const { w, h } = this.size || { w: Math.max(MINWIDTH, outputCount * ANCHOR_SPACING), h: HEIGHT }\n\n return svg`\n <rect class=\"node-outline\" x=\"${-w / 2}\" y=\"${-h / 2}\" width=\"${w}\" height=\"${h}\" fill=\"#e2e3e5\" stroke=\"#000\" stroke-width=\"1\" />\n\n <text class=\"node-label\" x=\"0\" y=\"5\" text-anchor=\"middle\">${this.label}</text>\n `\n }\n\n /** 기본 앵커 포인트 (input 1개, output 3개) */\n get anchorModels(): AnchorModel[] {\n const { outputCount } = this.options || { outputCount: 3 }\n const { w, h } = this.size || { w: Math.max(MINWIDTH, outputCount * ANCHOR_SPACING), h: HEIGHT }\n\n const anchors: AnchorModel[] = [{ id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } }]\n\n const anchorSpacing = w / outputCount\n const startOffsetX = (-(outputCount - 1) * anchorSpacing) / 2\n\n for (let i = 0; i < outputCount; i++) {\n anchors.push({\n id: `out-${i + 1}`,\n type: 'out',\n pos: {\n x: startOffsetX + i * anchorSpacing,\n y: h / 2\n },\n label: `case ${i + 1}`,\n weight: outputCount - i\n })\n }\n\n return anchors\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVGTemplateResult } from 'lit';
|
|
2
|
+
import { AnchorModel, FlowDataSchema } from '../types.js';
|
|
3
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
4
|
+
export declare class StartEvent extends FlowNodeAbstract {
|
|
5
|
+
get type(): string;
|
|
6
|
+
get inputSchema(): FlowDataSchema;
|
|
7
|
+
get dataSourceSchema(): FlowDataSchema;
|
|
8
|
+
get outputSchema(): FlowDataSchema;
|
|
9
|
+
renderNode(): SVGTemplateResult;
|
|
10
|
+
get anchorModels(): AnchorModel[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
3
|
+
export class StartEvent extends FlowNodeAbstract {
|
|
4
|
+
get type() {
|
|
5
|
+
return 'start';
|
|
6
|
+
}
|
|
7
|
+
get inputSchema() {
|
|
8
|
+
return {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
get dataSourceSchema() {
|
|
14
|
+
return {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
payload: { type: 'object', properties: {} }
|
|
18
|
+
},
|
|
19
|
+
required: ['payload']
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
get outputSchema() {
|
|
23
|
+
return {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
payload: { type: 'object', properties: {} }
|
|
27
|
+
},
|
|
28
|
+
required: ['payload']
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
renderNode() {
|
|
32
|
+
const { w, h } = this.size || { w: 48, h: 48 };
|
|
33
|
+
const r = Math.min(w, h) / 2 - 1;
|
|
34
|
+
return svg `
|
|
35
|
+
<circle class="node-outline" cx="0" cy="0" r="${r}" fill="#d4edda" stroke="#000" stroke-width="1" />
|
|
36
|
+
<text class="node-label" x="0" y="5" text-anchor="middle">${this.label}</text>
|
|
37
|
+
`;
|
|
38
|
+
}
|
|
39
|
+
get anchorModels() {
|
|
40
|
+
return [{ id: 'out', type: 'out', pos: { x: 0, y: 24 } }];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=start-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-event.js","sourceRoot":"","sources":["../../../src/nodes/start-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,KAAK,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,MAAM,OAAO,UAAW,SAAQ,gBAAgB;IAC9C,IAAI,IAAI;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,WAAW;QACb,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf,CAAA;IACH,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAC5C;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAC5C;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB,CAAA;IACH,CAAC;IAED,UAAU;QACR,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEhC,OAAO,GAAG,CAAA;sDACwC,CAAC;kEACW,IAAI,CAAC,KAAK;KACvE,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3D,CAAC;CACF","sourcesContent":["import { svg, SVGTemplateResult } from 'lit'\nimport { AnchorModel, FlowDataSchema } from '../types.js'\nimport { FlowNodeAbstract } from '../base/flow-node-abstract.js'\n\nexport class StartEvent extends FlowNodeAbstract {\n get type() {\n return 'start'\n }\n\n get inputSchema(): FlowDataSchema {\n return {\n type: 'object',\n properties: {}\n }\n }\n\n get dataSourceSchema(): FlowDataSchema {\n return {\n type: 'object',\n properties: {\n payload: { type: 'object', properties: {} }\n },\n required: ['payload']\n }\n }\n\n get outputSchema(): FlowDataSchema {\n return {\n type: 'object',\n properties: {\n payload: { type: 'object', properties: {} }\n },\n required: ['payload']\n }\n }\n\n renderNode(): SVGTemplateResult {\n const { w, h } = this.size || { w: 48, h: 48 }\n const r = Math.min(w, h) / 2 - 1\n\n return svg`\n <circle class=\"node-outline\" cx=\"0\" cy=\"0\" r=\"${r}\" fill=\"#d4edda\" stroke=\"#000\" stroke-width=\"1\" />\n <text class=\"node-label\" x=\"0\" y=\"5\" text-anchor=\"middle\">${this.label}</text>\n `\n }\n\n get anchorModels(): AnchorModel[] {\n return [{ id: 'out', type: 'out', pos: { x: 0, y: 24 } }]\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SVGTemplateResult } from 'lit';
|
|
2
|
+
import { AnchorModel } from '../types.js';
|
|
3
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
4
|
+
export declare class Subflow extends FlowNodeAbstract {
|
|
5
|
+
get type(): string;
|
|
6
|
+
renderNode(): SVGTemplateResult;
|
|
7
|
+
get anchorModels(): AnchorModel[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
3
|
+
export class Subflow extends FlowNodeAbstract {
|
|
4
|
+
get type() {
|
|
5
|
+
return 'subflow';
|
|
6
|
+
}
|
|
7
|
+
renderNode() {
|
|
8
|
+
const { w, h } = this.size || { w: 120, h: 60 };
|
|
9
|
+
const x = -w / 2;
|
|
10
|
+
const y = -h / 2;
|
|
11
|
+
const gap = h * 0.2;
|
|
12
|
+
return svg `
|
|
13
|
+
<rect class="node-outline" x="${x}" y="${y}" width="${w}" height="${h}" fill="#e2e3f3" stroke-width="1" stroke="#666"/>
|
|
14
|
+
<rect class="node-inner" x="${x + gap / 2}" y="${y + gap / 2}" width="${w - gap}" height="${h - gap}" fill="#d6e0f5" stroke-width="1" stroke="#000"/>
|
|
15
|
+
|
|
16
|
+
<text class="node-label" x="0" y="-5" text-anchor="middle">${this.label}</text>
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
get anchorModels() {
|
|
20
|
+
const { w, h } = this.size || { w: 120, h: 60 };
|
|
21
|
+
return [
|
|
22
|
+
{ id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } },
|
|
23
|
+
{ id: 'out', type: 'out', pos: { x: 0, y: h / 2 } }
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=subflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subflow.js","sourceRoot":"","sources":["../../../src/nodes/subflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,KAAK,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,MAAM,OAAO,OAAQ,SAAQ,gBAAgB;IAC3C,IAAI,IAAI;QACN,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,UAAU;QACR,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAEnB,OAAO,GAAG,CAAA;sCACwB,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;oCACvC,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG;;mEAEtC,IAAI,CAAC,KAAK;KACxE,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;QAE/C,OAAO;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAClD,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;SACpD,CAAA;IACH,CAAC;CACF","sourcesContent":["import { svg, SVGTemplateResult } from 'lit'\nimport { AnchorModel } from '../types.js'\nimport { FlowNodeAbstract } from '../base/flow-node-abstract.js'\n\nexport class Subflow extends FlowNodeAbstract {\n get type() {\n return 'subflow'\n }\n\n renderNode(): SVGTemplateResult {\n const { w, h } = this.size || { w: 120, h: 60 }\n const x = -w / 2\n const y = -h / 2\n const gap = h * 0.2\n\n return svg`\n <rect class=\"node-outline\" x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" fill=\"#e2e3f3\" stroke-width=\"1\" stroke=\"#666\"/>\n <rect class=\"node-inner\" x=\"${x + gap / 2}\" y=\"${y + gap / 2}\" width=\"${w - gap}\" height=\"${h - gap}\" fill=\"#d6e0f5\" stroke-width=\"1\" stroke=\"#000\"/>\n\n <text class=\"node-label\" x=\"0\" y=\"-5\" text-anchor=\"middle\">${this.label}</text>\n `\n }\n\n get anchorModels(): AnchorModel[] {\n const { w, h } = this.size || { w: 120, h: 60 }\n\n return [\n { id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } },\n { id: 'out', type: 'out', pos: { x: 0, y: h / 2 } }\n ]\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SVGTemplateResult } from 'lit';
|
|
2
|
+
import { PropertySpec } from '@operato/property-editor';
|
|
3
|
+
import { AnchorModel } from '../types.js';
|
|
4
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
5
|
+
export declare class Task extends FlowNodeAbstract {
|
|
6
|
+
private _propertySpecs;
|
|
7
|
+
get propertySpecs(): PropertySpec[] | null;
|
|
8
|
+
set propertySpecs(propertySpecs: PropertySpec[] | null);
|
|
9
|
+
get type(): string;
|
|
10
|
+
get inputSchema(): import("../types.js").FlowDataSchema;
|
|
11
|
+
renderNode(): SVGTemplateResult;
|
|
12
|
+
get anchorModels(): AnchorModel[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { FlowNodeAbstract } from '../base/flow-node-abstract.js';
|
|
3
|
+
import { convertPropertySpecsToSchema } from '../utils/generate-mapping-scheme.js';
|
|
4
|
+
export class Task extends FlowNodeAbstract {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this._propertySpecs = [
|
|
8
|
+
{
|
|
9
|
+
type: 'string',
|
|
10
|
+
name: 'message',
|
|
11
|
+
label: 'message'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
type: 'scenario-step-input',
|
|
15
|
+
name: 'accessor',
|
|
16
|
+
label: 'accessor'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
type: 'select',
|
|
20
|
+
name: 'level',
|
|
21
|
+
label: 'level',
|
|
22
|
+
property: {
|
|
23
|
+
options: ['info', 'warn', 'error']
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
get propertySpecs() {
|
|
29
|
+
return this._propertySpecs;
|
|
30
|
+
}
|
|
31
|
+
set propertySpecs(propertySpecs) {
|
|
32
|
+
this._propertySpecs = propertySpecs;
|
|
33
|
+
}
|
|
34
|
+
get type() {
|
|
35
|
+
return 'task';
|
|
36
|
+
}
|
|
37
|
+
get inputSchema() {
|
|
38
|
+
return convertPropertySpecsToSchema(this.propertySpecs || []);
|
|
39
|
+
}
|
|
40
|
+
renderNode() {
|
|
41
|
+
const { w, h } = this.size || { w: 120, h: 60 };
|
|
42
|
+
const x = -w / 2;
|
|
43
|
+
const y = -h / 2;
|
|
44
|
+
return svg `
|
|
45
|
+
<rect class="node-outline" x="${x}" y="${y}" width="${w}" height="${h}" fill="#d1ecf1" stroke-width="1"/>
|
|
46
|
+
<text class="node-label" x="0" y="5" text-anchor="middle">${this.label}</text>
|
|
47
|
+
`;
|
|
48
|
+
}
|
|
49
|
+
get anchorModels() {
|
|
50
|
+
const { w, h } = this.size || { w: 120, h: 60 };
|
|
51
|
+
return [
|
|
52
|
+
{ id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } },
|
|
53
|
+
{ id: 'out', type: 'out', pos: { x: 0, y: h / 2 } }
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/nodes/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,KAAK,CAAA;AAK5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAA;AAElF,MAAM,OAAO,IAAK,SAAQ,gBAAgB;IAA1C;;QACU,mBAAc,GAA0B;YAC9C;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;aACjB;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;aAClB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;iBACnC;aACF;SACF,CAAA;IAqCH,CAAC;IAnCC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,IAAI,aAAa,CAAC,aAAoC;QACpD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAA;IACrC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,WAAW;QACb,OAAO,4BAA4B,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,UAAU;QACR,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAEhB,OAAO,GAAG,CAAA;sCACwB,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;kEACT,IAAI,CAAC,KAAK;KACvE,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;QAE/C,OAAO;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAClD,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;SACpD,CAAA;IACH,CAAC;CACF","sourcesContent":["import { svg, SVGTemplateResult } from 'lit'\n\nimport { PropertySpec } from '@operato/property-editor'\n\nimport { AnchorModel } from '../types.js'\nimport { FlowNodeAbstract } from '../base/flow-node-abstract.js'\nimport { convertPropertySpecsToSchema } from '../utils/generate-mapping-scheme.js'\n\nexport class Task extends FlowNodeAbstract {\n private _propertySpecs: PropertySpec[] | null = [\n {\n type: 'string',\n name: 'message',\n label: 'message'\n },\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'select',\n name: 'level',\n label: 'level',\n property: {\n options: ['info', 'warn', 'error']\n }\n }\n ]\n\n get propertySpecs(): PropertySpec[] | null {\n return this._propertySpecs\n }\n\n set propertySpecs(propertySpecs: PropertySpec[] | null) {\n this._propertySpecs = propertySpecs\n }\n\n get type() {\n return 'task'\n }\n\n get inputSchema() {\n return convertPropertySpecsToSchema(this.propertySpecs || [])\n }\n\n renderNode(): SVGTemplateResult {\n const { w, h } = this.size || { w: 120, h: 60 }\n const x = -w / 2\n const y = -h / 2\n\n return svg`\n <rect class=\"node-outline\" x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" fill=\"#d1ecf1\" stroke-width=\"1\"/>\n <text class=\"node-label\" x=\"0\" y=\"5\" text-anchor=\"middle\">${this.label}</text>\n `\n }\n\n get anchorModels(): AnchorModel[] {\n const { w, h } = this.size || { w: 120, h: 60 }\n\n return [\n { id: 'in', type: 'in', pos: { x: 0, y: -h / 2 } },\n { id: 'out', type: 'out', pos: { x: 0, y: h / 2 } }\n ]\n }\n}\n"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
2
|
+
import './components/flow-sidebar.js';
|
|
3
|
+
import './components/flow-toolbar.js';
|
|
4
|
+
import './components/flow-side-panel.js';
|
|
5
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
6
|
+
import { FlowNodeImplementation, FlowNode, FlowEdge, FlowNodeModel, FlowEdgeModel, FlowEntity } from './types.js';
|
|
7
|
+
import { FlowContextType } from './context/flow-context.js';
|
|
8
|
+
export declare class OxFlowEditor extends LitElement {
|
|
9
|
+
static styles: import("lit").CSSResult[];
|
|
10
|
+
static getUniqueId(): string;
|
|
11
|
+
availableNodeTypes: {
|
|
12
|
+
[type: string]: FlowNodeImplementation;
|
|
13
|
+
};
|
|
14
|
+
model: {
|
|
15
|
+
nodes: FlowNodeModel[];
|
|
16
|
+
edges: FlowEdgeModel[];
|
|
17
|
+
};
|
|
18
|
+
private mode;
|
|
19
|
+
private logs;
|
|
20
|
+
private edgeGuide;
|
|
21
|
+
private flowExecutor?;
|
|
22
|
+
private _nodes;
|
|
23
|
+
private _edges;
|
|
24
|
+
private _selected;
|
|
25
|
+
private pointerEventHandler;
|
|
26
|
+
private keydownEventHandler;
|
|
27
|
+
private dndEventHandler;
|
|
28
|
+
private flowContext;
|
|
29
|
+
private flowEditContext;
|
|
30
|
+
private flowDebugContext;
|
|
31
|
+
/** 렌더링 */
|
|
32
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
33
|
+
connectedCallback(): void;
|
|
34
|
+
disconnectedCallback(): void;
|
|
35
|
+
updated(changes: PropertyValues<this>): void;
|
|
36
|
+
setAvailableNodeTypes(availableNodeTypes: {
|
|
37
|
+
[type: string]: FlowNodeImplementation;
|
|
38
|
+
}): void;
|
|
39
|
+
get context(): FlowContextType;
|
|
40
|
+
getModel(): {
|
|
41
|
+
nodes: {
|
|
42
|
+
id: string;
|
|
43
|
+
label: string | undefined;
|
|
44
|
+
type: string;
|
|
45
|
+
pos: {
|
|
46
|
+
x: number;
|
|
47
|
+
y: number;
|
|
48
|
+
};
|
|
49
|
+
size: {
|
|
50
|
+
w: number;
|
|
51
|
+
h: number;
|
|
52
|
+
};
|
|
53
|
+
options: {
|
|
54
|
+
[key: string]: any;
|
|
55
|
+
} | undefined;
|
|
56
|
+
}[];
|
|
57
|
+
edges: {
|
|
58
|
+
id: string;
|
|
59
|
+
label: string | undefined;
|
|
60
|
+
from: import("./types.js").AnchorPointer;
|
|
61
|
+
to: import("./types.js").AnchorPointer;
|
|
62
|
+
weight: number | undefined;
|
|
63
|
+
}[];
|
|
64
|
+
};
|
|
65
|
+
get nodes(): FlowNode[];
|
|
66
|
+
set nodes(nodes: FlowNode[]);
|
|
67
|
+
get edges(): FlowEdge[];
|
|
68
|
+
set edges(edges: FlowEdge[]);
|
|
69
|
+
get selected(): FlowEntity | null;
|
|
70
|
+
updateFlowContext(partial: Partial<FlowContextType>): void;
|
|
71
|
+
set selected(selected: FlowEntity | null);
|
|
72
|
+
addFlowNode(node: FlowNode, withSelect?: boolean): void;
|
|
73
|
+
addFlowEdge(edge: FlowEdge, withSelect?: boolean): void;
|
|
74
|
+
drawEdgeGuide(edgeGuide: any): void;
|
|
75
|
+
/** 노드 삭제 */
|
|
76
|
+
deleteEntity(target: FlowEntity): void;
|
|
77
|
+
private setMode;
|
|
78
|
+
/** 플로우 실행 */
|
|
79
|
+
private executeFlow;
|
|
80
|
+
/** 플로우 일시정지 */
|
|
81
|
+
private pauseFlow;
|
|
82
|
+
/** 플로우 정지 */
|
|
83
|
+
private stopFlow;
|
|
84
|
+
private stepOver;
|
|
85
|
+
private stepInto;
|
|
86
|
+
private stepOut;
|
|
87
|
+
private continueExecution;
|
|
88
|
+
onNodeUpdated(updatedNode: FlowNode): void;
|
|
89
|
+
addLog(log: string): void;
|
|
90
|
+
private toggleBreakpoint;
|
|
91
|
+
private setCurrentExecutionNode;
|
|
92
|
+
private runLayout;
|
|
93
|
+
private onDblClick;
|
|
94
|
+
}
|