@r2digisolutions/components 0.1.7 → 0.2.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/dist/components/atoms/IconButton/IconButton.svelte +1 -1
- package/dist/components/atoms/MediaKindIcon/MediaKindIcon.stories.js +8 -0
- package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte +122 -0
- package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte.d.ts +11 -0
- package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte +12 -0
- package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte.d.ts +18 -0
- package/dist/components/atoms/PanKnob/PanKnob.stories.d.ts +9 -0
- package/dist/components/atoms/PanKnob/PanKnob.stories.js +8 -0
- package/dist/components/atoms/PanKnob/PanKnob.svelte +218 -0
- package/dist/components/atoms/PanKnob/PanKnob.svelte.d.ts +19 -0
- package/dist/components/atoms/PanKnob/PanKnobStory.svelte +15 -0
- package/dist/components/atoms/PanKnob/PanKnobStory.svelte.d.ts +3 -0
- package/dist/components/atoms/Playhead/Playhead.stories.js +8 -0
- package/dist/components/atoms/Playhead/Playhead.svelte +59 -0
- package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +13 -0
- package/dist/components/atoms/Playhead/PlayheadStory.svelte +9 -0
- package/dist/components/atoms/Playhead/PlayheadStory.svelte.d.ts +18 -0
- package/dist/components/atoms/TimeRuler/TimeRuler.stories.js +8 -0
- package/dist/components/atoms/TimeRuler/TimeRuler.svelte +58 -0
- package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +10 -0
- package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte +7 -0
- package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte.d.ts +18 -0
- package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
- package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
- package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
- package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
- package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
- package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
- package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
- package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +97 -61
- package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
- package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
- package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
- package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
- package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
- package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
- package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
- package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
- package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
- package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
- package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
- package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
- package/dist/components/molecules/ColorPicker/ColorPicker.svelte +1 -1
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
- package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
- package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
- package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
- package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
- package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
- package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
- package/dist/components/molecules/ContextMenu/ContextMenu.svelte +204 -60
- package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +9 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
- package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
- package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
- package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
- package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
- package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
- package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
- package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +94 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +15 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
- package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
- package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
- package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
- package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
- package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
- package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
- package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
- package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
- package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
- package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
- package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
- package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
- package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
- package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
- package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
- package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
- package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
- package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
- package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
- package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
- package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +131 -0
- package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +19 -0
- package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
- package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
- package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
- package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
- package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
- package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
- package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
- package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
- package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
- package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
- package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
- package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
- package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
- package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
- package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
- package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
- package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
- package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
- package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
- package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
- package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
- package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
- package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
- package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
- package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
- package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +72 -0
- package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +12 -0
- package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
- package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
- package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
- package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
- package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
- package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
- package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
- package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
- package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
- package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
- package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
- package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
- package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
- package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
- package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
- package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
- package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
- package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
- package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
- package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
- package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
- package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
- package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
- package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
- package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
- package/dist/components/molecules/SplitPane/SplitPane.svelte +96 -37
- package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
- package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
- package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
- package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
- package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
- package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
- package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
- package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
- package/dist/components/molecules/TimelineClip/TimelineClip.svelte +116 -0
- package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +15 -0
- package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
- package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
- package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
- package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +56 -0
- package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +16 -0
- package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
- package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
- package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
- package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
- package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
- package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
- package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
- package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
- package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
- package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
- package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
- package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
- package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
- package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
- package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
- package/dist/components/molecules/TransportControls/TransportControls.svelte +53 -0
- package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +12 -0
- package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +18 -0
- package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
- package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
- package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
- package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
- package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
- package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
- package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +59 -0
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +9 -0
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
- package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
- package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
- package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
- package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
- package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
- package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
- package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
- package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
- package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
- package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
- package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
- package/dist/components/organisms/AudioEditor/AudioEditor.stories.d.ts +12 -0
- package/dist/components/organisms/AudioEditor/AudioEditor.stories.js +9 -0
- package/dist/components/organisms/AudioEditor/AudioEditor.svelte +273 -0
- package/dist/components/organisms/AudioEditor/AudioEditor.svelte.d.ts +13 -0
- package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte +10 -0
- package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte.d.ts +3 -0
- package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
- package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
- package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
- package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
- package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
- package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
- package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
- package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
- package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
- package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
- package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
- package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
- package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
- package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
- package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
- package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
- package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
- package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
- package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
- package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
- package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
- package/dist/components/organisms/EditorShell/EditorShell.svelte +123 -28
- package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
- package/dist/components/organisms/FileUploader/FileUploader.svelte +77 -15
- package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +11 -0
- package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
- package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
- package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
- package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
- package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
- package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
- package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
- package/dist/components/organisms/VideoEditor/VideoEditor.svelte +308 -0
- package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +13 -0
- package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +10 -0
- package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
- package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
- package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
- package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
- package/dist/index.d.ts +83 -1
- package/dist/index.js +60 -0
- package/dist/types/xyflow-svelte.d.ts +62 -0
- package/dist/utils/audioProject.d.ts +19 -0
- package/dist/utils/audioProject.js +70 -0
- package/dist/utils/blogDocument.d.ts +175 -0
- package/dist/utils/blogDocument.js +220 -0
- package/dist/utils/blueprintRuntime.d.ts +34 -0
- package/dist/utils/blueprintRuntime.js +289 -0
- package/dist/utils/canvasDocument.d.ts +239 -0
- package/dist/utils/canvasDocument.js +443 -0
- package/dist/utils/canvasExport.d.ts +10 -0
- package/dist/utils/canvasExport.js +469 -0
- package/dist/utils/canvasHierarchy.d.ts +189 -0
- package/dist/utils/canvasHierarchy.js +674 -0
- package/dist/utils/canvasHistory.d.ts +19 -0
- package/dist/utils/canvasHistory.js +48 -0
- package/dist/utils/canvasWidget.d.ts +81 -0
- package/dist/utils/canvasWidget.js +597 -0
- package/dist/utils/mediaTime.d.ts +16 -0
- package/dist/utils/mediaTime.js +57 -0
- package/dist/utils/mediaTracks.d.ts +61 -0
- package/dist/utils/mediaTracks.js +102 -0
- package/dist/utils/nodeGraph.d.ts +354 -0
- package/dist/utils/nodeGraph.js +1453 -0
- package/dist/utils/queryBridge.d.ts +18 -0
- package/dist/utils/queryBridge.js +118 -0
- package/dist/utils/videoSequence.d.ts +13 -0
- package/dist/utils/videoSequence.js +63 -0
- package/package.json +5 -2
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blog document model: parse/serialize + optional component registry.
|
|
3
|
+
*/
|
|
4
|
+
const registry = new Map();
|
|
5
|
+
function uid(prefix = 'b') {
|
|
6
|
+
return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 7)}`;
|
|
7
|
+
}
|
|
8
|
+
export function emptyBlogDocument(title = '') {
|
|
9
|
+
return { version: 1, title, blocks: [] };
|
|
10
|
+
}
|
|
11
|
+
export function defaultDataForType(type) {
|
|
12
|
+
switch (type) {
|
|
13
|
+
case 'heading':
|
|
14
|
+
return { level: 2, text: 'Heading', align: 'left' };
|
|
15
|
+
case 'paragraph':
|
|
16
|
+
return { text: '', align: 'left', lead: false, muted: false };
|
|
17
|
+
case 'image':
|
|
18
|
+
return {
|
|
19
|
+
src: '',
|
|
20
|
+
alt: '',
|
|
21
|
+
caption: '',
|
|
22
|
+
align: 'center',
|
|
23
|
+
width: 'content',
|
|
24
|
+
rounded: true,
|
|
25
|
+
shadow: false
|
|
26
|
+
};
|
|
27
|
+
case 'code':
|
|
28
|
+
return {
|
|
29
|
+
code: '',
|
|
30
|
+
language: 'typescript',
|
|
31
|
+
filename: '',
|
|
32
|
+
showLineNumbers: false,
|
|
33
|
+
highlightLines: ''
|
|
34
|
+
};
|
|
35
|
+
case 'callout':
|
|
36
|
+
return { tone: 'info', title: '', text: '', collapsible: false };
|
|
37
|
+
case 'quote':
|
|
38
|
+
return { text: '', cite: '', role: '', align: 'left' };
|
|
39
|
+
case 'list':
|
|
40
|
+
return { ordered: false, items: [''], tight: false, start: 1 };
|
|
41
|
+
case 'divider':
|
|
42
|
+
return { style: 'solid', label: '', spacing: 'md' };
|
|
43
|
+
case 'markdown':
|
|
44
|
+
return { source: '' };
|
|
45
|
+
case 'video':
|
|
46
|
+
return {
|
|
47
|
+
src: '',
|
|
48
|
+
poster: '',
|
|
49
|
+
caption: '',
|
|
50
|
+
controls: true,
|
|
51
|
+
autoplay: false,
|
|
52
|
+
loop: false,
|
|
53
|
+
muted: false,
|
|
54
|
+
align: 'center',
|
|
55
|
+
width: 'content'
|
|
56
|
+
};
|
|
57
|
+
case 'embed':
|
|
58
|
+
return { url: '', title: '', aspectRatio: '16:9', caption: '' };
|
|
59
|
+
case 'gallery':
|
|
60
|
+
return {
|
|
61
|
+
images: [{ src: '', alt: '' }],
|
|
62
|
+
columns: 3,
|
|
63
|
+
gap: 'md',
|
|
64
|
+
rounded: true
|
|
65
|
+
};
|
|
66
|
+
case 'table':
|
|
67
|
+
return {
|
|
68
|
+
headers: ['Column A', 'Column B'],
|
|
69
|
+
rows: [
|
|
70
|
+
['', ''],
|
|
71
|
+
['', '']
|
|
72
|
+
],
|
|
73
|
+
striped: true,
|
|
74
|
+
compact: false,
|
|
75
|
+
caption: ''
|
|
76
|
+
};
|
|
77
|
+
case 'cta':
|
|
78
|
+
return {
|
|
79
|
+
label: 'Get started',
|
|
80
|
+
href: '#',
|
|
81
|
+
variant: 'primary',
|
|
82
|
+
align: 'center',
|
|
83
|
+
subtitle: '',
|
|
84
|
+
openInNewTab: false
|
|
85
|
+
};
|
|
86
|
+
case 'spacer':
|
|
87
|
+
return { size: 'md' };
|
|
88
|
+
case 'html':
|
|
89
|
+
return { html: '' };
|
|
90
|
+
case 'component':
|
|
91
|
+
return { componentId: '', props: {} };
|
|
92
|
+
default:
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function createBlock(type, data) {
|
|
97
|
+
return {
|
|
98
|
+
id: uid(),
|
|
99
|
+
type,
|
|
100
|
+
data: { ...defaultDataForType(type), ...data }
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function createComponentBlock(componentId, props) {
|
|
104
|
+
const reg = registry.get(componentId);
|
|
105
|
+
return createBlock('component', {
|
|
106
|
+
componentId,
|
|
107
|
+
props: { ...(reg?.defaultProps ?? {}), ...(props ?? {}) }
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export function serializeBlogDocument(doc) {
|
|
111
|
+
return JSON.stringify(doc, null, 2);
|
|
112
|
+
}
|
|
113
|
+
export function parseBlogDocument(raw) {
|
|
114
|
+
if (typeof raw !== 'string') {
|
|
115
|
+
return normalizeDocument(raw);
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const parsed = JSON.parse(raw);
|
|
119
|
+
return normalizeDocument(parsed);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return emptyBlogDocument();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function normalizeDocument(input) {
|
|
126
|
+
if (!input || typeof input !== 'object')
|
|
127
|
+
return emptyBlogDocument();
|
|
128
|
+
const obj = input;
|
|
129
|
+
const blocks = Array.isArray(obj.blocks)
|
|
130
|
+
? obj.blocks
|
|
131
|
+
.filter((b) => !!b && typeof b === 'object' && 'type' in b && 'id' in b)
|
|
132
|
+
.map((b) => ({
|
|
133
|
+
id: String(b.id),
|
|
134
|
+
type: b.type,
|
|
135
|
+
data: {
|
|
136
|
+
...defaultDataForType(b.type),
|
|
137
|
+
...(b.data ?? {})
|
|
138
|
+
}
|
|
139
|
+
}))
|
|
140
|
+
: [];
|
|
141
|
+
const tags = Array.isArray(obj.tags)
|
|
142
|
+
? obj.tags.filter((t) => typeof t === 'string')
|
|
143
|
+
: undefined;
|
|
144
|
+
return {
|
|
145
|
+
version: 1,
|
|
146
|
+
title: typeof obj.title === 'string' ? obj.title : '',
|
|
147
|
+
description: typeof obj.description === 'string' ? obj.description : undefined,
|
|
148
|
+
coverImage: typeof obj.coverImage === 'string' ? obj.coverImage : undefined,
|
|
149
|
+
author: typeof obj.author === 'string' ? obj.author : undefined,
|
|
150
|
+
tags,
|
|
151
|
+
publishedAt: typeof obj.publishedAt === 'string' ? obj.publishedAt : undefined,
|
|
152
|
+
blocks
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export function registerBlogComponent(id, registration) {
|
|
156
|
+
registry.set(id, registration);
|
|
157
|
+
}
|
|
158
|
+
export function unregisterBlogComponent(id) {
|
|
159
|
+
registry.delete(id);
|
|
160
|
+
}
|
|
161
|
+
export function getBlogComponent(id) {
|
|
162
|
+
return registry.get(id);
|
|
163
|
+
}
|
|
164
|
+
export function listBlogComponents() {
|
|
165
|
+
return [...registry.entries()].map(([id, registration]) => ({ id, registration }));
|
|
166
|
+
}
|
|
167
|
+
export function clearBlogComponentRegistry() {
|
|
168
|
+
registry.clear();
|
|
169
|
+
}
|
|
170
|
+
export function blogWidthClass(width) {
|
|
171
|
+
switch (width) {
|
|
172
|
+
case 'full':
|
|
173
|
+
return 'w-full max-w-none';
|
|
174
|
+
case 'wide':
|
|
175
|
+
return 'w-full max-w-4xl mx-auto';
|
|
176
|
+
case 'narrow':
|
|
177
|
+
return 'w-full max-w-md mx-auto';
|
|
178
|
+
case 'content':
|
|
179
|
+
default:
|
|
180
|
+
return 'w-full max-w-3xl mx-auto';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export function blogAlignClass(align) {
|
|
184
|
+
if (align === 'center')
|
|
185
|
+
return 'text-center mx-auto';
|
|
186
|
+
if (align === 'right')
|
|
187
|
+
return 'text-right ml-auto';
|
|
188
|
+
return 'text-left';
|
|
189
|
+
}
|
|
190
|
+
export function blogAspectPadding(ratio) {
|
|
191
|
+
switch (ratio) {
|
|
192
|
+
case '4:3':
|
|
193
|
+
return '75%';
|
|
194
|
+
case '1:1':
|
|
195
|
+
return '100%';
|
|
196
|
+
case '9:16':
|
|
197
|
+
return '177.78%';
|
|
198
|
+
case '16:9':
|
|
199
|
+
default:
|
|
200
|
+
return '56.25%';
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
export const NATIVE_BLOCK_TYPES = [
|
|
204
|
+
{ type: 'heading', label: 'Heading', group: 'Text' },
|
|
205
|
+
{ type: 'paragraph', label: 'Paragraph', group: 'Text' },
|
|
206
|
+
{ type: 'quote', label: 'Quote', group: 'Text' },
|
|
207
|
+
{ type: 'list', label: 'List', group: 'Text' },
|
|
208
|
+
{ type: 'markdown', label: 'Markdown', group: 'Text' },
|
|
209
|
+
{ type: 'callout', label: 'Callout', group: 'Text' },
|
|
210
|
+
{ type: 'code', label: 'Code', group: 'Media' },
|
|
211
|
+
{ type: 'image', label: 'Image', group: 'Media' },
|
|
212
|
+
{ type: 'video', label: 'Video', group: 'Media' },
|
|
213
|
+
{ type: 'gallery', label: 'Gallery', group: 'Media' },
|
|
214
|
+
{ type: 'embed', label: 'Embed', group: 'Media' },
|
|
215
|
+
{ type: 'table', label: 'Table', group: 'Layout' },
|
|
216
|
+
{ type: 'cta', label: 'Button / CTA', group: 'Layout' },
|
|
217
|
+
{ type: 'divider', label: 'Divider', group: 'Layout' },
|
|
218
|
+
{ type: 'spacer', label: 'Spacer', group: 'Layout' },
|
|
219
|
+
{ type: 'html', label: 'HTML', group: 'Advanced' }
|
|
220
|
+
];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Blueprint graph simulator — follows exec wires, resolves data pins
|
|
3
|
+
* (literals + pure nodes), and emits Print String lines. Not a full UE VM.
|
|
4
|
+
*/
|
|
5
|
+
import { type BlueprintDocument, type BlueprintVariable } from './nodeGraph.js';
|
|
6
|
+
export type BlueprintLogLevel = 'system' | 'print' | 'warn' | 'error';
|
|
7
|
+
export interface BlueprintLogEntry {
|
|
8
|
+
id: string;
|
|
9
|
+
level: BlueprintLogLevel;
|
|
10
|
+
text: string;
|
|
11
|
+
nodeId?: string;
|
|
12
|
+
at: number;
|
|
13
|
+
}
|
|
14
|
+
export interface SimulateBlueprintOptions {
|
|
15
|
+
/** Entry node type (default: event_begin). */
|
|
16
|
+
entryType?: string;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
onLog?: (entry: BlueprintLogEntry) => void;
|
|
19
|
+
/** Multiplier for Delay durations (1 = real seconds). */
|
|
20
|
+
timeScale?: number;
|
|
21
|
+
/** Cap Delay wait in ms (default 10_000). */
|
|
22
|
+
maxDelayMs?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SimulateBlueprintResult {
|
|
25
|
+
logs: BlueprintLogEntry[];
|
|
26
|
+
/** Final variable values after Sets. */
|
|
27
|
+
variables: BlueprintVariable[];
|
|
28
|
+
aborted: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run the graph from Event BeginPlay (or `entryType`).
|
|
32
|
+
* Print String lines use level `print`; flow uses `system`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function simulateBlueprint(doc: BlueprintDocument, opts?: SimulateBlueprintOptions): Promise<SimulateBlueprintResult>;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Blueprint graph simulator — follows exec wires, resolves data pins
|
|
3
|
+
* (literals + pure nodes), and emits Print String lines. Not a full UE VM.
|
|
4
|
+
*/
|
|
5
|
+
import { defaultValueForPinType, isExecPort } from './nodeGraph.js';
|
|
6
|
+
function logId() {
|
|
7
|
+
return `log-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 7)}`;
|
|
8
|
+
}
|
|
9
|
+
function pushLog(logs, onLog, level, text, nodeId) {
|
|
10
|
+
const entry = { id: logId(), level, text, nodeId, at: Date.now() };
|
|
11
|
+
logs.push(entry);
|
|
12
|
+
onLog?.(entry);
|
|
13
|
+
return entry;
|
|
14
|
+
}
|
|
15
|
+
function throwIfAborted(signal) {
|
|
16
|
+
if (signal?.aborted) {
|
|
17
|
+
const err = new Error('aborted');
|
|
18
|
+
err.name = 'AbortError';
|
|
19
|
+
throw err;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function sleep(ms, signal) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
if (signal?.aborted) {
|
|
25
|
+
reject(Object.assign(new Error('aborted'), { name: 'AbortError' }));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const t = setTimeout(() => {
|
|
29
|
+
signal?.removeEventListener('abort', onAbort);
|
|
30
|
+
resolve();
|
|
31
|
+
}, ms);
|
|
32
|
+
const onAbort = () => {
|
|
33
|
+
clearTimeout(t);
|
|
34
|
+
reject(Object.assign(new Error('aborted'), { name: 'AbortError' }));
|
|
35
|
+
};
|
|
36
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function findPort(node, handle, side) {
|
|
40
|
+
const list = side === 'input' ? (node.inputs ?? []) : (node.outputs ?? []);
|
|
41
|
+
if (!handle)
|
|
42
|
+
return list[0];
|
|
43
|
+
return list.find((p) => p.id === handle);
|
|
44
|
+
}
|
|
45
|
+
function outgoing(edges, nodeId, sourceHandle) {
|
|
46
|
+
return edges.find((e) => e.source === nodeId &&
|
|
47
|
+
(sourceHandle == null || e.sourceHandle === sourceHandle || (!e.sourceHandle && !sourceHandle)));
|
|
48
|
+
}
|
|
49
|
+
function incomingDataEdge(edges, nodeId, targetHandle) {
|
|
50
|
+
return edges.find((e) => e.target === nodeId && e.targetHandle === targetHandle);
|
|
51
|
+
}
|
|
52
|
+
function stripLiteralQuotes(raw) {
|
|
53
|
+
const t = raw.trim();
|
|
54
|
+
if ((t.startsWith('"') && t.endsWith('"')) ||
|
|
55
|
+
(t.startsWith("'") && t.endsWith("'"))) {
|
|
56
|
+
return t.slice(1, -1);
|
|
57
|
+
}
|
|
58
|
+
return t;
|
|
59
|
+
}
|
|
60
|
+
function coerceBool(v) {
|
|
61
|
+
if (typeof v === 'boolean')
|
|
62
|
+
return v;
|
|
63
|
+
if (typeof v === 'number')
|
|
64
|
+
return v !== 0;
|
|
65
|
+
if (typeof v === 'string') {
|
|
66
|
+
const s = v.trim().toLowerCase();
|
|
67
|
+
if (s === 'true' || s === '1' || s === 'yes')
|
|
68
|
+
return true;
|
|
69
|
+
if (s === 'false' || s === '0' || s === 'no' || s === '')
|
|
70
|
+
return false;
|
|
71
|
+
return Boolean(s);
|
|
72
|
+
}
|
|
73
|
+
return Boolean(v);
|
|
74
|
+
}
|
|
75
|
+
function coerceNumber(v, fallback = 0) {
|
|
76
|
+
if (typeof v === 'number' && Number.isFinite(v))
|
|
77
|
+
return v;
|
|
78
|
+
if (typeof v === 'string') {
|
|
79
|
+
const n = parseFloat(v);
|
|
80
|
+
return Number.isFinite(n) ? n : fallback;
|
|
81
|
+
}
|
|
82
|
+
return fallback;
|
|
83
|
+
}
|
|
84
|
+
function coerceString(v) {
|
|
85
|
+
if (v == null)
|
|
86
|
+
return '';
|
|
87
|
+
return String(v);
|
|
88
|
+
}
|
|
89
|
+
function initVars(variables) {
|
|
90
|
+
const map = new Map();
|
|
91
|
+
for (const v of variables ?? []) {
|
|
92
|
+
map.set(v.id, v.defaultValue !== undefined ? v.defaultValue : defaultValueForPinType(v.dataType));
|
|
93
|
+
}
|
|
94
|
+
return map;
|
|
95
|
+
}
|
|
96
|
+
function varsToArray(variables, state) {
|
|
97
|
+
return (variables ?? []).map((v) => ({
|
|
98
|
+
...v,
|
|
99
|
+
defaultValue: state.has(v.id) ? state.get(v.id) : v.defaultValue
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve a data output of a (usually pure) node.
|
|
104
|
+
*/
|
|
105
|
+
function evaluateNodeOutput(doc, node, outputId, vars, stack) {
|
|
106
|
+
if (stack.has(node.id))
|
|
107
|
+
return undefined;
|
|
108
|
+
stack.add(node.id);
|
|
109
|
+
try {
|
|
110
|
+
switch (node.type) {
|
|
111
|
+
case 'var_get': {
|
|
112
|
+
const vid = String(node.data?.variableId ?? '');
|
|
113
|
+
return vars.has(vid) ? vars.get(vid) : undefined;
|
|
114
|
+
}
|
|
115
|
+
case 'make_string': {
|
|
116
|
+
const label = String(node.data?.label ?? '');
|
|
117
|
+
return stripLiteralQuotes(label);
|
|
118
|
+
}
|
|
119
|
+
case 'var_set': {
|
|
120
|
+
const vid = String(node.data?.variableId ?? '');
|
|
121
|
+
return vars.has(vid) ? vars.get(vid) : undefined;
|
|
122
|
+
}
|
|
123
|
+
case 'event_tick': {
|
|
124
|
+
if (outputId === 'delta')
|
|
125
|
+
return 0.016;
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
default: {
|
|
129
|
+
const out = findPort(node, outputId, 'output');
|
|
130
|
+
if (out && !isExecPort(out) && out.value !== undefined)
|
|
131
|
+
return out.value;
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
stack.delete(node.id);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function resolveInputValue(doc, node, port, vars, stack) {
|
|
141
|
+
const edge = incomingDataEdge(doc.edges, node.id, port.id);
|
|
142
|
+
if (edge) {
|
|
143
|
+
const src = doc.nodes.find((n) => n.id === edge.source);
|
|
144
|
+
if (!src)
|
|
145
|
+
return port.value ?? defaultForPort(port);
|
|
146
|
+
return evaluateNodeOutput(doc, src, edge.sourceHandle, vars, stack);
|
|
147
|
+
}
|
|
148
|
+
if (port.value !== undefined)
|
|
149
|
+
return port.value;
|
|
150
|
+
return defaultForPort(port);
|
|
151
|
+
}
|
|
152
|
+
function defaultForPort(port) {
|
|
153
|
+
const dt = (port.dataType ?? 'any');
|
|
154
|
+
return defaultValueForPinType(dt);
|
|
155
|
+
}
|
|
156
|
+
async function followExec(doc, fromNodeId, fromHandle, ctx) {
|
|
157
|
+
throwIfAborted(ctx.signal);
|
|
158
|
+
const edge = outgoing(doc.edges, fromNodeId, fromHandle);
|
|
159
|
+
if (!edge)
|
|
160
|
+
return;
|
|
161
|
+
const node = doc.nodes.find((n) => n.id === edge.target);
|
|
162
|
+
if (!node)
|
|
163
|
+
return;
|
|
164
|
+
await executeNode(doc, node, ctx);
|
|
165
|
+
}
|
|
166
|
+
async function executeNode(doc, node, ctx) {
|
|
167
|
+
throwIfAborted(ctx.signal);
|
|
168
|
+
const stack = new Set();
|
|
169
|
+
const label = String(node.data?.label ?? node.type);
|
|
170
|
+
switch (node.type) {
|
|
171
|
+
case 'event_begin':
|
|
172
|
+
case 'event_tick':
|
|
173
|
+
case 'trigger': {
|
|
174
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `→ ${label}`, node.id);
|
|
175
|
+
await followExec(doc, node.id, 'exec', ctx);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
case 'branch': {
|
|
179
|
+
const condPort = findPort(node, 'condition', 'input');
|
|
180
|
+
const cond = condPort
|
|
181
|
+
? coerceBool(resolveInputValue(doc, node, condPort, ctx.vars, stack))
|
|
182
|
+
: false;
|
|
183
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `Branch → ${cond ? 'True' : 'False'}`, node.id);
|
|
184
|
+
await followExec(doc, node.id, cond ? 'true' : 'false', ctx);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
case 'print_string': {
|
|
188
|
+
const strPort = findPort(node, 'in_string', 'input');
|
|
189
|
+
const durPort = findPort(node, 'duration', 'input');
|
|
190
|
+
const text = strPort
|
|
191
|
+
? coerceString(resolveInputValue(doc, node, strPort, ctx.vars, stack))
|
|
192
|
+
: '';
|
|
193
|
+
const duration = durPort
|
|
194
|
+
? coerceNumber(resolveInputValue(doc, node, durPort, ctx.vars, stack), 2)
|
|
195
|
+
: 2;
|
|
196
|
+
pushLog(ctx.logs, ctx.onLog, 'print', text.length ? text : '(empty string)', node.id);
|
|
197
|
+
if (duration > 0) {
|
|
198
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `Print duration ${duration}s (display only)`, node.id);
|
|
199
|
+
}
|
|
200
|
+
await followExec(doc, node.id, 'exec', ctx);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
case 'delay_bp':
|
|
204
|
+
case 'delay': {
|
|
205
|
+
const durPort = findPort(node, 'duration', 'input');
|
|
206
|
+
const seconds = durPort
|
|
207
|
+
? coerceNumber(resolveInputValue(doc, node, durPort, ctx.vars, stack), 0)
|
|
208
|
+
: 0;
|
|
209
|
+
const ms = Math.min(ctx.maxDelayMs, Math.max(0, seconds * 1000 * ctx.timeScale));
|
|
210
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `Delay ${seconds}s…`, node.id);
|
|
211
|
+
await sleep(ms, ctx.signal);
|
|
212
|
+
throwIfAborted(ctx.signal);
|
|
213
|
+
pushLog(ctx.logs, ctx.onLog, 'system', 'Delay completed', node.id);
|
|
214
|
+
await followExec(doc, node.id, 'completed', ctx);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
case 'var_set': {
|
|
218
|
+
const vid = String(node.data?.variableId ?? '');
|
|
219
|
+
const valuePort = findPort(node, 'value', 'input');
|
|
220
|
+
const next = valuePort
|
|
221
|
+
? resolveInputValue(doc, node, valuePort, ctx.vars, stack)
|
|
222
|
+
: undefined;
|
|
223
|
+
if (vid)
|
|
224
|
+
ctx.vars.set(vid, next);
|
|
225
|
+
const name = String(node.data?.variableName ?? vid);
|
|
226
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `Set ${name} = ${String(next)}`, node.id);
|
|
227
|
+
await followExec(doc, node.id, 'exec', ctx);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
case 'return_node': {
|
|
231
|
+
pushLog(ctx.logs, ctx.onLog, 'system', 'Return', node.id);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
case 'action':
|
|
235
|
+
case 'construction_add': {
|
|
236
|
+
pushLog(ctx.logs, ctx.onLog, 'system', `Run ${label}`, node.id);
|
|
237
|
+
await followExec(doc, node.id, 'exec', ctx);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
default: {
|
|
241
|
+
// Generic: if it has an exec out named exec / Then, follow it.
|
|
242
|
+
const execOut = (node.outputs ?? []).find((p) => isExecPort(p) && p.id === 'exec') ??
|
|
243
|
+
(node.outputs ?? []).find((p) => isExecPort(p));
|
|
244
|
+
pushLog(ctx.logs, ctx.onLog, 'warn', `Unhandled node type "${node.type}"`, node.id);
|
|
245
|
+
if (execOut)
|
|
246
|
+
await followExec(doc, node.id, execOut.id, ctx);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Run the graph from Event BeginPlay (or `entryType`).
|
|
252
|
+
* Print String lines use level `print`; flow uses `system`.
|
|
253
|
+
*/
|
|
254
|
+
export async function simulateBlueprint(doc, opts = {}) {
|
|
255
|
+
const logs = [];
|
|
256
|
+
const vars = initVars(doc.variables);
|
|
257
|
+
const entryType = opts.entryType ?? 'event_begin';
|
|
258
|
+
const timeScale = opts.timeScale ?? 1;
|
|
259
|
+
const maxDelayMs = opts.maxDelayMs ?? 10_000;
|
|
260
|
+
const entry = doc.graph.nodes.find((n) => n.type === entryType);
|
|
261
|
+
if (!entry) {
|
|
262
|
+
pushLog(logs, opts.onLog, 'error', `No entry node of type "${entryType}"`);
|
|
263
|
+
return { logs, variables: varsToArray(doc.variables, vars), aborted: false };
|
|
264
|
+
}
|
|
265
|
+
pushLog(logs, opts.onLog, 'system', '—— Simulate BeginPlay ——');
|
|
266
|
+
try {
|
|
267
|
+
await executeNode(doc.graph, entry, {
|
|
268
|
+
vars,
|
|
269
|
+
logs,
|
|
270
|
+
onLog: opts.onLog,
|
|
271
|
+
signal: opts.signal,
|
|
272
|
+
timeScale,
|
|
273
|
+
maxDelayMs,
|
|
274
|
+
variables: doc.variables
|
|
275
|
+
});
|
|
276
|
+
pushLog(logs, opts.onLog, 'system', '—— Finished ——');
|
|
277
|
+
return { logs, variables: varsToArray(doc.variables, vars), aborted: false };
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
const aborted = e instanceof Error && e.name === 'AbortError';
|
|
281
|
+
if (aborted) {
|
|
282
|
+
pushLog(logs, opts.onLog, 'warn', '—— Stopped ——');
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
pushLog(logs, opts.onLog, 'error', e instanceof Error ? e.message : 'Simulation failed');
|
|
286
|
+
}
|
|
287
|
+
return { logs, variables: varsToArray(doc.variables, vars), aborted };
|
|
288
|
+
}
|
|
289
|
+
}
|