@r2digisolutions/components 0.1.7 → 0.3.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 (350) 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 +98 -0
  15. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +21 -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 +117 -0
  20. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +17 -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/TimelineGrid/TimelineGrid.stories.js +8 -0
  24. package/dist/components/atoms/TimelineGrid/TimelineGrid.svelte +39 -0
  25. package/dist/components/atoms/TimelineGrid/TimelineGrid.svelte.d.ts +11 -0
  26. package/dist/components/atoms/TimelineGrid/TimelineGridStory.svelte +7 -0
  27. package/dist/components/atoms/TimelineGrid/TimelineGridStory.svelte.d.ts +18 -0
  28. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  29. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  30. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  31. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  32. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  33. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  34. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  35. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  36. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  37. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  38. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  39. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  40. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +97 -61
  41. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  42. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  43. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  44. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  45. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  46. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  47. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  48. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  49. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  50. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  51. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  52. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  53. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  54. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  55. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  56. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  57. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  58. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +46 -5
  59. package/dist/components/molecules/ColorPicker/ColorPicker.svelte.d.ts +2 -0
  60. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  61. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  62. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  63. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  64. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  65. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  66. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  67. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  68. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  69. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  70. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  71. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +237 -66
  72. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +9 -0
  73. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  74. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  75. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  76. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  77. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  78. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  79. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  80. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  81. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  82. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  83. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  84. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  85. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  86. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  87. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +109 -0
  88. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +20 -0
  89. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  90. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  91. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  92. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  93. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  94. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  95. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  96. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  97. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  98. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  99. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  100. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  101. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  102. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  103. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  104. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  105. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  106. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  107. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  108. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  109. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  110. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  111. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  112. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  113. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  114. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  115. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +441 -0
  116. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +39 -0
  117. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  118. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  119. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  120. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  121. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  122. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  123. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  124. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  125. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  126. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  127. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  128. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  129. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  130. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  131. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  132. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  133. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  134. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  135. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  136. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  137. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  138. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  139. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  140. package/dist/components/molecules/PdfViewer/PdfViewer.svelte.d.ts +1 -1
  141. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  142. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  143. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +794 -0
  144. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +25 -0
  145. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  146. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  147. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  148. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  149. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  150. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  151. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  152. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  153. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  154. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  155. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  156. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  157. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  158. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  159. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  160. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  161. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  162. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  163. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  164. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  165. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  166. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  167. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  168. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  169. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  170. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  171. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  172. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  173. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  174. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  175. package/dist/components/molecules/SplitPane/SplitPane.svelte +99 -40
  176. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  177. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  178. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  179. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  180. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  181. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  182. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  183. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  184. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +193 -0
  185. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +18 -0
  186. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  187. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  188. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  189. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +126 -0
  190. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +27 -0
  191. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  192. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  193. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  194. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  195. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  196. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  197. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  198. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  199. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  200. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  201. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  202. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  203. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  204. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  205. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  206. package/dist/components/molecules/TransportControls/TransportControls.svelte +135 -0
  207. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +24 -0
  208. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +40 -0
  209. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  210. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  211. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  212. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  213. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  214. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  215. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.stories.js +8 -0
  216. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.svelte +213 -0
  217. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanel.svelte.d.ts +22 -0
  218. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanelStory.svelte +7 -0
  219. package/dist/components/molecules/VideoAnimationsPanel/VideoAnimationsPanelStory.svelte.d.ts +18 -0
  220. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.stories.js +8 -0
  221. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.svelte +524 -0
  222. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanel.svelte.d.ts +32 -0
  223. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanelStory.svelte +7 -0
  224. package/dist/components/molecules/VideoComponentsPanel/VideoComponentsPanelStory.svelte.d.ts +18 -0
  225. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  226. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  227. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  228. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +112 -0
  229. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +15 -0
  230. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  231. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  232. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.stories.js +8 -0
  233. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.svelte +113 -0
  234. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanel.svelte.d.ts +18 -0
  235. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanelStory.svelte +7 -0
  236. package/dist/components/molecules/VideoTransitionsPanel/VideoTransitionsPanelStory.svelte.d.ts +18 -0
  237. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  238. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  239. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  240. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  241. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  242. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  243. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  244. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  245. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  246. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  247. package/dist/components/organisms/AudioEditor/AudioEditor.stories.d.ts +12 -0
  248. package/dist/components/organisms/AudioEditor/AudioEditor.stories.js +9 -0
  249. package/dist/components/organisms/AudioEditor/AudioEditor.svelte +324 -0
  250. package/dist/components/organisms/AudioEditor/AudioEditor.svelte.d.ts +13 -0
  251. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte +10 -0
  252. package/dist/components/organisms/AudioEditor/AudioEditorStory.svelte.d.ts +3 -0
  253. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  254. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  255. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  256. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  257. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  258. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  259. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  260. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  261. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  262. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  263. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  264. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  265. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  266. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  267. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  268. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  269. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  270. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  271. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  272. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  273. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  274. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  275. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  276. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  277. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  278. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  279. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  280. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  281. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  282. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  283. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  284. package/dist/components/organisms/EditorShell/EditorShell.svelte +162 -57
  285. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  286. package/dist/components/organisms/FileUploader/FileUploader.stories.d.ts +10 -0
  287. package/dist/components/organisms/FileUploader/FileUploader.stories.js +21 -0
  288. package/dist/components/organisms/FileUploader/FileUploader.svelte +127 -25
  289. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +20 -0
  290. package/dist/components/organisms/FileUploader/FileUploaderStory.svelte +7 -1
  291. package/dist/components/organisms/FileUploader/FileUploaderStory.svelte.d.ts +3 -0
  292. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  293. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  294. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  295. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  296. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  297. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  298. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  299. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +1687 -0
  300. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +14 -0
  301. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +11 -0
  302. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  303. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  304. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  305. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  306. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  307. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  308. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  309. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  310. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  311. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  312. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  313. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  314. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  315. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  316. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  317. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  318. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  319. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  320. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  321. package/dist/index.d.ts +91 -1
  322. package/dist/index.js +64 -0
  323. package/dist/types/xyflow-svelte.d.ts +62 -0
  324. package/dist/utils/audioProject.d.ts +19 -0
  325. package/dist/utils/audioProject.js +70 -0
  326. package/dist/utils/blogDocument.d.ts +175 -0
  327. package/dist/utils/blogDocument.js +220 -0
  328. package/dist/utils/blueprintRuntime.d.ts +34 -0
  329. package/dist/utils/blueprintRuntime.js +289 -0
  330. package/dist/utils/canvasDocument.d.ts +239 -0
  331. package/dist/utils/canvasDocument.js +443 -0
  332. package/dist/utils/canvasExport.d.ts +10 -0
  333. package/dist/utils/canvasExport.js +469 -0
  334. package/dist/utils/canvasHierarchy.d.ts +189 -0
  335. package/dist/utils/canvasHierarchy.js +674 -0
  336. package/dist/utils/canvasHistory.d.ts +19 -0
  337. package/dist/utils/canvasHistory.js +48 -0
  338. package/dist/utils/canvasWidget.d.ts +81 -0
  339. package/dist/utils/canvasWidget.js +597 -0
  340. package/dist/utils/mediaTime.d.ts +26 -0
  341. package/dist/utils/mediaTime.js +76 -0
  342. package/dist/utils/mediaTracks.d.ts +215 -0
  343. package/dist/utils/mediaTracks.js +798 -0
  344. package/dist/utils/nodeGraph.d.ts +354 -0
  345. package/dist/utils/nodeGraph.js +1453 -0
  346. package/dist/utils/queryBridge.d.ts +18 -0
  347. package/dist/utils/queryBridge.js +118 -0
  348. package/dist/utils/videoSequence.d.ts +13 -0
  349. package/dist/utils/videoSequence.js +94 -0
  350. package/package.json +5 -2
