@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.
Files changed (324) hide show
  1. package/dist/components/atoms/IconButton/IconButton.svelte +1 -1
  2. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.stories.js +8 -0
  3. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte +122 -0
  4. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte.d.ts +11 -0
  5. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte +12 -0
  6. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte.d.ts +18 -0
  7. package/dist/components/atoms/PanKnob/PanKnob.stories.d.ts +9 -0
  8. package/dist/components/atoms/PanKnob/PanKnob.stories.js +8 -0
  9. package/dist/components/atoms/PanKnob/PanKnob.svelte +218 -0
  10. package/dist/components/atoms/PanKnob/PanKnob.svelte.d.ts +19 -0
  11. package/dist/components/atoms/PanKnob/PanKnobStory.svelte +15 -0
  12. package/dist/components/atoms/PanKnob/PanKnobStory.svelte.d.ts +3 -0
  13. package/dist/components/atoms/Playhead/Playhead.stories.js +8 -0
  14. package/dist/components/atoms/Playhead/Playhead.svelte +59 -0
  15. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +13 -0
  16. package/dist/components/atoms/Playhead/PlayheadStory.svelte +9 -0
  17. package/dist/components/atoms/Playhead/PlayheadStory.svelte.d.ts +18 -0
  18. package/dist/components/atoms/TimeRuler/TimeRuler.stories.js +8 -0
  19. package/dist/components/atoms/TimeRuler/TimeRuler.svelte +58 -0
  20. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +10 -0
  21. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte +7 -0
  22. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte.d.ts +18 -0
  23. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  24. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  25. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  26. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  27. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  28. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  29. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  30. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  31. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  32. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  33. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  34. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  35. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +97 -61
  36. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  37. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  38. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  39. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  40. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  41. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  42. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  43. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  44. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  45. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  46. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  47. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  48. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  49. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  50. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  51. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  52. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  53. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +1 -1
  54. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  55. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  56. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  57. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  58. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  59. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  60. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  61. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  62. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  63. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  64. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  65. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +204 -60
  66. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +9 -0
  67. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  68. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  69. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  70. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  71. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  72. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  73. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  74. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  75. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  76. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  77. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  78. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  79. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  80. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  81. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +94 -0
  82. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +15 -0
  83. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  84. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  85. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  86. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  87. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  88. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  89. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  90. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  91. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  92. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  93. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  94. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  95. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  96. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  97. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  98. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  99. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  100. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  101. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  102. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  103. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  104. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  105. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  106. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  107. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  108. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  109. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +131 -0
  110. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +19 -0
  111. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  112. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  113. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  114. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  115. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  116. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  117. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  118. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  119. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  120. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  121. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  122. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  123. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  124. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  125. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  126. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  127. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  128. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  129. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  130. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  131. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  132. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  133. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  134. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  135. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  136. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +72 -0
  137. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +12 -0
  138. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  139. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  140. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  141. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  142. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  143. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  144. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  145. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  146. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  147. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  148. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  149. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  150. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  151. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  152. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  153. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  154. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  155. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  156. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  157. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  158. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  159. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  160. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  161. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  162. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  163. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  164. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  165. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  166. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  167. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  168. package/dist/components/molecules/SplitPane/SplitPane.svelte +96 -37
  169. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  170. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  171. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  172. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  173. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  174. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  175. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  176. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  177. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +116 -0
  178. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +15 -0
  179. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  180. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  181. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  182. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +56 -0
  183. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +16 -0
  184. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  185. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  186. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  187. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  188. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  189. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  190. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  191. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  192. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  193. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  194. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  195. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  196. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  197. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  198. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  199. package/dist/components/molecules/TransportControls/TransportControls.svelte +53 -0
  200. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +12 -0
  201. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +18 -0
  202. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  203. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  204. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  205. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  206. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  207. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  208. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  209. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  210. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  211. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +59 -0
  212. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +9 -0
  213. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  214. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  215. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  216. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  217. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  218. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  219. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  220. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  221. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  222. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  223. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  224. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  225. package/dist/components/organisms/AudioEditor/AudioEditor.stories.d.ts +12 -0
  226. package/dist/components/organisms/AudioEditor/AudioEditor.stories.js +9 -0
  227. package/dist/components/organisms/AudioEditor/AudioEditor.svelte +273 -0
  228. package/dist/components/organisms/AudioEditor/AudioEditor.svelte.d.ts +13 -0
  229. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte +10 -0
  230. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte.d.ts +3 -0
  231. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  232. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  233. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  234. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  235. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  236. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  237. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  238. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  239. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  240. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  241. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  242. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  243. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  244. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  245. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  246. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  247. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  248. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  249. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  250. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  251. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  252. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  253. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  254. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  255. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  256. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  257. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  258. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  259. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  260. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  261. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  262. package/dist/components/organisms/EditorShell/EditorShell.svelte +123 -28
  263. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  264. package/dist/components/organisms/FileUploader/FileUploader.svelte +77 -15
  265. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +11 -0
  266. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  267. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  268. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  269. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  270. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  271. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  272. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  273. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +308 -0
  274. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +13 -0
  275. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +10 -0
  276. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  277. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  278. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  279. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  280. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  281. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  282. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  283. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  284. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  285. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  286. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  287. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  288. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  289. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  290. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  291. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  292. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  293. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  294. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  295. package/dist/index.d.ts +83 -1
  296. package/dist/index.js +60 -0
  297. package/dist/types/xyflow-svelte.d.ts +62 -0
  298. package/dist/utils/audioProject.d.ts +19 -0
  299. package/dist/utils/audioProject.js +70 -0
  300. package/dist/utils/blogDocument.d.ts +175 -0
  301. package/dist/utils/blogDocument.js +220 -0
  302. package/dist/utils/blueprintRuntime.d.ts +34 -0
  303. package/dist/utils/blueprintRuntime.js +289 -0
  304. package/dist/utils/canvasDocument.d.ts +239 -0
  305. package/dist/utils/canvasDocument.js +443 -0
  306. package/dist/utils/canvasExport.d.ts +10 -0
  307. package/dist/utils/canvasExport.js +469 -0
  308. package/dist/utils/canvasHierarchy.d.ts +189 -0
  309. package/dist/utils/canvasHierarchy.js +674 -0
  310. package/dist/utils/canvasHistory.d.ts +19 -0
  311. package/dist/utils/canvasHistory.js +48 -0
  312. package/dist/utils/canvasWidget.d.ts +81 -0
  313. package/dist/utils/canvasWidget.js +597 -0
  314. package/dist/utils/mediaTime.d.ts +16 -0
  315. package/dist/utils/mediaTime.js +57 -0
  316. package/dist/utils/mediaTracks.d.ts +61 -0
  317. package/dist/utils/mediaTracks.js +102 -0
  318. package/dist/utils/nodeGraph.d.ts +354 -0
  319. package/dist/utils/nodeGraph.js +1453 -0
  320. package/dist/utils/queryBridge.d.ts +18 -0
  321. package/dist/utils/queryBridge.js +118 -0
  322. package/dist/utils/videoSequence.d.ts +13 -0
  323. package/dist/utils/videoSequence.js +63 -0
  324. 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
+ }