@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
@@ -1,6 +1,7 @@
1
1
  <script lang="ts" module>
2
2
  export type { WidgetRect } from '../WidgetCanvas/widgetCanvasContext.js';
3
3
  export type WidgetResizeEdge = 'se' | 'e' | 's' | 'sw' | 'w' | 'ne' | 'n' | 'nw';
4
+ export type WidgetHandleStyle = 'default' | 'canva';
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
@@ -37,6 +38,34 @@
37
38
  * recomiendo 'release'.
38
39
  */
39
40
  snapMode?: 'live' | 'release';
41
+ /**
42
+ * Resize handle look. `canva` = blue border + circular corner/edge handles.
43
+ */
44
+ handleStyle?: WidgetHandleStyle;
45
+ /**
46
+ * When false, no header chrome; freeform drag starts from the body.
47
+ * Use with canvas/artboard layers (Canva-like).
48
+ */
49
+ showChrome?: boolean;
50
+ /** Remove body padding so media/text fill the frame. */
51
+ flush?: boolean;
52
+ /**
53
+ * Selection chrome for canva: true = selected (border on; handles on hover),
54
+ * false = hide handles. Default: handles on hover.
55
+ */
56
+ handlesVisible?: boolean;
57
+ /**
58
+ * Raise z-index while selected (`handlesVisible`). Canvas layers should
59
+ * set `false` so stacking order stays truthful; drag still raises via `mode`.
60
+ */
61
+ raiseOnSelect?: boolean;
62
+ /**
63
+ * Document stacking order (e.g. layer.zIndex). When set, freeform z-index
64
+ * follows this and only boosts temporarily while selected/dragging.
65
+ */
66
+ stackIndex?: number;
67
+ /** CSS transform on the freeform root (e.g. rotate/flip) so chrome rotates too. */
68
+ transform?: string;
40
69
  collapsible?: boolean;
41
70
  collapsed?: boolean;
42
71
  loading?: boolean;
@@ -57,6 +86,8 @@
57
86
  onreload?: () => void | Promise<void>;
58
87
  oncollapse?: (collapsed: boolean) => void;
59
88
  onchange?: (rect: WidgetRect) => void;
89
+ /** Fired when freeform drag/resize starts (after move threshold) or ends. */
90
+ oninteract?: (active: boolean) => void;
60
91
  }
61
92
 
62
93
  let {
@@ -71,6 +102,13 @@
71
102
  minH = 120,
72
103
  snap,
73
104
  snapMode = 'release',
105
+ handleStyle = 'default',
106
+ showChrome = true,
107
+ flush = false,
108
+ handlesVisible,
109
+ raiseOnSelect = true,
110
+ stackIndex,
111
+ transform: frameTransform,
74
112
  collapsible = false,
75
113
  collapsed = $bindable(false),
76
114
  loading = false,
@@ -89,7 +127,8 @@
89
127
  onremove,
90
128
  onreload,
91
129
  oncollapse,
92
- onchange
130
+ onchange,
131
+ oninteract
93
132
  }: WidgetFrameProps = $props();
94
133
 
95
134
  const canvas = getContext<WidgetCanvasContext | undefined>(WIDGET_CANVAS_CONTEXT);
@@ -97,14 +136,24 @@
97
136
  let mode = $state<'move' | 'resize' | null>(null);
98
137
  let edge = $state<WidgetResizeEdge>('se');
99
138
  let start = $state({ px: 0, py: 0, x: 0, y: 0, w: 0, h: 0 });
139
+ /** Pointer down awaiting movement threshold before starting freeform drag (preserves dblclick). */
140
+ let pendingMove = $state<{
141
+ pointerId: number;
142
+ px: number;
143
+ py: number;
144
+ x: number;
145
+ y: number;
146
+ w: number;
147
+ h: number;
148
+ } | null>(null);
100
149
  let localBusy = $state(false);
101
- let zIndex = $state(1);
150
+ let localZ = $state(1);
102
151
  /** Tamaño local cuando resizable sin freeform (EditableChrome, etc.) */
103
152
  let localW = $state<number | null>(null);
104
153
  let localH = $state<number | null>(null);
105
154
  let rootEl = $state<HTMLDivElement | null>(null);
106
155
 
107
- const showDragHandle = $derived((editable || freeform) && draggable);
156
+ const showDragHandle = $derived(showChrome && (editable || freeform) && draggable);
108
157
  const showResizeHandle = $derived((editable || freeform) && resizable && !collapsed);
109
158
  const showReload = $derived(!!onreload);