@@ -0,0 +1,92 @@
1
+ <script lang="ts">
2
+ import IconButton from '../../atoms/IconButton/IconButton.svelte';
3
+ import PanKnob from '../../atoms/PanKnob/PanKnob.svelte';
4
+ import type { MixerChannelState } from '../../../utils/audioProject.js';
5
+ import VolumeX from '@lucide/svelte/icons/volume-x';
6
+ import Volume2 from '@lucide/svelte/icons/volume-2';
7
+ import Headphones from '@lucide/svelte/icons/headphones';
8
+
9
+ interface MixerChannelProps {
10
+ channel: MixerChannelState;
11
+ name?: string;
12
+ color?: string;
13
+ class?: string;
14
+ onchange?: (channel: MixerChannelState) => void;
15
+ }
16
+
17
+ let {
18
+ channel,
19
+ name = 'Track',
20
+ color = '#3b82f6',
21
+ class: className = '',
22
+ onchange
23
+ }: MixerChannelProps = $props();
24
+
25
+ const volumePct = $derived(Math.min(100, Math.max(0, channel.volume * 100)));
26
+
27
+ function patch(partial: Partial<MixerChannelState>) {
28
+ onchange?.({ ...channel, ...partial });
29
+ }
30
+ </script>
31
+
32
+ <div
33
+ class={[
34
+ 'flex w-20 flex-col items-center gap-2 rounded-lg border border-border bg-surface-elevated p-2',
35
+ className
36
+ ]}
37
+ >
38
+ <span class="h-1.5 w-full rounded-full" style:background={color} aria-hidden="true"></span>
39
+ <span class="w-full truncate text-center text-[10px] font-medium text-secondary">{name}</span>
40
+ <div class="relative flex h-32 w-full items-center justify-center py-1">
41
+ <div class="relative h-full w-1.5 rounded-full bg-border-strong dark:bg-surface-overlay">
42
+ <div
43
+ class="absolute bottom-0 w-full rounded-full bg-brand-500"
44
+ style:height="{volumePct}%"
45
+ ></div>
46
+ <div
47
+ class="pointer-events-none absolute left-1/2 h-4 w-4 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-brand-500 bg-white shadow-md dark:bg-slate-900"
48
+ style:bottom="{volumePct}%"
49
+ >
50
+ <span
51
+ class="absolute top-1/2 left-1/2 h-1.5 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-brand-500"
52
+ ></span>
53
+ </div>
54
+ </div>
55
+ <input
56
+ type="range"
57
+ min={0}
58
+ max={1}
59
+ step={0.01}
60
+ value={channel.volume}
61
+ aria-label="{name} volume"
62
+ class="absolute inset-0 h-full w-full cursor-pointer opacity-0 [writing-mode:vertical-lr]"
63
+ style:direction="rtl"
64
+ oninput={(e) => patch({ volume: Number(e.currentTarget.value) })}
65
+ />
66
+ </div>
67
+ <div class="flex items-center gap-0.5">
68
+ <IconButton
69
+ label={channel.muted ? 'Unmute' : 'Mute'}
70
+ size="xs"
71
+ onclick={() => patch({ muted: !channel.muted })}
72
+ >
73
+ {#if channel.muted}
74
+ <VolumeX class="h-3.5 w-3.5" />
75
+ {:else}
76
+ <Volume2 class="h-3.5 w-3.5" />
77
+ {/if}
78
+ </IconButton>
79
+ <IconButton
80
+ label={channel.solo ? 'Unsolo' : 'Solo'}
81
+ size="xs"
82
+ onclick={() => patch({ solo: !channel.solo })}
83
+ >
84
+ <Headphones class={['h-3.5 w-3.5', channel.solo && 'text-brand-500']} />
85
+ </IconButton>
86
+ </div>
87
+ <PanKnob
88
+ value={channel.pan}
89
+ size="sm"
90
+ oninput={(pan) => patch({ pan })}
91
+ />
92
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { MixerChannelState } from '../../../utils/audioProject.js';
2
+ interface MixerChannelProps {
3
+ channel: MixerChannelState;
4
+ name?: string;
5
+ color?: string;
6
+ class?: string;
7
+ onchange?: (channel: MixerChannelState) => void;
8
+ }
9
+ declare const MixerChannel: import("svelte").Component<MixerChannelProps, {}, "">;
10
+ type MixerChannel = ReturnType<typeof MixerChannel>;
11
+ export default MixerChannel;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import MixerChannel from './MixerChannel.svelte';
3
+
4
+ let channel = $state({
5
+ trackId: 't1',
6
+ volume: 0.75,
7
+ pan: -0.2,
8
+ muted: false,
9
+ solo: false
10
+ });
11
+ </script>
12
+
13
+ <MixerChannel {channel} name="Drums" color="#3b82f6" onchange={(c) => (channel = c)} />
@@ -0,0 +1,3 @@
1
+ declare const MixerChannelStory: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type MixerChannelStory = ReturnType<typeof MixerChannelStory>;
3
+ export default MixerChannelStory;
@@ -0,0 +1,454 @@
1
+ <script lang="ts">
2
+ import { Handle, Position, type NodeProps } from '@xyflow/svelte';
3
+ import AlertTriangle from '@lucide/svelte/icons/alert-triangle';
4
+ import {
5
+ formatPortLiteral,
6
+ isDataPort,
7
+ isExecPort,
8
+ parsePortLiteral,
9
+ pinColor,
10
+ type BlueprintFlowNodeData,
11
+ type GraphPort
12
+ } from '../../../utils/nodeGraph.js';
13
+
14
+ type Props = NodeProps & {
15
+ data: BlueprintFlowNodeData;
16
+ };
17
+
18
+ let { data, selected }: Props = $props();
19
+
20
+ /** Must match .bp-node__title height — handles are positioned from the NODE root. */
21
+ const HEADER_H = 32;
22
+ const ROW_H = 24;
23
+ const BODY_PAD = 6;
24
+
25
+ const isComment = $derived(data.graphType === 'comment');
26
+ const isReroute = $derived(data.graphType === 'reroute');
27
+ const isVarGet = $derived(data.graphType === 'var_get');
28
+ const isVarSet = $derived(data.graphType === 'var_set');
29
+ const color = $derived(data.color ?? '#64748b');
30
+ const inputs = $derived(data.inputs ?? []);
31
+ const outputs = $derived(data.outputs ?? []);
32
+ const wired = $derived(new Set(data._wiredInputs ?? []));
33
+ const rowCount = $derived(Math.max(inputs.length, outputs.length, 1));
34
+ const bodyH = $derived(BODY_PAD * 2 + rowCount * ROW_H);
35
+ const nodeW = $derived(
36
+ data.width ??
37
+ (isVarGet
38
+ ? Math.max(128, String(data.label ?? '').length * 8 + 64)
39
+ : Math.max(240, 180 + Math.max(inputs.length, outputs.length) * 16))
40
+ );
41
+ const commentW = $derived(data.width ?? 220);
42
+ const commentH = $derived(data.height ?? 100);
43
+
44
+ function handleTop(index: number): number {
45
+ return HEADER_H + BODY_PAD + index * ROW_H + ROW_H / 2;
46
+ }
47
+
48
+ function handleStyle(port: GraphPort, index: number): string {
49
+ const fill = isExecPort(port) ? 'background:#e2e8f0;' : `background:${pinColor(port)};`;
50
+ return `top:${handleTop(index)}px;${fill}`;
51
+ }
52
+
53
+ function labelOf(port: GraphPort | undefined): string {
54
+ if (!port) return '';
55
+ const t = port.label ?? port.id;
56
+ return t === '' ? '' : t;
57
+ }
58
+
59
+ function showLiteral(port: GraphPort | undefined): boolean {
60
+ if (!port || !isDataPort(port)) return false;
61
+ return !wired.has(port.id);
62
+ }
63
+
64
+ function onLiteralInput(port: GraphPort, event: Event) {
65
+ const el = event.currentTarget as HTMLInputElement;
66
+ const next =
67
+ port.dataType === 'bool' ? el.checked : parsePortLiteral(port, el.value);
68
+ data._onLiteral?.(port.id, next);
69
+ }
70
+
71
+ function onLiteralKeydown(event: KeyboardEvent) {
72
+ // Keep typing from deleting the node / bubbling to the graph.
73
+ event.stopPropagation();
74
+ }
75
+ </script>
76
+
77
+ {#if isReroute}
78
+ {@const port = inputs[0] ?? outputs[0]}
79
+ {@const fill = port && isExecPort(port) ? '#e2e8f0' : pinColor(port ?? { id: 'p', dataType: 'any' })}
80
+ <div class={['bp-reroute', selected ? 'bp-reroute--selected' : '']}>
81
+ <span class="bp-reroute__dot" style={`background:${fill}`}></span>
82
+ {#each inputs as inn (inn.id)}
83
+ <Handle
84
+ id={inn.id}
85
+ type="target"
86
+ position={Position.Left}
87
+ class={['bp-handle', isExecPort(inn) ? 'bp-handle--exec' : 'bp-handle--data']}
88
+ style={`top:50%;${isExecPort(inn) ? 'background:#e2e8f0;' : `background:${pinColor(inn)};`}`}
89
+ />
90
+ {/each}
91
+ {#each outputs as out (out.id)}
92
+ <Handle
93
+ id={out.id}
94
+ type="source"
95
+ position={Position.Right}
96
+ class={['bp-handle', isExecPort(out) ? 'bp-handle--exec' : 'bp-handle--data']}
97
+ style={`top:50%;${isExecPort(out) ? 'background:#e2e8f0;' : `background:${pinColor(out)};`}`}
98
+ />
99
+ {/each}
100
+ </div>
101
+ {:else if isComment}
102
+ <div
103
+ class={[
104
+ 'bp-comment',
105
+ selected ? 'bp-comment--selected' : ''
106
+ ]}
107
+ style={`width:${commentW}px;min-height:${commentH}px;background:${data.commentColor ?? 'rgba(251,191,36,0.22)'}`}
108
+ >
109
+ <p class="bp-comment__tag">Comment</p>
110
+ <p class="bp-comment__label">{data.label ?? 'Comment'}</p>
111
+ </div>
112
+ {:else}
113
+ <div class={['bp-node', selected ? 'bp-node--selected' : '']} style={`width:${nodeW}px;`}>
114
+ <div class="bp-node__title" style={`background:${color};`}>
115
+ {#if isVarGet || isVarSet}
116
+ <span class="bp-node__badge">{isVarGet ? 'Get' : 'Set'}</span>
117
+ {/if}
118
+ <span class="bp-node__title-text">{data.label ?? data.graphType}</span>
119
+ {#if data._alert}
120
+ <span class="text-amber-200" title="Needs attention">
121
+ <AlertTriangle class="h-3.5 w-3.5" strokeWidth={2.5} />
122
+ </span>
123
+ {/if}
124
+ </div>
125
+
126
+ <div class="bp-node__body" style={`height:${bodyH}px;padding-block:${BODY_PAD}px;`}>
127
+ {#each Array.from({ length: rowCount }, (_, i) => i) as i (i)}
128
+ {@const inn = inputs[i]}
129
+ {@const out = outputs[i]}
130
+ <div class="bp-node__row" style={`height:${ROW_H}px;`}>
131
+ <div class="bp-node__cell bp-node__cell--in">
132
+ {#if inn}
133
+ {#if labelOf(inn)}
134
+ <span
135
+ class="bp-node__label"
136
+ class:bp-node__label--exec={isExecPort(inn)}
137
+ style={isExecPort(inn) ? undefined : `color:${pinColor(inn)}`}
138
+ >
139
+ {labelOf(inn)}
140
+ </span>
141
+ {/if}
142
+ {#if showLiteral(inn)}
143
+ {#if inn.dataType === 'bool'}
144
+ <input
145
+ type="checkbox"
146
+ class="bp-node__literal bp-node__literal--bool nodrag nopan"
147
+ checked={Boolean(inn.value)}
148
+ onchange={(e) => onLiteralInput(inn, e)}
149
+ onkeydown={onLiteralKeydown}
150
+ onclick={(e) => e.stopPropagation()}
151
+ title="Literal value"
152
+ />
153
+ {:else if inn.dataType === 'int' || inn.dataType === 'float'}
154
+ <input
155
+ type="number"
156
+ step={inn.dataType === 'float' ? 'any' : '1'}
157
+ class="bp-node__literal nodrag nopan"
158
+ value={formatPortLiteral(inn)}
159
+ oninput={(e) => onLiteralInput(inn, e)}
160
+ onkeydown={onLiteralKeydown}
161
+ onclick={(e) => e.stopPropagation()}
162
+ title="Literal value"
163
+ />
164
+ {:else}
165
+ <input
166
+ type="text"
167
+ class="bp-node__literal nodrag nopan"
168
+ value={formatPortLiteral(inn)}
169
+ placeholder="…"
170
+ oninput={(e) => onLiteralInput(inn, e)}
171
+ onkeydown={onLiteralKeydown}
172
+ onclick={(e) => e.stopPropagation()}
173
+ title="Literal value"
174
+ />
175
+ {/if}
176
+ {/if}
177
+ {/if}
178
+ </div>
179
+ <div class="bp-node__cell bp-node__cell--out">
180
+ {#if out && labelOf(out)}
181
+ <span
182
+ class="bp-node__label"
183
+ class:bp-node__label--exec={isExecPort(out)}
184
+ style={isExecPort(out) ? undefined : `color:${pinColor(out)}`}
185
+ >
186
+ {labelOf(out)}
187
+ </span>
188
+ {/if}
189
+ </div>
190
+ </div>
191
+ {/each}
192
+ </div>
193
+
194
+ {#each inputs as port, i (port.id)}
195
+ <Handle
196
+ type="target"
197
+ id={port.id}
198
+ position={Position.Left}
199
+ class={['bp-handle', isExecPort(port) ? 'bp-handle--exec' : 'bp-handle--data']}
200
+ style={handleStyle(port, i)}
201
+ title={`${labelOf(port) || port.id} (${port.dataType ?? port.kind ?? 'any'})`}
202
+ >
203
+ {#if isExecPort(port)}
204
+ <svg viewBox="0 0 10 10" class="bp-handle__play" aria-hidden="true">
205
+ <polygon points="2,1 9,5 2,9" fill="currentColor" />
206
+ </svg>
207
+ {/if}
208
+ </Handle>
209
+ {/each}
210
+
211
+ {#each outputs as port, i (port.id)}
212
+ <Handle
213
+ type="source"
214
+ id={port.id}
215
+ position={Position.Right}
216
+ class={['bp-handle', isExecPort(port) ? 'bp-handle--exec' : 'bp-handle--data']}
217
+ style={handleStyle(port, i)}
218
+ title={`${labelOf(port) || port.id} (${port.dataType ?? port.kind ?? 'any'})`}
219
+ >
220
+ {#if isExecPort(port)}
221
+ <svg viewBox="0 0 10 10" class="bp-handle__play" aria-hidden="true">
222
+ <polygon points="2,1 9,5 2,9" fill="currentColor" />
223
+ </svg>
224
+ {/if}
225
+ </Handle>
226
+ {/each}
227
+ </div>
228
+ {/if}
229
+
230
+ <style>
231
+ .bp-comment {
232
+ box-sizing: border-box;
233
+ width: 100%;
234
+ height: 100%;
235
+ border: 1px dashed rgba(245, 158, 11, 0.55);
236
+ border-radius: 2px;
237
+ padding: 8px 10px;
238
+ pointer-events: all;
239
+ }
240
+ .bp-comment--selected {
241
+ border-color: #f59e0b;
242
+ box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.28);
243
+ }
244
+ .bp-comment__tag {
245
+ margin: 0;
246
+ font-size: 10px;
247
+ font-weight: 700;
248
+ letter-spacing: 0.06em;
249
+ text-transform: uppercase;
250
+ color: rgba(120, 53, 15, 0.75);
251
+ }
252
+ .bp-comment__label {
253
+ margin: 2px 0 0;
254
+ font-size: 13px;
255
+ font-weight: 600;
256
+ color: #422006;
257
+ }
258
+ .bp-reroute {
259
+ position: relative;
260
+ width: 16px;
261
+ height: 16px;
262
+ display: flex;
263
+ align-items: center;
264
+ justify-content: center;
265
+ }
266
+ .bp-reroute__dot {
267
+ width: 10px;
268
+ height: 10px;
269
+ border-radius: 999px;
270
+ border: 1.5px solid #fff;
271
+ box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.2);
272
+ }
273
+ .bp-reroute--selected .bp-reroute__dot {
274
+ box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.55);
275
+ }
276
+ .bp-node {
277
+ position: relative;
278
+ box-sizing: border-box;
279
+ overflow: visible;
280
+ border: 1px solid var(--bp-node-border, #d4d4d8);
281
+ border-radius: 2px;
282
+ background: var(--bp-node-bg, #ffffff);
283
+ box-shadow: 0 2px 10px rgba(15, 23, 42, 0.08);
284
+ }
285
+ .bp-node--selected {
286
+ border-color: #0ea5e9;
287
+ box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.28);
288
+ }
289
+ .bp-node__title {
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 6px;
293
+ height: 32px;
294
+ padding: 0 8px;
295
+ border-radius: 1px 1px 0 0;
296
+ }
297
+ .bp-node__badge {
298
+ flex-shrink: 0;
299
+ border-radius: 2px;
300
+ background: rgba(0, 0, 0, 0.28);
301
+ padding: 1px 5px;
302
+ font-size: 9px;
303
+ font-weight: 700;
304
+ letter-spacing: 0.04em;
305
+ text-transform: uppercase;
306
+ color: rgba(255, 255, 255, 0.95);
307
+ }
308
+ .bp-node__title-text {
309
+ min-width: 0;
310
+ flex: 1;
311
+ overflow: hidden;
312
+ text-overflow: ellipsis;
313
+ white-space: nowrap;
314
+ font-size: 12px;
315
+ font-weight: 600;
316
+ color: #fff;
317
+ }
318
+ .bp-node__body {
319
+ box-sizing: border-box;
320
+ }
321
+ .bp-node__row {
322
+ display: grid;
323
+ grid-template-columns: 1fr 1fr;
324
+ align-items: center;
325
+ width: 100%;
326
+ }
327
+ .bp-node__cell {
328
+ display: flex;
329
+ align-items: center;
330
+ gap: 4px;
331
+ min-width: 0;
332
+ box-sizing: border-box;
333
+ }
334
+ .bp-node__cell--in {
335
+ justify-content: flex-start;
336
+ padding-left: 16px;
337
+ padding-right: 6px;
338
+ }
339
+ .bp-node__cell--out {
340
+ justify-content: flex-end;
341
+ padding-left: 6px;
342
+ padding-right: 16px;
343
+ }
344
+ .bp-node__label {
345
+ display: block;
346
+ overflow: hidden;
347
+ text-overflow: ellipsis;
348
+ white-space: nowrap;
349
+ font-size: 10px;
350
+ font-weight: 600;
351
+ line-height: 1;
352
+ flex-shrink: 0;
353
+ max-width: 56%;
354
+ }
355
+ .bp-node__cell--out .bp-node__label {
356
+ text-align: right;
357
+ max-width: 100%;
358
+ }
359
+ .bp-node__label--exec {
360
+ color: var(--bp-exec-label, #64748b);
361
+ }
362
+ .bp-node__literal {
363
+ min-width: 0;
364
+ flex: 1;
365
+ max-width: 72px;
366
+ height: 16px;
367
+ border: 1px solid var(--bp-literal-border, #cbd5e1);
368
+ border-radius: 2px;
369
+ background: var(--bp-literal-bg, #f8fafc);
370
+ padding: 0 4px;
371
+ font-size: 10px;
372
+ font-weight: 500;
373
+ line-height: 16px;
374
+ color: var(--bp-literal-fg, #0f172a);
375
+ outline: none;
376
+ }
377
+ .bp-node__literal:focus {
378
+ border-color: #0ea5e9;
379
+ }
380
+ .bp-node__literal--bool {
381
+ flex: 0 0 auto;
382
+ width: 12px;
383
+ max-width: 12px;
384
+ height: 12px;
385
+ padding: 0;
386
+ accent-color: #ef4444;
387
+ }
388
+
389
+ :global(.dark) .bp-node {
390
+ --bp-node-bg: #1e1e1e;
391
+ --bp-node-border: rgba(0, 0, 0, 0.55);
392
+ --bp-exec-label: #cbd5e1;
393
+ --bp-literal-bg: #111827;
394
+ --bp-literal-border: #334155;
395
+ --bp-literal-fg: #e2e8f0;
396
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
397
+ }
398
+ :global(.dark) .bp-node--selected {
399
+ border-color: #38bdf8;
400
+ box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.35);
401
+ }
402
+
403
+ :global(.svelte-flow__node-blueprint) {
404
+ padding: 0 !important;
405
+ border: none !important;
406
+ background: transparent !important;
407
+ box-shadow: none !important;
408
+ overflow: visible !important;
409
+ }
410
+ :global(.svelte-flow__node-blueprint .bp-handle.svelte-flow__handle) {
411
+ position: absolute !important;
412
+ z-index: 5;
413
+ display: flex !important;
414
+ align-items: center;
415
+ justify-content: center;
416
+ box-sizing: border-box !important;
417
+ margin: 0 !important;
418
+ border: 1.5px solid var(--bp-handle-border, #fff) !important;
419
+ bottom: auto !important;
420
+ }
421
+ :global(.dark) .svelte-flow__node-blueprint .bp-handle.svelte-flow__handle {
422
+ --bp-handle-border: #111;
423
+ }
424
+ :global(.svelte-flow__node-blueprint .bp-handle--exec) {
425
+ width: 11px !important;
426
+ height: 11px !important;
427
+ min-width: 11px !important;
428
+ min-height: 11px !important;
429
+ border-radius: 1px !important;
430
+ }
431
+ :global(.svelte-flow__node-blueprint .bp-handle--data) {
432
+ width: 12px !important;
433
+ height: 12px !important;
434
+ min-width: 12px !important;
435
+ min-height: 12px !important;
436
+ border-radius: 999px !important;
437
+ }
438
+ :global(.svelte-flow__node-blueprint .svelte-flow__handle-left) {
439
+ left: 0 !important;
440
+ right: auto !important;
441
+ transform: translate(-50%, -50%) !important;
442
+ }
443
+ :global(.svelte-flow__node-blueprint .svelte-flow__handle-right) {
444
+ right: 0 !important;
445
+ left: auto !important;
446
+ transform: translate(50%, -50%) !important;
447
+ }
448
+ :global(.svelte-flow__node-blueprint .bp-handle__play) {
449
+ pointer-events: none;
450
+ width: 7px;
451
+ height: 7px;
452
+ color: #111;
453
+ }
454
+ </style>
@@ -0,0 +1,8 @@
1
+ import { type NodeProps } from '@xyflow/svelte';
2
+ import { type BlueprintFlowNodeData } from '../../../utils/nodeGraph.js';
3
+ type Props = NodeProps & {
4
+ data: BlueprintFlowNodeData;
5
+ };
6
+ declare const GraphBlueprintNode: import("svelte").Component<Props, {}, "">;
7
+ type GraphBlueprintNode = ReturnType<typeof GraphBlueprintNode>;
8
+ export default GraphBlueprintNode;
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import { useSvelteFlow } from '@xyflow/svelte';
3
+
4
+ interface Props {
5
+ onready?: (api: {
6
+ fitView: (opts?: {
7
+ padding?: number;
8
+ duration?: number;
9
+ maxZoom?: number;
10
+ nodes?: { id: string }[];
11
+ }) => void;
12
+ screenToFlowPosition: (pos: { x: number; y: number }) => { x: number; y: number };
13
+ }) => void;
14
+ }
15
+
16
+ let { onready }: Props = $props();
17
+
18
+ const api = useSvelteFlow();
19
+
20
+ $effect(() => {
21
+ onready?.({
22
+ fitView: (opts) => api.fitView(opts),
23
+ screenToFlowPosition: (pos) => api.screenToFlowPosition(pos)
24
+ });
25
+ });
26
+ </script>
@@ -0,0 +1,22 @@
1
+ interface Props {
2
+ onready?: (api: {
3
+ fitView: (opts?: {
4
+ padding?: number;
5
+ duration?: number;
6
+ maxZoom?: number;
7
+ nodes?: {
8
+ id: string;
9
+ }[];
10
+ }) => void;
11
+ screenToFlowPosition: (pos: {
12
+ x: number;
13
+ y: number;
14
+ }) => {
15
+ x: number;
16
+ y: number;
17
+ };
18
+ }) => void;
19
+ }
20
+ declare const GraphFlowBridge: import("svelte").Component<Props, {}, "">;
21
+ type GraphFlowBridge = ReturnType<typeof GraphFlowBridge>;
22
+ export default GraphFlowBridge;
@@ -0,0 +1,12 @@
1
+ import type { StoryObj } from '@storybook/svelte';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import("svelte").Component<Record<string, never>, {}, "">;
5
+ tags: string[];
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+ export declare const Default: Story;
@@ -0,0 +1,9 @@
1
+ import NodeGraphStory from './NodeGraphStory.svelte';
2
+ const meta = {
3
+ title: 'Molecules/NodeGraph',
4
+ component: NodeGraphStory,
5
+ tags: ['autodocs'],
6
+ parameters: { layout: 'fullscreen' }
7
+ };
8
+ export default meta;
9
+ export const Default = {};