@kiberon-labs/behave-graph-flow 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.fallowrc.json +16 -0
- package/.storybook/main.ts +32 -0
- package/.storybook/preview.ts +16 -0
- package/.storybook/styles.css +10 -0
- package/.storybook/vscode.css +814 -0
- package/.turbo/turbo-build.log +7 -0
- package/LICENSE +6 -0
- package/README.md +2 -2
- package/data/Polynomial.json +510 -0
- package/data/sequence.json +337 -0
- package/data/trigger-event.json +241 -0
- package/data/variable-change.json +210 -0
- package/dist/entry.css +4 -0
- package/dist/index.css +39 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +2282 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14873 -0
- package/dist/index.js.map +1 -0
- package/docs/notifications.md +246 -0
- package/docs/protocol.md +679 -0
- package/docs/specifics.md +191 -0
- package/package.json +85 -21
- package/postcss.config.ts +3 -4
- package/src/annotations/index.ts +32 -0
- package/src/components/FloatingToolbar/index.module.css +45 -0
- package/src/components/FloatingToolbar/index.tsx +256 -0
- package/src/components/Flow.tsx +276 -75
- package/src/components/contextMenus/NodePicker.module.css +274 -0
- package/src/components/contextMenus/NodePicker.tsx +481 -0
- package/src/components/contextMenus/edge.tsx +108 -0
- package/src/components/contextMenus/node.tsx +155 -0
- package/src/components/contextMenus/selection.tsx +77 -0
- package/src/components/controls/any/index.tsx +8 -0
- package/src/components/controls/boolean/index.tsx +13 -0
- package/src/components/controls/colorPicker/InputPopover.module.css +100 -0
- package/src/components/controls/colorPicker/InputPopover.tsx +31 -0
- package/src/components/controls/colorPicker/index.module.css +18 -0
- package/src/components/controls/colorPicker/index.tsx +61 -0
- package/src/components/controls/number/index.tsx +35 -0
- package/src/components/controls/string/index.tsx +16 -0
- package/src/components/edges/index.tsx +469 -0
- package/src/components/edges/offsetBezier.ts +134 -0
- package/src/components/hotKeys.tsx +20 -0
- package/src/components/layoutController/index.module.css +10 -0
- package/src/components/layoutController/index.tsx +117 -0
- package/src/components/layoutController/utils.ts +205 -0
- package/src/components/menubar/defaults.tsx +480 -0
- package/src/components/menubar/index.tsx +49 -0
- package/src/components/menubar/menuItem.module.css +16 -0
- package/src/components/menubar/menuItem.tsx +32 -0
- package/src/components/nodes/behave/Node.module.css +23 -0
- package/src/components/nodes/behave/Node.tsx +176 -0
- package/src/components/nodes/behave/NodeContainer.module.css +87 -0
- package/src/components/nodes/behave/NodeContainer.tsx +46 -0
- package/src/components/nodes/behave/index.tsx +14 -0
- package/src/components/nodes/comment/FormatToolbar.tsx +118 -0
- package/src/components/nodes/comment/comment.tsx +103 -0
- package/src/components/nodes/comment/styles.module.css +150 -0
- package/src/components/nodes/group/index.tsx +109 -0
- package/src/components/nodes/wrapper/index.tsx +73 -0
- package/src/components/nodes/wrapper/styles.module.css +113 -0
- package/src/components/notifications/NotificationProvider.tsx +81 -0
- package/src/components/notifications/index.ts +2 -0
- package/src/components/notifications/utils.ts +71 -0
- package/src/components/panels/alignment/index.module.css +20 -0
- package/src/components/panels/alignment/index.tsx +244 -0
- package/src/components/panels/base/index.tsx +5 -0
- package/src/components/panels/base/styles.module.css +12 -0
- package/src/components/panels/conversation/index.module.css +151 -0
- package/src/components/panels/conversation/index.tsx +162 -0
- package/src/components/panels/events/CustomEventsEditor.tsx +384 -0
- package/src/components/panels/events/EditEventPanel.tsx +315 -0
- package/src/components/panels/events/ManageEventsPanel.tsx +98 -0
- package/src/components/panels/events/index.tsx +23 -0
- package/src/components/panels/events/styles.module.css +236 -0
- package/src/components/panels/history/index.tsx +92 -0
- package/src/components/panels/history/styles.module.css +106 -0
- package/src/components/panels/keymaps/index.module.css +78 -0
- package/src/components/panels/keymaps/index.tsx +167 -0
- package/src/components/panels/layers/index.tsx +240 -0
- package/src/components/panels/layers/styles.module.css +110 -0
- package/src/components/panels/legend/index.module.css +6 -0
- package/src/components/panels/legend/index.tsx +76 -0
- package/src/components/panels/logs/index.module.css +212 -0
- package/src/components/panels/logs/index.tsx +288 -0
- package/src/components/panels/nodeInputs/InputControl.tsx +63 -0
- package/src/components/panels/nodeInputs/InputsGroup.tsx +64 -0
- package/src/components/panels/nodeInputs/MultipleNodesView.tsx +37 -0
- package/src/components/panels/nodeInputs/NodeSettings.tsx +92 -0
- package/src/components/panels/nodeInputs/NodeTitleEditor.tsx +125 -0
- package/src/components/panels/nodeInputs/OutputsGroup.tsx +65 -0
- package/src/components/panels/nodeInputs/SocketGenerators.tsx +32 -0
- package/src/components/panels/nodeInputs/index.module.css +284 -0
- package/src/components/panels/nodeInputs/index.tsx +339 -0
- package/src/components/panels/nodeInputs/useNodeHandlers.ts +76 -0
- package/src/components/panels/nodeInputs/useNodeInputsData.ts +173 -0
- package/src/components/panels/nodePicker/index.tsx +115 -0
- package/src/components/panels/panel/index.module.css +66 -0
- package/src/components/panels/panel/index.tsx +88 -0
- package/src/components/panels/search/index.module.css +66 -0
- package/src/components/panels/search/index.tsx +215 -0
- package/src/components/panels/systemSettings/index.tsx +206 -0
- package/src/components/panels/systemSettings/styles.module.css +11 -0
- package/src/components/panels/traces/GridLines.tsx +38 -0
- package/src/components/panels/traces/TimeGrid.tsx +48 -0
- package/src/components/panels/traces/TraceLane.tsx +62 -0
- package/src/components/panels/traces/TraceTooltip.tsx +22 -0
- package/src/components/panels/traces/TracesHeader.tsx +56 -0
- package/src/components/panels/traces/index.module.css +166 -0
- package/src/components/panels/traces/index.tsx +294 -0
- package/src/components/panels/traces/types.ts +48 -0
- package/src/components/panels/traces/useDerivedSpans.ts +212 -0
- package/src/components/panels/traces/utils.ts +25 -0
- package/src/components/panels/variables/CreateVariableScreen.tsx +162 -0
- package/src/components/panels/variables/ManageVariablesScreen.tsx +144 -0
- package/src/components/panels/variables/index.tsx +125 -0
- package/src/components/panels/variables/styles.module.css +236 -0
- package/src/components/primitives/icon.module.css +45 -0
- package/src/components/primitives/icon.tsx +38 -0
- package/src/components/sockets/input/index.tsx +76 -0
- package/src/components/sockets/input/styles.module.css +27 -0
- package/src/components/sockets/output/index.tsx +61 -0
- package/src/components/sockets/output/styles.module.css +27 -0
- package/src/css/prosemirror.css +57 -0
- package/src/css/rc-dock.css +112 -0
- package/src/css/rc-menu.css +100 -0
- package/src/css/vars.css +14 -0
- package/src/css/vscode.css +13 -0
- package/src/entry.css +4 -0
- package/src/generators/CustomEventOnTriggeredGenerator.tsx +85 -0
- package/src/generators/SequenceGenerator.tsx +104 -0
- package/src/generators/SwitchOnIntegerGenerator.tsx +256 -0
- package/src/generators/SwitchOnStringGenerator.tsx +263 -0
- package/src/generators/registerDefaultGenerators.ts +34 -0
- package/src/hooks/useBehaveGraphFlow.ts +17 -16
- package/src/hooks/useDetachNodes.ts +39 -0
- package/src/hooks/useFlowHandlers.ts +115 -29
- package/src/hooks/useWasdPan.ts +188 -0
- package/src/index.css +146 -0
- package/src/index.ts +36 -18
- package/src/layout/dagre.tsx +119 -0
- package/src/layout/elk.ts +200 -0
- package/src/plugin/alignment/index.ts +81 -0
- package/src/plugin/docs/index.tsx +299 -0
- package/src/plugin/docs/panel/index.tsx +200 -0
- package/src/plugin/docs/panel/styles.module.css +174 -0
- package/src/plugin/graphrunner/actions.ts +253 -0
- package/src/plugin/graphrunner/buttons.tsx +87 -0
- package/src/plugin/graphrunner/client.ts +704 -0
- package/src/plugin/graphrunner/index.tsx +255 -0
- package/src/plugin/graphrunner/panel.tsx +386 -0
- package/src/plugin/graphrunner/runner.ts +358 -0
- package/src/plugin/graphrunner/session.ts +243 -0
- package/src/plugin/graphrunner/store.ts +206 -0
- package/src/plugin/graphrunner/styles.module.css +211 -0
- package/src/plugin/graphrunner/transport.ts +224 -0
- package/src/plugin/graphrunner/types.ts +672 -0
- package/src/plugin/graphrunner-local/execution-utils.ts +457 -0
- package/src/plugin/graphrunner-local/index.tsx +166 -0
- package/src/plugin/graphrunner-local/panel.tsx +231 -0
- package/src/plugin/graphrunner-local/store.ts +41 -0
- package/src/plugin/graphrunner-local/styles.module.css +101 -0
- package/src/plugin/graphrunner-local/transport.ts +1372 -0
- package/src/plugin/graphrunner-local/types.ts +10 -0
- package/src/plugin/graphrunner-webworker/graph-executor.worker.ts +633 -0
- package/src/plugin/graphrunner-webworker/index.tsx +146 -0
- package/src/plugin/graphrunner-webworker/panel.tsx +173 -0
- package/src/plugin/graphrunner-webworker/store.ts +89 -0
- package/src/plugin/graphrunner-webworker/types.ts +17 -0
- package/src/plugin/graphrunner-webworker/worker-transport.ts +123 -0
- package/src/plugin/realtime/realtimeRunner.ts +570 -0
- package/src/specifics/CustomEventOnTriggeredSpecific.tsx +92 -0
- package/src/specifics/CustomEventTriggerSpecific.tsx +141 -0
- package/src/specifics/VariableGetSpecific.tsx +110 -0
- package/src/specifics/VariableSetSpecific.tsx +110 -0
- package/src/specifics/registerDefaultSpecifics.ts +5 -0
- package/src/store/actions.tsx +698 -0
- package/src/store/chat.ts +73 -0
- package/src/store/controls.tsx +62 -0
- package/src/store/documentation.tsx +69 -0
- package/src/store/events.tsx +116 -0
- package/src/store/flow.tsx +245 -0
- package/src/store/graphRunnerClient.ts +110 -0
- package/src/store/hotKeys.tsx +323 -0
- package/src/store/layers.ts +259 -0
- package/src/store/legend.tsx +76 -0
- package/src/store/logs.ts +28 -0
- package/src/store/menubar.ts +41 -0
- package/src/store/refs.ts +84 -0
- package/src/store/registry.ts +43 -0
- package/src/store/selection.ts +22 -0
- package/src/store/settings.ts +99 -0
- package/src/store/socketGenerator.tsx +54 -0
- package/src/store/specific.tsx +75 -0
- package/src/store/specs.tsx +35 -0
- package/src/store/tabs.ts +278 -0
- package/src/store/toolbar.tsx +45 -0
- package/src/store/traces.ts +240 -0
- package/src/store/variables.ts +37 -0
- package/src/system/graph.ts +134 -0
- package/src/system/index.ts +3 -0
- package/src/system/notifications.ts +98 -0
- package/src/system/plugin.ts +27 -0
- package/src/system/provider.tsx +22 -0
- package/src/system/pubsub.ts +323 -0
- package/src/system/system.ts +223 -0
- package/src/system/tabLoader.tsx +265 -0
- package/src/system/undoRedo.ts +103 -0
- package/src/transformers/Uigraph.ts +60 -0
- package/src/transformers/behaveToFlow.ts +16 -4
- package/src/transformers/flowToBehave.ts +32 -12
- package/src/types/NodeMetadata.ts +27 -0
- package/src/types/graph.ts +49 -0
- package/src/types/nodes.ts +45 -0
- package/src/types.ts +16 -0
- package/src/util/colors.ts +1 -29
- package/src/util/downloadJson.ts +18 -0
- package/src/util/extractNodeMetadata.ts +16 -0
- package/src/util/getPickerFilters.ts +1 -1
- package/src/util/isBehaveNode.ts +6 -0
- package/src/util/isValidConnection.ts +28 -15
- package/src/util/mergeSockets.ts +29 -0
- package/src/util/serializeVariables.ts +66 -0
- package/src/util/sockets.ts +43 -0
- package/stories/apex/layoutController/example-graph.worker.ts +39 -0
- package/stories/apex/layoutController/index.stories.tsx +48 -0
- package/stories/apex/layoutController/webworker.stories.tsx +103 -0
- package/stories/apex/menubar/menubar.stories.tsx +19 -0
- package/stories/components/colorpicker/index.stories.tsx +20 -0
- package/stories/components/contextMenus/edge.stories.tsx +32 -0
- package/stories/components/contextMenus/node.stories.tsx +26 -0
- package/stories/components/contextMenus/nodePicker.stories.tsx +115 -0
- package/stories/components/controls/any/index.stories.tsx +19 -0
- package/stories/components/controls/boolean/index.stories.tsx +19 -0
- package/stories/components/controls/colorPicker/index.stories.tsx +49 -0
- package/stories/components/controls/number/index.stories.tsx +19 -0
- package/stories/components/controls/string/index.stories.tsx +19 -0
- package/stories/components/nodes/behaveNode.stories.tsx +108 -0
- package/stories/components/nodes/comment.stories.tsx +106 -0
- package/stories/components/panels/alignment.stories.tsx +24 -0
- package/stories/components/panels/events.stories.tsx +38 -0
- package/stories/components/panels/graphRunner.stories.tsx +317 -0
- package/stories/components/panels/history.stories.tsx +37 -0
- package/stories/components/panels/keymaps.stories.tsx +21 -0
- package/stories/components/panels/legend.stories.tsx +37 -0
- package/stories/components/panels/logs.stories.tsx +24 -0
- package/stories/components/panels/nodeInputs.stories.tsx +21 -0
- package/stories/components/panels/nodePicker.stories.tsx +37 -0
- package/stories/components/panels/panel.stories.tsx +39 -0
- package/stories/components/panels/search.stories.tsx +24 -0
- package/stories/components/panels/systemSettings.stories.tsx +26 -0
- package/stories/components/panels/traces.stories.tsx +225 -0
- package/stories/components/panels/variables.stories.tsx +24 -0
- package/stories/defaults/defaultStoryProvider.tsx +167 -0
- package/stories/defaults/systemGenerator.ts +38 -0
- package/tests/components/edges/offsetBezier.test.ts +51 -0
- package/tests/components/layoutController/utils.test.ts +68 -0
- package/tests/components/panels/traces/utils.test.ts +52 -0
- package/tests/flowToBehave.test.ts +26 -4
- package/tests/notifications.test.ts +87 -0
- package/tests/saveLoad.test.ts +372 -0
- package/tests/util/calculateNewEdge.test.ts +98 -0
- package/tests/util/getSocketsByNodeTypeAndHandleType.test.ts +31 -0
- package/tests/util/hasPositionMetaData.test.ts +33 -0
- package/tests/util/isBehaveNode.test.ts +22 -0
- package/tests/util/isHandleConnected.test.ts +37 -0
- package/tests/util/mergeSockets.test.ts +43 -0
- package/tests/visual/README.md +64 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-alignment-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-conversation-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-events-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-history-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-keymaps-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-layers-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-legend-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-logs-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodeInputs-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodePicker-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-panel-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-search-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-systemSettings-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-traces-chromium-win32.png +0 -0
- package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-variables-chromium-win32.png +0 -0
- package/tests/visual/panels.visual.test.tsx +76 -0
- package/tsconfig.base.json +39 -0
- package/tsconfig.json +18 -59
- package/tsconfig.prod.json +23 -0
- package/tsdown.config.ts +15 -3
- package/typedoc.json +7 -7
- package/vite.config.js +7 -0
- package/vitest.config.ts +5 -2
- package/vitest.visual.config.ts +48 -0
- package/src/components/AutoSizeInput.tsx +0 -65
- package/src/components/Controls.tsx +0 -87
- package/src/components/InputSocket.tsx +0 -142
- package/src/components/Node.tsx +0 -68
- package/src/components/NodeContainer.tsx +0 -46
- package/src/components/NodePicker.tsx +0 -77
- package/src/components/OutputSocket.tsx +0 -58
- package/src/components/modals/ClearModal.tsx +0 -40
- package/src/components/modals/HelpModal.tsx +0 -36
- package/src/components/modals/LoadModal.tsx +0 -96
- package/src/components/modals/Modal.tsx +0 -64
- package/src/components/modals/SaveModal.tsx +0 -60
- package/src/hooks/useCustomNodeTypes.tsx +0 -31
- package/src/hooks/useGraphRunner.ts +0 -104
- package/src/hooks/useMergeMap.ts +0 -14
- package/src/hooks/useNodeSpecJson.ts +0 -20
- package/src/hooks/useQueriableDefinitions.ts +0 -22
- package/src/styles.css +0 -8
- package/tailwind.config.ts +0 -19
- package/tests/tsconfig.json +0 -10
- /package/src/{types.d.ts → types-declarations.d.ts} +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { EventsPanel } from '@/components/panels/events';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof EventsPanel> = {
|
|
7
|
+
title: 'Components/Panels/EventsPanel',
|
|
8
|
+
component: EventsPanel,
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<DefaultSystemProvider>
|
|
12
|
+
<Story />
|
|
13
|
+
</DefaultSystemProvider>
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
parameters: {
|
|
17
|
+
layout: 'fullscreen',
|
|
18
|
+
docs: {
|
|
19
|
+
description: {
|
|
20
|
+
component: 'EventsPanel component for displaying and managing events.'
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export default meta;
|
|
26
|
+
|
|
27
|
+
type Story = StoryObj<typeof EventsPanel>;
|
|
28
|
+
|
|
29
|
+
export const Default: Story = {
|
|
30
|
+
args: {},
|
|
31
|
+
parameters: {
|
|
32
|
+
docs: {
|
|
33
|
+
description: {
|
|
34
|
+
story: 'Default EventsPanel.'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { GraphRunnerPanel } from '@/plugin/graphrunner/panel';
|
|
3
|
+
import { graphRunnerClientPlugin } from '@/plugin/graphrunner';
|
|
4
|
+
import { System } from '@/system/system';
|
|
5
|
+
import {
|
|
6
|
+
registerCoreProfile,
|
|
7
|
+
writeNodeSpecsToJSON
|
|
8
|
+
} from '@kiberon-labs/behave-graph';
|
|
9
|
+
import { SystemProvider } from '@/system/provider';
|
|
10
|
+
|
|
11
|
+
const meta: Meta<typeof GraphRunnerPanel> = {
|
|
12
|
+
title: 'Components/Panels/GraphRunner',
|
|
13
|
+
component: GraphRunnerPanel,
|
|
14
|
+
parameters: {
|
|
15
|
+
layout: 'fullscreen',
|
|
16
|
+
docs: {
|
|
17
|
+
description: {
|
|
18
|
+
component:
|
|
19
|
+
'GraphRunnerPanel component for managing remote graph execution via WebSocket connections.'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default meta;
|
|
26
|
+
type Story = StoryObj<typeof GraphRunnerPanel>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Default story showing the GraphRunnerPanel in disconnected state
|
|
30
|
+
*/
|
|
31
|
+
export const Disconnected: Story = {
|
|
32
|
+
render: () => {
|
|
33
|
+
// Create a system with the graphRunnerClient plugin
|
|
34
|
+
const coreRegistry = registerCoreProfile({
|
|
35
|
+
nodes: {},
|
|
36
|
+
values: {},
|
|
37
|
+
dependencies: {}
|
|
38
|
+
});
|
|
39
|
+
const nodeSpecs = writeNodeSpecsToJSON(coreRegistry);
|
|
40
|
+
const nodeRegistry = {
|
|
41
|
+
values: coreRegistry.values,
|
|
42
|
+
specs: nodeSpecs
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const system = new System(nodeRegistry);
|
|
46
|
+
system.registerPlugin(graphRunnerClientPlugin);
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<SystemProvider value={system}>
|
|
50
|
+
<GraphRunnerPanel system={system} />
|
|
51
|
+
</SystemProvider>
|
|
52
|
+
);
|
|
53
|
+
},
|
|
54
|
+
parameters: {
|
|
55
|
+
docs: {
|
|
56
|
+
description: {
|
|
57
|
+
story: 'Default disconnected state with connection form.'
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Story showing the GraphRunnerPanel with connection configuration
|
|
65
|
+
*/
|
|
66
|
+
export const WithConfiguration: Story = {
|
|
67
|
+
render: () => {
|
|
68
|
+
const coreRegistry = registerCoreProfile({
|
|
69
|
+
nodes: {},
|
|
70
|
+
values: {},
|
|
71
|
+
dependencies: {}
|
|
72
|
+
});
|
|
73
|
+
const nodeSpecs = writeNodeSpecsToJSON(coreRegistry);
|
|
74
|
+
const nodeRegistry = {
|
|
75
|
+
values: coreRegistry.values,
|
|
76
|
+
specs: nodeSpecs
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const system = new System(nodeRegistry);
|
|
80
|
+
system.registerPlugin(graphRunnerClientPlugin);
|
|
81
|
+
|
|
82
|
+
// Pre-configure connection settings
|
|
83
|
+
system.runner.store.getState().setConnectionConfig({
|
|
84
|
+
url: 'ws://localhost:8080',
|
|
85
|
+
auth: { type: 'bearer' },
|
|
86
|
+
autoReconnect: true
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<SystemProvider value={system}>
|
|
91
|
+
<GraphRunnerPanel system={system} />
|
|
92
|
+
</SystemProvider>
|
|
93
|
+
);
|
|
94
|
+
},
|
|
95
|
+
parameters: {
|
|
96
|
+
docs: {
|
|
97
|
+
description: {
|
|
98
|
+
story: 'GraphRunnerPanel with pre-configured connection settings.'
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Story simulating a connected state with server metadata
|
|
106
|
+
*/
|
|
107
|
+
export const Connected: Story = {
|
|
108
|
+
render: () => {
|
|
109
|
+
const coreRegistry = registerCoreProfile({
|
|
110
|
+
nodes: {},
|
|
111
|
+
values: {},
|
|
112
|
+
dependencies: {}
|
|
113
|
+
});
|
|
114
|
+
const nodeSpecs = writeNodeSpecsToJSON(coreRegistry);
|
|
115
|
+
const nodeRegistry = {
|
|
116
|
+
values: coreRegistry.values,
|
|
117
|
+
specs: nodeSpecs
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const system = new System(nodeRegistry);
|
|
121
|
+
system.registerPlugin(graphRunnerClientPlugin);
|
|
122
|
+
|
|
123
|
+
const store = system.runner.store;
|
|
124
|
+
|
|
125
|
+
// Simulate connected state
|
|
126
|
+
store.getState().setConnectionState('connected');
|
|
127
|
+
store.getState().setConnectionConfig({
|
|
128
|
+
url: 'ws://localhost:8080',
|
|
129
|
+
auth: { type: 'none' },
|
|
130
|
+
autoReconnect: true
|
|
131
|
+
});
|
|
132
|
+
store.getState().setConnectionInfo({
|
|
133
|
+
serverId: 'demo-server-01',
|
|
134
|
+
userId: 'user-123',
|
|
135
|
+
sessionId: 'session-abc-456',
|
|
136
|
+
authenticated: true,
|
|
137
|
+
capabilities: {
|
|
138
|
+
execute: true,
|
|
139
|
+
pause: true,
|
|
140
|
+
step: true,
|
|
141
|
+
variables: true,
|
|
142
|
+
events: true
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Add sample server variables
|
|
147
|
+
store.getState().setServerVariables([
|
|
148
|
+
{ name: 'playerHealth', type: 'float', currentValue: 100 },
|
|
149
|
+
{ name: 'gameScore', type: 'integer', currentValue: 1500 },
|
|
150
|
+
{ name: 'playerName', type: 'string', currentValue: 'Hero' },
|
|
151
|
+
{ name: 'isGameActive', type: 'boolean', currentValue: true }
|
|
152
|
+
]);
|
|
153
|
+
|
|
154
|
+
// Add sample server events
|
|
155
|
+
store.getState().setServerEvents([
|
|
156
|
+
{
|
|
157
|
+
id: 'event-1',
|
|
158
|
+
name: 'onPlayerDamage',
|
|
159
|
+
description: 'Triggered when player takes damage',
|
|
160
|
+
readonly: true,
|
|
161
|
+
parameters: [
|
|
162
|
+
{ name: 'damage', valueTypeName: 'number', defaultValue: 0 },
|
|
163
|
+
{ name: 'source', valueTypeName: 'string', defaultValue: 'xx' }
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 'event-2',
|
|
168
|
+
name: 'onScoreUpdate',
|
|
169
|
+
description: 'Triggered when score changes',
|
|
170
|
+
readonly: true,
|
|
171
|
+
parameters: [
|
|
172
|
+
{ name: 'newScore', valueTypeName: 'number', defaultValue: 0 },
|
|
173
|
+
{ name: 'delta', valueTypeName: 'number', defaultValue: 0 }
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
]);
|
|
177
|
+
|
|
178
|
+
// Add sample node types
|
|
179
|
+
store.getState().setNodeTypes([
|
|
180
|
+
{
|
|
181
|
+
type: 'game/dealDamage',
|
|
182
|
+
label: 'Deal Damage',
|
|
183
|
+
description: 'Applies damage to a target',
|
|
184
|
+
category: 'Game',
|
|
185
|
+
inputs: [
|
|
186
|
+
{ name: 'target', type: 'string' },
|
|
187
|
+
{ name: 'amount', type: 'float' }
|
|
188
|
+
],
|
|
189
|
+
outputs: [{ name: 'success', type: 'boolean' }]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'game/updateScore',
|
|
193
|
+
label: 'Update Score',
|
|
194
|
+
description: 'Modifies the player score',
|
|
195
|
+
category: 'Game',
|
|
196
|
+
inputs: [{ name: 'delta', type: 'integer' }],
|
|
197
|
+
outputs: [{ name: 'newScore', type: 'integer' }]
|
|
198
|
+
}
|
|
199
|
+
]);
|
|
200
|
+
|
|
201
|
+
// Add sample message activity
|
|
202
|
+
store.getState().addMessageActivity('sent', {
|
|
203
|
+
type: 'connect',
|
|
204
|
+
id: 'msg-001'
|
|
205
|
+
});
|
|
206
|
+
store.getState().addMessageActivity('received', {
|
|
207
|
+
type: 'welcome',
|
|
208
|
+
id: 'msg-002',
|
|
209
|
+
serverId: 'demo-server-01',
|
|
210
|
+
capabilities: {
|
|
211
|
+
execute: true,
|
|
212
|
+
pause: true,
|
|
213
|
+
step: true,
|
|
214
|
+
variables: true,
|
|
215
|
+
events: true
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
store.getState().addMessageActivity('sent', {
|
|
219
|
+
type: 'getMetadata',
|
|
220
|
+
id: 'msg-003'
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
return (
|
|
224
|
+
<SystemProvider value={system}>
|
|
225
|
+
<GraphRunnerPanel system={system} />
|
|
226
|
+
</SystemProvider>
|
|
227
|
+
);
|
|
228
|
+
},
|
|
229
|
+
parameters: {
|
|
230
|
+
docs: {
|
|
231
|
+
description: {
|
|
232
|
+
story:
|
|
233
|
+
'GraphRunnerPanel in connected state with server variables, events, node types, and message activity.'
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Story showing the connecting state
|
|
241
|
+
*/
|
|
242
|
+
export const Connecting: Story = {
|
|
243
|
+
render: () => {
|
|
244
|
+
const coreRegistry = registerCoreProfile({
|
|
245
|
+
nodes: {},
|
|
246
|
+
values: {},
|
|
247
|
+
dependencies: {}
|
|
248
|
+
});
|
|
249
|
+
const nodeSpecs = writeNodeSpecsToJSON(coreRegistry);
|
|
250
|
+
const nodeRegistry = {
|
|
251
|
+
values: coreRegistry.values,
|
|
252
|
+
specs: nodeSpecs
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
const system = new System(nodeRegistry);
|
|
256
|
+
system.registerPlugin(graphRunnerClientPlugin);
|
|
257
|
+
|
|
258
|
+
system.runner.store.getState().setConnectionState('connecting');
|
|
259
|
+
system.runner.store.getState().setConnectionConfig({
|
|
260
|
+
url: 'ws://localhost:8080',
|
|
261
|
+
auth: { type: 'none' },
|
|
262
|
+
autoReconnect: true
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
return (
|
|
266
|
+
<SystemProvider value={system}>
|
|
267
|
+
<GraphRunnerPanel system={system} />
|
|
268
|
+
</SystemProvider>
|
|
269
|
+
);
|
|
270
|
+
},
|
|
271
|
+
parameters: {
|
|
272
|
+
docs: {
|
|
273
|
+
description: {
|
|
274
|
+
story: 'GraphRunnerPanel in connecting state.'
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Story showing an error state
|
|
282
|
+
*/
|
|
283
|
+
export const WithError: Story = {
|
|
284
|
+
render: () => {
|
|
285
|
+
const coreRegistry = registerCoreProfile({
|
|
286
|
+
nodes: {},
|
|
287
|
+
values: {},
|
|
288
|
+
dependencies: {}
|
|
289
|
+
});
|
|
290
|
+
const nodeSpecs = writeNodeSpecsToJSON(coreRegistry);
|
|
291
|
+
const nodeRegistry = {
|
|
292
|
+
values: coreRegistry.values,
|
|
293
|
+
specs: nodeSpecs
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
const system = new System(nodeRegistry);
|
|
297
|
+
system.registerPlugin(graphRunnerClientPlugin);
|
|
298
|
+
|
|
299
|
+
system.runner.store.getState().setConnectionState('disconnected');
|
|
300
|
+
system.runner.store
|
|
301
|
+
.getState()
|
|
302
|
+
.setError('Failed to connect: Connection timeout after 30 seconds');
|
|
303
|
+
|
|
304
|
+
return (
|
|
305
|
+
<SystemProvider value={system}>
|
|
306
|
+
<GraphRunnerPanel system={system} />
|
|
307
|
+
</SystemProvider>
|
|
308
|
+
);
|
|
309
|
+
},
|
|
310
|
+
parameters: {
|
|
311
|
+
docs: {
|
|
312
|
+
description: {
|
|
313
|
+
story: 'GraphRunnerPanel displaying a connection error.'
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { HistoryPanel } from '@/components/panels/history';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof HistoryPanel> = {
|
|
7
|
+
title: 'Components/Panels/HistoryPanel',
|
|
8
|
+
component: HistoryPanel,
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<DefaultSystemProvider>
|
|
12
|
+
<Story />
|
|
13
|
+
</DefaultSystemProvider>
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
parameters: {
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: 'HistoryPanel component for displaying action history.'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export default meta;
|
|
25
|
+
|
|
26
|
+
type Story = StoryObj<typeof HistoryPanel>;
|
|
27
|
+
|
|
28
|
+
export const Default: Story = {
|
|
29
|
+
args: {},
|
|
30
|
+
parameters: {
|
|
31
|
+
docs: {
|
|
32
|
+
description: {
|
|
33
|
+
story: 'Default HistoryPanel.'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { KeymapsPanel } from '@/components/panels/keymaps';
|
|
3
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof KeymapsPanel> = {
|
|
6
|
+
title: 'Components/Panels/Keymaps',
|
|
7
|
+
component: KeymapsPanel
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof KeymapsPanel>;
|
|
12
|
+
export const Default: Story = {
|
|
13
|
+
render: () => {
|
|
14
|
+
return (
|
|
15
|
+
<DefaultSystemProvider>
|
|
16
|
+
<KeymapsPanel />
|
|
17
|
+
</DefaultSystemProvider>
|
|
18
|
+
);
|
|
19
|
+
},
|
|
20
|
+
args: {}
|
|
21
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { LegendPanel } from '@/components/panels/legend';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof LegendPanel> = {
|
|
7
|
+
title: 'Components/Panels/LegendPanel',
|
|
8
|
+
component: LegendPanel,
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<DefaultSystemProvider>
|
|
12
|
+
<Story />
|
|
13
|
+
</DefaultSystemProvider>
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
parameters: {
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: 'LegendPanel component for displaying graph legends.'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export default meta;
|
|
25
|
+
|
|
26
|
+
type Story = StoryObj<typeof LegendPanel>;
|
|
27
|
+
|
|
28
|
+
export const Default: Story = {
|
|
29
|
+
args: {},
|
|
30
|
+
parameters: {
|
|
31
|
+
docs: {
|
|
32
|
+
description: {
|
|
33
|
+
story: 'Default LegendPanel.'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { LogsPanel } from '@/components/panels/logs';
|
|
3
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof LogsPanel> = {
|
|
6
|
+
title: 'Components/Panels/Logs',
|
|
7
|
+
component: LogsPanel,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'fullscreen'
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default meta;
|
|
14
|
+
type Story = StoryObj<typeof LogsPanel>;
|
|
15
|
+
export const Default: Story = {
|
|
16
|
+
render: () => {
|
|
17
|
+
return (
|
|
18
|
+
<DefaultSystemProvider>
|
|
19
|
+
<LogsPanel />
|
|
20
|
+
</DefaultSystemProvider>
|
|
21
|
+
);
|
|
22
|
+
},
|
|
23
|
+
args: {}
|
|
24
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { NodeInputsPanel } from '@/components/panels/nodeInputs';
|
|
3
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof NodeInputsPanel> = {
|
|
6
|
+
title: 'Components/Panels/NodeInputs',
|
|
7
|
+
component: NodeInputsPanel
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof NodeInputsPanel>;
|
|
12
|
+
export const Default: Story = {
|
|
13
|
+
render: () => {
|
|
14
|
+
return (
|
|
15
|
+
<DefaultSystemProvider>
|
|
16
|
+
<NodeInputsPanel />
|
|
17
|
+
</DefaultSystemProvider>
|
|
18
|
+
);
|
|
19
|
+
},
|
|
20
|
+
args: {}
|
|
21
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { NodePickerPanel } from '@/components/panels/nodePicker';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof NodePickerPanel> = {
|
|
7
|
+
title: 'Components/Panels/NodePickerPanel',
|
|
8
|
+
component: NodePickerPanel,
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<DefaultSystemProvider>
|
|
12
|
+
<Story />
|
|
13
|
+
</DefaultSystemProvider>
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
parameters: {
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: 'NodePickerPanel component for picking nodes from a list.'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export default meta;
|
|
25
|
+
|
|
26
|
+
type Story = StoryObj<typeof NodePickerPanel>;
|
|
27
|
+
|
|
28
|
+
export const Default: Story = {
|
|
29
|
+
args: {},
|
|
30
|
+
parameters: {
|
|
31
|
+
docs: {
|
|
32
|
+
description: {
|
|
33
|
+
story: 'Default NodePickerPanel.'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { PanelPanel } from '@/components/panels/panel';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof PanelPanel> = {
|
|
7
|
+
title: 'Components/Panels/PanelPanel',
|
|
8
|
+
component: PanelPanel,
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<DefaultSystemProvider>
|
|
12
|
+
<Story />
|
|
13
|
+
</DefaultSystemProvider>
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
parameters: {
|
|
17
|
+
layout: 'fullscreen',
|
|
18
|
+
docs: {
|
|
19
|
+
description: {
|
|
20
|
+
component:
|
|
21
|
+
'PanelPanel component for displaying all registered panels and allowing users to open them.'
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export default meta;
|
|
27
|
+
|
|
28
|
+
type Story = StoryObj<typeof PanelPanel>;
|
|
29
|
+
|
|
30
|
+
export const Default: Story = {
|
|
31
|
+
args: {},
|
|
32
|
+
parameters: {
|
|
33
|
+
docs: {
|
|
34
|
+
description: {
|
|
35
|
+
story: 'Default PanelPanel showing all registered panels in the system.'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { SearchPanel } from '@/components/panels/search';
|
|
3
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof SearchPanel> = {
|
|
6
|
+
title: 'Components/Panels/Search',
|
|
7
|
+
component: SearchPanel,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'fullscreen'
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default meta;
|
|
14
|
+
type Story = StoryObj<typeof SearchPanel>;
|
|
15
|
+
export const Default: Story = {
|
|
16
|
+
render: () => {
|
|
17
|
+
return (
|
|
18
|
+
<DefaultSystemProvider>
|
|
19
|
+
<SearchPanel />
|
|
20
|
+
</DefaultSystemProvider>
|
|
21
|
+
);
|
|
22
|
+
},
|
|
23
|
+
args: {}
|
|
24
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
|
|
3
|
+
import { Settings } from '@/components/panels/systemSettings';
|
|
4
|
+
import { DefaultSystemProvider } from '~/defaults/defaultStoryProvider';
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof Settings> = {
|
|
7
|
+
component: Settings,
|
|
8
|
+
decorators: [
|
|
9
|
+
(Story) => (
|
|
10
|
+
<DefaultSystemProvider>
|
|
11
|
+
<Story />
|
|
12
|
+
</DefaultSystemProvider>
|
|
13
|
+
)
|
|
14
|
+
],
|
|
15
|
+
parameters: {
|
|
16
|
+
layout: 'fullscreen'
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default meta;
|
|
21
|
+
|
|
22
|
+
type Story = StoryObj<typeof meta>;
|
|
23
|
+
|
|
24
|
+
export const Default: Story = {
|
|
25
|
+
args: {}
|
|
26
|
+
};
|