110
159
  const busy = $derived(loading || reloading || localBusy);
@@ -114,17 +163,25 @@
114
163
  const delegateResize = $derived(!freeform && !!onresizestart);
115
164
  const builtinResize = $derived(freeform || (resizable && !delegateResize));
116
165
  const showHeader = $derived(
117
- !!title ||
118
- showDragHandle ||
119
- !!actions ||
120
- (editable && !!onremove) ||
121
- collapsible ||
122
- showReload
166
+ showChrome &&
167
+ (!!title ||
168
+ showDragHandle ||
169
+ !!actions ||
170
+ (editable && !!onremove) ||
171
+ collapsible ||
172
+ showReload)
173
+ );
174
+ const isCanva = $derived(handleStyle === 'canva');
175
+ const baseStack = $derived(stackIndex ?? localZ);
176
+ const paintZ = $derived(
177
+ mode || (raiseOnSelect && handlesVisible) ? 1_000_000 + baseStack : baseStack
123
178
  );
124
179
 
125
180
  function bringToFront() {
126
181
  if (!freeform) return;
127
- zIndex = Date.now();
182
+ // Controlled stack: temporary raise comes from `paintZ` via handlesVisible/mode.
183
+ if (stackIndex != null) return;
184
+ localZ = Date.now();
128
185
  }
129
186
 
130
187
  function finalizeRect(next: WidgetRect): WidgetRect {
@@ -155,9 +212,8 @@
155
212
  bringToFront();
156
213
  ondragstart?.(e);
157
214
  if (!freeform) return;
158
- e.preventDefault();
159
- mode = 'move';
160
- start = { px: e.clientX, py: e.clientY, ...rect };
215
+ // Defer actual drag until the pointer moves — keeps double-click working.
216
+ pendingMove = { pointerId: e.pointerId, px: e.clientX, py: e.clientY, ...rect };
161
217
  (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);
162
218
  }
163
219
 
@@ -166,11 +222,13 @@
166
222
  e.preventDefault();
167
223
  e.stopPropagation();
168
224
  bringToFront();
225
+ pendingMove = null;
169
226
  onresizestart?.(e, nextEdge);
170
227
  if (delegateResize || !builtinResize) return;
171
228
 
172
229
  mode = 'resize';
173
230
  edge = nextEdge;
231
+ oninteract?.(true);
174
232
  if (freeform) {
175
233
  start = { px: e.clientX, py: e.clientY, ...rect };
176
234
  } else {
@@ -188,9 +246,28 @@
188
246
  }
189
247
 
190
248
  function onPointerMove(e: PointerEvent) {
249
+ if (pendingMove && !mode) {
250
+ const dxScreen = e.clientX - pendingMove.px;
251
+ const dyScreen = e.clientY - pendingMove.py;
252
+ if (Math.hypot(dxScreen, dyScreen) < 4) return;
253
+ e.preventDefault();
254
+ mode = 'move';
255
+ start = {
256
+ px: pendingMove.px,
257
+ py: pendingMove.py,
258
+ x: pendingMove.x,
259
+ y: pendingMove.y,
260
+ w: pendingMove.w,
261
+ h: pendingMove.h
262
+ };
263
+ pendingMove = null;
264
+ oninteract?.(true);
265
+ }
266
+
191
267
  if (!mode || !builtinResize) return;
192
- const dx = e.clientX - start.px;
193
- const dy = e.clientY - start.py;
268
+ const s = canvas?.scale || 1;
269
+ const dx = (e.clientX - start.px) / s;
270
+ const dy = (e.clientY - start.py) / s;
194
271
 
195
272
  if (mode === 'move') {
196
273
  if (!freeform) return;
@@ -218,6 +295,35 @@
218
295
  if (edge.includes('w')) x = start.x + (start.w - w);
219
296
  if (edge.includes('n')) y = start.y + (start.h - h);
220
297
 
298
+ // Shift: lock aspect ratio to the size at resize start
299
+ if (e.shiftKey && start.w > 0 && start.h > 0) {
300
+ const ratio = start.w / start.h;
301
+ const isCorner = edge === 'ne' || edge === 'nw' || edge === 'se' || edge === 'sw';
302
+ if (isCorner) {
303
+ const dw = Math.abs(w - start.w);
304
+ const dh = Math.abs(h - start.h);
305
+ if (dw * start.h >= dh * start.w) {
306
+ h = Math.max(minH, w / ratio);
307
+ w = h * ratio;
308
+ } else {
309
+ w = Math.max(minW, h * ratio);
310
+ h = w / ratio;
311
+ }
312
+ w = Math.max(minW, w);
313
+ h = Math.max(minH, h);
314
+ if (edge.includes('w')) x = start.x + (start.w - w);
315
+ if (edge.includes('n')) y = start.y + (start.h - h);
316
+ } else if (edge === 'e' || edge === 'w') {
317
+ h = Math.max(minH, w / ratio);
318
+ y = start.y + (start.h - h) / 2;
319
+ if (edge === 'w') x = start.x + (start.w - w);
320
+ } else if (edge === 'n' || edge === 's') {
321
+ w = Math.max(minW, h * ratio);
322
+ x = start.x + (start.w - w) / 2;
323
+ if (edge === 'n') y = start.y + (start.h - h);
324
+ }
325
+ }
326
+
221
327
  if (freeform) {
222
328
  emitRect({ x, y, w, h });
223
329
  } else {
@@ -228,12 +334,22 @@
228
334
  }
229
335
 
230
336
  function onPointerUp() {
337
+ const wasInteracting = mode === 'move' || mode === 'resize' || !!pendingMove;
338
+ pendingMove = null;
231
339
  if (mode === 'resize' && freeform) {
232
340
  mode = null;
233
341
  emitRect({ ...rect });
342
+ if (wasInteracting) oninteract?.(false);
343
+ return;
344
+ }
345
+ if (mode === 'move' && freeform) {
346
+ mode = null;
347
+ emitRect({ ...rect });
348
+ oninteract?.(false);
234
349
  return;
235
350
  }
236
351
  mode = null;
352
+ if (wasInteracting) oninteract?.(false);
237
353
  }
238
354
 
239
355
  function toggleCollapse() {
@@ -251,7 +367,7 @@
251
367
  }
252
368
  }
253
369
 
254
- const freeformEdges: { edge: WidgetResizeEdge; class: string }[] = [
370
+ const freeformEdgesDefault: { edge: WidgetResizeEdge; class: string }[] = [
255
371
  { edge: 'e', class: 'top-2 bottom-2 -right-px w-1.5 cursor-e-resize' },
256
372
  { edge: 's', class: 'left-2 right-2 -bottom-px h-1.5 cursor-s-resize' },
257
373
  { edge: 'w', class: 'top-2 bottom-2 -left-px w-1.5 cursor-w-resize' },
@@ -262,9 +378,25 @@
262
378
  { edge: 'nw', class: '-left-px -top-px h-3 w-3 cursor-nw-resize' }
263
379
  ];
264
380
 
381
+ const freeformEdgesCanva: { edge: WidgetResizeEdge; class: string }[] = [
382
+ { edge: 'n', class: 'left-1/2 top-0 h-3 w-3 -translate-x-1/2 -translate-y-1/2 cursor-n-resize' },
383
+ { edge: 's', class: 'left-1/2 bottom-0 h-3 w-3 -translate-x-1/2 translate-y-1/2 cursor-s-resize' },
384
+ { edge: 'e', class: 'top-1/2 right-0 h-3 w-3 translate-x-1/2 -translate-y-1/2 cursor-e-resize' },
385
+ { edge: 'w', class: 'top-1/2 left-0 h-3 w-3 -translate-x-1/2 -translate-y-1/2 cursor-w-resize' },
386
+ { edge: 'nw', class: 'left-0 top-0 h-3 w-3 -translate-x-1/2 -translate-y-1/2 cursor-nw-resize' },
387
+ { edge: 'ne', class: 'right-0 top-0 h-3 w-3 translate-x-1/2 -translate-y-1/2 cursor-ne-resize' },
388
+ { edge: 'sw', class: 'bottom-0 left-0 h-3 w-3 -translate-x-1/2 translate-y-1/2 cursor-sw-resize' },
389
+ { edge: 'se', class: 'bottom-0 right-0 h-3 w-3 translate-x-1/2 translate-y-1/2 cursor-se-resize' }
390
+ ];
391
+
392
+ const freeformEdges = $derived(isCanva ? freeformEdgesCanva : freeformEdgesDefault);
393
+
265
394
  const rootStyle = $derived.by(() => {
266
395
  if (freeform) {
267
- return `left:${rect.x}px;top:${rect.y}px;width:${rect.w}px;height:${collapsed ? 'auto' : `${rect.h}px`};z-index:${mode ? zIndex + 1000 : zIndex};`;
396
+ const xf = frameTransform
397
+ ? `transform:${frameTransform};transform-origin:0 0;`
398
+ : '';
399
+ return `left:${rect.x}px;top:${rect.y}px;width:${rect.w}px;height:${collapsed ? 'auto' : `${rect.h}px`};z-index:${paintZ};${xf}`;
268
400
  }
269
401
  if (localW != null) {
270
402
  const h =
@@ -277,15 +409,32 @@
277
409
  const btnClass =
278
410
  'inline-flex h-7 w-7 items-center justify-center rounded-md text-muted transition-colors hover:bg-surface-overlay hover:text-secondary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40 disabled:opacity-50';
279
411
 
280
- /** Handles only intercept pointers while this widget is hovered (or resizing), so neighbors can sit flush */
281
- const edgeAccent = $derived(
282
- [
412
+ /** Handles only intercept pointers while hovered (or resizing), so neighbors can sit flush */
413
+ const edgeAccent = $derived.by(() => {
414
+ if (isCanva) {
415
+ const visible =
416
+ mode === 'resize'
417
+ ? 'pointer-events-auto opacity-100'
418
+ : handlesVisible === false
419
+ ? 'pointer-events-none opacity-0'
420
+ : 'pointer-events-none opacity-0 group-hover/widget:pointer-events-auto group-hover/widget:opacity-100';
421
+ return [
422
+ 'absolute z-20 touch-none rounded-full border-2 border-[#3b82f6] bg-white shadow-sm',
423
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#3b82f6]/40',
424
+ visible
425
+ ].join(' ');
426
+ }
427
+ return [
283
428
  'absolute z-10 touch-none rounded-sm bg-transparent transition-colors',
284
429
  'hover:bg-brand-500/70 focus-visible:bg-brand-500/70 focus-visible:outline-none',
285
430
  mode === 'resize'
286
431
  ? 'pointer-events-auto bg-brand-500/40'
287
432
  : 'pointer-events-none group-hover/widget:pointer-events-auto group-hover/widget:bg-brand-500/35'
288
- ].join(' ')
433
+ ].join(' ');
434
+ });
435
+
436
+ const canvaBorder = $derived(
437
+ isCanva && (handlesVisible === true || mode === 'resize' || mode === 'move')
289
438
  );
290
439
  </script>
291
440
 
@@ -293,15 +442,27 @@
293
442
  <div
294
443
  bind:this={rootEl}
295
444
  class={[
296
- 'group/widget flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border border-border bg-surface-elevated',
445
+ 'group/widget flex min-h-0 min-w-0 flex-col overflow-visible',
446
+ !isCanva && 'overflow-hidden rounded-xl border border-border bg-surface-elevated',
447
+ isCanva && 'bg-transparent',
448
+ canvaBorder && 'outline outline-2 outline-[#3b82f6]',
297
449
  freeform ? 'absolute shadow-md' : 'relative',
450
+ isCanva && 'shadow-none',
298
451
  collapsed && 'h-auto self-start',
299
452
  mode === 'move' && 'cursor-grabbing opacity-95',
300
- mode === 'resize' && 'ring-1 ring-brand-500/40',
453
+ mode === 'resize' && !isCanva && 'ring-1 ring-brand-500/40',
454
+ !showChrome && freeform && draggable && 'cursor-move',
301
455
  className
302
456
  ]}
303
457
  style={rootStyle}
304
- onpointerdown={bringToFront}
458
+ onpointerdown={(e) => {
459
+ bringToFront();
460
+ if (!showChrome && freeform && draggable && e.button === 0) {
461
+ const t = e.target as HTMLElement;
462
+ if (t?.closest('[data-resize-handle]')) return;
463
+ beginMove(e);
464
+ }
465
+ }}
305
466
  onpointermove={onPointerMove}
306
467
  onpointerup={onPointerUp}
307
468
  onpointercancel={onPointerUp}
@@ -401,7 +562,12 @@
401
562
  {/if}
402
563
 
403
564
  {#if !collapsed}
404
- <div class="relative min-h-0 flex-1 overflow-auto p-3">
565
+ <div
566
+ class={[
567
+ 'relative min-h-0 flex-1',
568
+ flush ? 'overflow-hidden p-0' : 'overflow-auto p-3'
569
+ ]}
570
+ >
405
571
  {#if busy}
406
572
  {#if loadingMode === 'spinner'}
407
573
  <div
@@ -451,6 +617,7 @@
451
617
  {#each freeformEdges as h (h.edge)}
452
618
  <!-- svelte-ignore a11y_no_static_element_interactions -->
453
619
  <div
620
+ data-resize-handle
454
621
  class={[edgeAccent, h.class]}
455
622
  role="separator"
456
623
  aria-orientation={h.edge === 'e' || h.edge === 'w' ? 'vertical' : 'horizontal'}
@@ -459,17 +626,19 @@
459
626
  ></div>
460
627
  {/each}
461
628
 
462
- <!-- SE grip (visual only, small) -->
463
- <div
464
- class={[
465
- 'pointer-events-none absolute bottom-0.5 right-0.5 z-20 flex h-2.5 w-2.5 items-center justify-center',
466
- 'text-muted/60 transition-colors group-hover/widget:text-brand-500'
467
- ]}
468
- aria-hidden="true"
469
- >
470
- <svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.75" class="h-2.5 w-2.5">
471
- <path stroke-linecap="round" d="M7 11L11 7M4 11L11 4" />
472
- </svg>
473
- </div>
629
+ {#if !isCanva}
630
+ <!-- SE grip (visual only, small) -->
631
+ <div
632
+ class={[
633
+ 'pointer-events-none absolute bottom-0.5 right-0.5 z-20 flex h-2.5 w-2.5 items-center justify-center',
634
+ 'text-muted/60 transition-colors group-hover/widget:text-brand-500'
635
+ ]}
636
+ aria-hidden="true"
637
+ >
638
+ <svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.75" class="h-2.5 w-2.5">
639
+ <path stroke-linecap="round" d="M7 11L11 7M4 11L11 4" />
640
+ </svg>
641
+ </div>
642
+ {/if}
474
643
  {/if}
475
644
  </div>
@@ -1,5 +1,6 @@
1
1
  export type { WidgetRect } from '../WidgetCanvas/widgetCanvasContext.js';
2
2
  export type WidgetResizeEdge = 'se' | 'e' | 's' | 'sw' | 'w' | 'ne' | 'n' | 'nw';
3
+ export type WidgetHandleStyle = 'default' | 'canva';
3
4
  import type { Snippet } from 'svelte';
4
5
  import { type WidgetRect } from '../WidgetCanvas/widgetCanvasContext.js';
5
6
  interface WidgetFrameProps {
@@ -21,6 +22,34 @@ interface WidgetFrameProps {
21
22
  * recomiendo 'release'.
22
23
  */
23
24
  snapMode?: 'live' | 'release';
25
+ /**
26
+ * Resize handle look. `canva` = blue border + circular corner/edge handles.
27
+ */
28
+ handleStyle?: WidgetHandleStyle;
29
+ /**
30
+ * When false, no header chrome; freeform drag starts from the body.
31
+ * Use with canvas/artboard layers (Canva-like).
32
+ */
33
+ showChrome?: boolean;
34
+ /** Remove body padding so media/text fill the frame. */
35
+ flush?: boolean;
36
+ /**
37
+ * Selection chrome for canva: true = selected (border on; handles on hover),
38
+ * false = hide handles. Default: handles on hover.
39
+ */
40
+ handlesVisible?: boolean;
41
+ /**
42
+ * Raise z-index while selected (`handlesVisible`). Canvas layers should
43
+ * set `false` so stacking order stays truthful; drag still raises via `mode`.
44
+ */
45
+ raiseOnSelect?: boolean;
46
+ /**
47
+ * Document stacking order (e.g. layer.zIndex). When set, freeform z-index
48
+ * follows this and only boosts temporarily while selected/dragging.
49
+ */
50
+ stackIndex?: number;
51
+ /** CSS transform on the freeform root (e.g. rotate/flip) so chrome rotates too. */
52
+ transform?: string;
24
53
  collapsible?: boolean;
25
54
  collapsed?: boolean;
26
55
  loading?: boolean;
@@ -41,6 +70,8 @@ interface WidgetFrameProps {
41
70
  onreload?: () => void | Promise<void>;
42
71
  oncollapse?: (collapsed: boolean) => void;
43
72
  onchange?: (rect: WidgetRect) => void;
73
+ /** Fired when freeform drag/resize starts (after move threshold) or ends. */
74
+ oninteract?: (active: boolean) => void;
44
75
  }
45
76
  declare const WidgetFrame: import("svelte").Component<WidgetFrameProps, {}, "rect" | "collapsed">;
46
77
  type WidgetFrame = ReturnType<typeof WidgetFrame>;
@@ -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 AudioEditorStory from './AudioEditorStory.svelte';
2
+ const meta = {
3
+ title: 'Organisms/AudioEditor',
4
+ component: AudioEditorStory,
5
+ tags: ['autodocs'],
6
+ parameters: { layout: 'fullscreen' }
7
+ };
8
+ export default meta;
9
+ export const Default = {};