@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,443 @@
1
+ import { uid } from './mediaTracks.js';
2
+ const TOP_LEFT = { minX: 0, minY: 0, maxX: 0, maxY: 0 };
3
+ /** Top-left point anchors; offsets encode x/y/w/h without needing parent size. */
4
+ export function defaultSlotFromRect(rect, anchors = TOP_LEFT) {
5
+ const a = { ...anchors };
6
+ // Only valid without parent size when anchors are a point at origin (top-left).
7
+ if (a.minX === 0 && a.minY === 0 && a.maxX === 0 && a.maxY === 0) {
8
+ return {
9
+ anchors: a,
10
+ offsets: {
11
+ left: rect.x,
12
+ top: rect.y,
13
+ right: -(rect.x + rect.w),
14
+ bottom: -(rect.y + rect.h)
15
+ }
16
+ };
17
+ }
18
+ return {
19
+ anchors: a,
20
+ offsets: {
21
+ left: rect.x,
22
+ top: rect.y,
23
+ right: -(rect.x + rect.w),
24
+ bottom: -(rect.y + rect.h)
25
+ }
26
+ };
27
+ }
28
+ /** For top-left point anchors, offsets.left/top = x/y and right/bottom = -(x+w)/-(y+h) when parent size unknown.
29
+ * Prefer slotFromLocalRect from canvasHierarchy when parent size is known. */
30
+ export function rectFromSlot(slot, parentSize) {
31
+ const left = slot.anchors.minX * parentSize.width + slot.offsets.left;
32
+ const top = slot.anchors.minY * parentSize.height + slot.offsets.top;
33
+ const right = slot.anchors.maxX * parentSize.width - slot.offsets.right;
34
+ const bottom = slot.anchors.maxY * parentSize.height - slot.offsets.bottom;
35
+ return {
36
+ x: left,
37
+ y: top,
38
+ w: Math.max(1, right - left),
39
+ h: Math.max(1, bottom - top)
40
+ };
41
+ }
42
+ const LAYER_DEFAULTS = {
43
+ image: { w: 320, h: 240, name: 'Image' },
44
+ video: { w: 480, h: 270, name: 'Video' },
45
+ audio: { w: 200, h: 48, name: 'Audio' },
46
+ text: { w: 280, h: 64, name: 'Text', text: 'Add your text', fontSize: 32 },
47
+ rect: { w: 240, h: 160, name: 'Rectangle', fill: '#3b82f6' },
48
+ roundRect: { w: 240, h: 160, name: 'Rounded', fill: '#8b5cf6', borderRadius: 24 },
49
+ ellipse: { w: 200, h: 200, name: 'Ellipse', fill: '#22c55e' },
50
+ triangle: { w: 200, h: 180, name: 'Triangle', fill: '#f59e0b' },
51
+ star: { w: 200, h: 200, name: 'Star', fill: '#ef4444' },
52
+ hexagon: { w: 200, h: 200, name: 'Hexagon', fill: '#06b6d4' },
53
+ pentagon: { w: 200, h: 200, name: 'Pentagon', fill: '#a855f7' },
54
+ diamond: { w: 180, h: 180, name: 'Diamond', fill: '#f43f5e' },
55
+ heart: { w: 200, h: 180, name: 'Heart', fill: '#ec4899' },
56
+ line: { w: 280, h: 4, name: 'Line', fill: '#94a3b8' },
57
+ arrow: { w: 280, h: 24, name: 'Arrow', fill: '#0f172a' },
58
+ path: { w: 240, h: 180, name: 'Path', fill: '#0f172a' },
59
+ sticky: {
60
+ w: 220,
61
+ h: 220,
62
+ name: 'Sticky note',
63
+ fill: '#fef08a',
64
+ text: 'Note',
65
+ fontSize: 20,
66
+ borderRadius: 4,
67
+ color: '#713f12'
68
+ },
69
+ canvasPanel: { w: 400, h: 300, name: 'Canvas Panel', fill: 'transparent', clipChildren: true },
70
+ overlay: { w: 320, h: 240, name: 'Overlay', fill: 'transparent', clipChildren: true },
71
+ border: { w: 320, h: 240, name: 'Border', fill: '#ffffff', borderRadius: 12, clipChildren: true },
72
+ hBox: { w: 360, h: 80, name: 'Horizontal Box', fill: 'transparent', gap: 8 },
73
+ vBox: { w: 200, h: 240, name: 'Vertical Box', fill: 'transparent', gap: 8 },
74
+ sizeBox: { w: 200, h: 200, name: 'Size Box', fill: 'transparent', clipChildren: true },
75
+ scaleBox: { w: 240, h: 240, name: 'Scale Box', fill: 'transparent', clipChildren: true },
76
+ group: { w: 280, h: 200, name: 'Group', fill: 'transparent' },
77
+ widget: { w: 280, h: 160, name: 'Widget' },
78
+ namedSlot: { w: 200, h: 120, name: 'Named Slot', fill: 'rgba(59,130,246,0.08)' },
79
+ scrollBox: { w: 280, h: 320, name: 'Scroll Box', fill: 'transparent', clipChildren: true },
80
+ wrapBox: { w: 360, h: 200, name: 'Wrap Box', fill: 'transparent', gap: 8 },
81
+ uniformGrid: { w: 320, h: 240, name: 'Uniform Grid', fill: 'transparent', gap: 8 }
82
+ };
83
+ export function emptyCanvasDocument(partial) {
84
+ return {
85
+ version: 2,
86
+ width: partial?.width ?? 1280,
87
+ height: partial?.height ?? 720,
88
+ background: partial?.background ?? '#ffffff',
89
+ layers: (partial?.layers ?? []).map(ensureLayerSlot),
90
+ guides: partial?.guides ?? [],
91
+ guidesLocked: partial?.guidesLocked ?? false,
92
+ widgets: partial?.widgets ?? []
93
+ };
94
+ }
95
+ /** Migrate v1 (flat absolute layers) → v2 (parentId + slot). */
96
+ export function migrateCanvasDocument(doc) {
97
+ const version = doc.version ?? 1;
98
+ if (version >= 2) {
99
+ // Hot path: already v2 with slots — keep identity to avoid thrashing drag reactivity.
100
+ if (doc.version === 2 &&
101
+ doc.widgets &&
102
+ doc.layers.every((l) => l.slot && l.parentId !== undefined)) {
103
+ return doc;
104
+ }
105
+ return {
106
+ ...doc,
107
+ version: 2,
108
+ widgets: doc.widgets ?? [],
109
+ layers: doc.layers.map(ensureLayerSlot)
110
+ };
111
+ }
112
+ return {
113
+ ...doc,
114
+ version: 2,
115
+ widgets: doc.widgets ?? [],
116
+ layers: doc.layers.map((l) => ensureLayerSlot({
117
+ ...l,
118
+ parentId: l.parentId ?? null,
119
+ slot: l.slot ?? defaultSlotFromRect(l.rect),
120
+ clipChildren: l.clipChildren
121
+ }))
122
+ };
123
+ }
124
+ export function ensureLayerSlot(layer) {
125
+ if (layer.slot && layer.parentId !== undefined)
126
+ return layer;
127
+ return {
128
+ ...layer,
129
+ parentId: layer.parentId ?? null,
130
+ slot: layer.slot ?? defaultSlotFromRect(layer.rect)
131
+ };
132
+ }
133
+ export function createCanvasGuide(orientation, position, partial) {
134
+ return {
135
+ id: uid('guide'),
136
+ orientation,
137
+ position,
138
+ locked: partial?.locked ?? false
139
+ };
140
+ }
141
+ export function createCanvasLayer(kind, partial) {
142
+ const d = LAYER_DEFAULTS[kind];
143
+ const rect = partial?.rect ?? { x: 80, y: 80, w: d.w, h: d.h };
144
+ return ensureLayerSlot({
145
+ id: uid('layer'),
146
+ kind,
147
+ name: partial?.name ?? d.name,
148
+ src: partial?.src,
149
+ text: partial?.text ?? d.text,
150
+ fill: partial?.fill ?? d.fill,
151
+ stroke: partial?.stroke,
152
+ strokeWidth: partial?.strokeWidth ?? (kind === 'line' || kind === 'arrow' || kind === 'path' ? 4 : undefined),
153
+ fontSize: partial?.fontSize ?? d.fontSize,
154
+ fontWeight: partial?.fontWeight,
155
+ fontFamily: partial?.fontFamily,
156
+ fontStyle: partial?.fontStyle,
157
+ textDecoration: partial?.textDecoration,
158
+ letterSpacing: partial?.letterSpacing,
159
+ lineHeight: partial?.lineHeight,
160
+ textAlign: partial?.textAlign ?? (kind === 'text' || kind === 'sticky' ? 'left' : undefined),
161
+ color: partial?.color ?? d.color ?? (kind === 'text' ? '#0f172a' : undefined),
162
+ textBackground: partial?.textBackground,
163
+ objectFit: partial?.objectFit ?? (kind === 'image' || kind === 'video' ? 'cover' : undefined),
164
+ borderRadius: partial?.borderRadius ?? d.borderRadius,
165
+ rotation: partial?.rotation ?? 0,
166
+ flipX: partial?.flipX ?? false,
167
+ flipY: partial?.flipY ?? false,
168
+ shadowBlur: partial?.shadowBlur,
169
+ shadowColor: partial?.shadowColor,
170
+ blur: partial?.blur,
171
+ points: partial?.points,
172
+ closed: partial?.closed ?? false,
173
+ parentId: partial?.parentId ?? null,
174
+ slot: partial?.slot,
175
+ clipChildren: partial?.clipChildren ?? d.clipChildren ?? false,
176
+ gap: partial?.gap ?? d.gap,
177
+ slotName: partial?.slotName ?? (kind === 'namedSlot' ? partial?.name ?? d.name : undefined),
178
+ fillSlot: partial?.fillSlot,
179
+ columns: partial?.columns ?? (kind === 'uniformGrid' ? 2 : undefined),
180
+ definitionId: partial?.definitionId,
181
+ overrides: partial?.overrides,
182
+ rect,
183
+ zIndex: partial?.zIndex ?? 0,
184
+ opacity: partial?.opacity ?? 1,
185
+ visible: partial?.visible ?? true,
186
+ locked: partial?.locked ?? false
187
+ });
188
+ }
189
+ function canvasValuesEqual(a, b) {
190
+ if (a === b)
191
+ return true;
192
+ // Treat unset numeric effects as 0
193
+ if ((a == null || a === 0) && (b == null || b === 0))
194
+ return true;
195
+ if (a == null && b == null)
196
+ return true;
197
+ return false;
198
+ }
199
+ /** Default value for a layer field (same as createCanvasLayer would use). */
200
+ export function canvasLayerFieldDefault(kind, field) {
201
+ const d = LAYER_DEFAULTS[kind];
202
+ switch (field) {
203
+ case 'opacity':
204
+ return 1;
205
+ case 'rotation':
206
+ return 0;
207
+ case 'visible':
208
+ return true;
209
+ case 'locked':
210
+ return false;
211
+ case 'flipX':
212
+ case 'flipY':
213
+ return false;
214
+ case 'blur':
215
+ case 'shadowBlur':
216
+ return undefined;
217
+ case 'shadowColor':
218
+ return undefined;
219
+ case 'fill':
220
+ return d.fill;
221
+ case 'stroke':
222
+ return undefined;
223
+ case 'strokeWidth':
224
+ return kind === 'line' || kind === 'arrow' || kind === 'path' ? 4 : undefined;
225
+ case 'fontSize':
226
+ return d.fontSize;
227
+ case 'fontWeight':
228
+ case 'fontFamily':
229
+ case 'fontStyle':
230
+ case 'textDecoration':
231
+ case 'letterSpacing':
232
+ case 'lineHeight':
233
+ return undefined;
234
+ case 'textAlign':
235
+ return kind === 'text' || kind === 'sticky' ? 'left' : undefined;
236
+ case 'color':
237
+ return d.color ?? (kind === 'text' ? '#0f172a' : undefined);
238
+ case 'textBackground':
239
+ return undefined;
240
+ case 'objectFit':
241
+ return kind === 'image' || kind === 'video' ? 'cover' : undefined;
242
+ case 'borderRadius':
243
+ return d.borderRadius;
244
+ case 'gap':
245
+ return d.gap;
246
+ case 'columns':
247
+ return kind === 'uniformGrid' ? 2 : undefined;
248
+ case 'clipChildren':
249
+ return d.clipChildren ?? false;
250
+ case 'text':
251
+ return d.text;
252
+ case 'name':
253
+ return d.name;
254
+ default:
255
+ return undefined;
256
+ }
257
+ }
258
+ export function isCanvasFieldModified(layer, field) {
259
+ const cur = layer[field];
260
+ const def = canvasLayerFieldDefault(layer.kind, field);
261
+ return !canvasValuesEqual(cur, def);
262
+ }
263
+ export function resetCanvasField(layer, field) {
264
+ return { [field]: canvasLayerFieldDefault(layer.kind, field) };
265
+ }
266
+ export function reorderCanvasLayers(layers, orderedIds) {
267
+ const map = new Map(layers.map((l) => [l.id, l]));
268
+ const next = [];
269
+ orderedIds.forEach((id, i) => {
270
+ const layer = map.get(id);
271
+ if (layer) {
272
+ next.push({ ...layer, zIndex: i });
273
+ map.delete(id);
274
+ }
275
+ });
276
+ for (const layer of map.values()) {
277
+ next.push({ ...layer, zIndex: next.length });
278
+ }
279
+ return next;
280
+ }
281
+ export function updateCanvasLayer(doc, layerId, updater) {
282
+ return {
283
+ ...doc,
284
+ layers: doc.layers.map((l) => (l.id === layerId ? updater(l) : l))
285
+ };
286
+ }
287
+ export function updateCanvasLayers(doc, ids, updater) {
288
+ const set = new Set(ids);
289
+ return {
290
+ ...doc,
291
+ layers: doc.layers.map((l) => (set.has(l.id) ? updater(l) : l))
292
+ };
293
+ }
294
+ export function snapLayerRect(rect, cellSize, enabled, bounds, minW = 24, minH = 24, guides = [], guideThreshold = 8) {
295
+ const snap = (v) => (enabled ? Math.round(v / cellSize) * cellSize : v);
296
+ let w = Math.max(minW, enabled ? snap(rect.w) : rect.w);
297
+ let h = Math.max(minH, enabled ? snap(rect.h) : rect.h);
298
+ let x = enabled ? snap(rect.x) : rect.x;
299
+ let y = enabled ? snap(rect.y) : rect.y;
300
+ if (guides.length && guideThreshold > 0) {
301
+ const snapped = snapRectToGuides({ x, y, w, h }, guides, guideThreshold);
302
+ x = snapped.x;
303
+ y = snapped.y;
304
+ }
305
+ x = Math.min(Math.max(0, x), Math.max(0, bounds.width - w));
306
+ y = Math.min(Math.max(0, y), Math.max(0, bounds.height - h));
307
+ w = Math.min(w, bounds.width - x);
308
+ h = Math.min(h, bounds.height - y);
309
+ return { x, y, w, h };
310
+ }
311
+ /** Snap left / center / right (or top / middle / bottom) edges to guides. */
312
+ export function snapRectToGuides(rect, guides, threshold = 8) {
313
+ let { x, y, w, h } = rect;
314
+ let bestDx = threshold + 1;
315
+ let bestDy = threshold + 1;
316
+ let nextX = x;
317
+ let nextY = y;
318
+ for (const g of guides) {
319
+ if (g.orientation === 'vertical') {
320
+ const candidates = [x, x + w / 2, x + w];
321
+ for (const edge of candidates) {
322
+ const d = Math.abs(edge - g.position);
323
+ if (d < bestDx) {
324
+ bestDx = d;
325
+ nextX = x + (g.position - edge);
326
+ }
327
+ }
328
+ }
329
+ else {
330
+ const candidates = [y, y + h / 2, y + h];
331
+ for (const edge of candidates) {
332
+ const d = Math.abs(edge - g.position);
333
+ if (d < bestDy) {
334
+ bestDy = d;
335
+ nextY = y + (g.position - edge);
336
+ }
337
+ }
338
+ }
339
+ }
340
+ if (bestDx <= threshold)
341
+ x = nextX;
342
+ if (bestDy <= threshold)
343
+ y = nextY;
344
+ return { x, y, w, h };
345
+ }
346
+ export function alignLayerRect(rect, bounds, align) {
347
+ if (align === 'full') {
348
+ return { x: 0, y: 0, w: bounds.width, h: bounds.height };
349
+ }
350
+ let { x, y, w, h } = rect;
351
+ switch (align) {
352
+ case 'left':
353
+ x = 0;
354
+ break;
355
+ case 'center-h':
356
+ x = Math.max(0, (bounds.width - w) / 2);
357
+ break;
358
+ case 'right':
359
+ x = Math.max(0, bounds.width - w);
360
+ break;
361
+ case 'top':
362
+ y = 0;
363
+ break;
364
+ case 'center-v':
365
+ y = Math.max(0, (bounds.height - h) / 2);
366
+ break;
367
+ case 'bottom':
368
+ y = Math.max(0, bounds.height - h);
369
+ break;
370
+ case 'center':
371
+ x = Math.max(0, (bounds.width - w) / 2);
372
+ y = Math.max(0, (bounds.height - h) / 2);
373
+ break;
374
+ }
375
+ return { x, y, w, h };
376
+ }
377
+ export const CANVAS_PRESETS = [
378
+ { id: 'hd', label: 'HD · 1280×720', width: 1280, height: 720 },
379
+ { id: 'fhd', label: 'Full HD · 1920×1080', width: 1920, height: 1080 },
380
+ { id: 'square', label: 'Instagram · 1080×1080', width: 1080, height: 1080 },
381
+ { id: 'story', label: 'Story · 1080×1920', width: 1080, height: 1920 },
382
+ { id: 'landscape', label: 'Landscape · 1600×900', width: 1600, height: 900 },
383
+ { id: 'presentation', label: 'Presentation · 1920×1080', width: 1920, height: 1080 },
384
+ { id: 'a4', label: 'A4 · 794×1123', width: 794, height: 1123 },
385
+ { id: 'twitter', label: 'X Post · 1600×900', width: 1600, height: 900 }
386
+ ];
387
+ export function presetIdForSize(width, height) {
388
+ const match = CANVAS_PRESETS.find((p) => p.width === width && p.height === height);
389
+ return match?.id ?? 'custom';
390
+ }
391
+ /** Build a path layer from absolute document points. */
392
+ export function createPathFromDocPoints(docPoints, opts) {
393
+ const pad = 8;
394
+ let minX = Infinity;
395
+ let minY = Infinity;
396
+ let maxX = -Infinity;
397
+ let maxY = -Infinity;
398
+ for (const p of docPoints) {
399
+ minX = Math.min(minX, p.x);
400
+ minY = Math.min(minY, p.y);
401
+ maxX = Math.max(maxX, p.x);
402
+ maxY = Math.max(maxY, p.y);
403
+ }
404
+ const w = Math.max(24, maxX - minX + pad * 2);
405
+ const h = Math.max(24, maxY - minY + pad * 2);
406
+ const x = minX - pad;
407
+ const y = minY - pad;
408
+ const points = docPoints.map((p) => ({
409
+ x: w > 0 ? (p.x - x) / w : 0,
410
+ y: h > 0 ? (p.y - y) / h : 0
411
+ }));
412
+ return createCanvasLayer('path', {
413
+ name: opts?.name ?? (opts?.closed ? 'Shape' : 'Path'),
414
+ fill: opts?.fill ?? '#0f172a',
415
+ strokeWidth: opts?.strokeWidth ?? 3,
416
+ closed: opts?.closed ?? false,
417
+ points,
418
+ zIndex: opts?.zIndex ?? 0,
419
+ rect: { x, y, w, h }
420
+ });
421
+ }
422
+ /** Recompute rect + normalized points after editing absolute doc points. */
423
+ export function rebakePathLayer(layer, docPoints) {
424
+ const next = createPathFromDocPoints(docPoints, {
425
+ closed: layer.closed,
426
+ fill: layer.fill,
427
+ strokeWidth: layer.strokeWidth,
428
+ name: layer.name,
429
+ zIndex: layer.zIndex
430
+ });
431
+ return {
432
+ ...layer,
433
+ points: next.points,
434
+ rect: next.rect,
435
+ closed: next.closed
436
+ };
437
+ }
438
+ /** Map normalized path points → document space using an absolute (or local) rect. */
439
+ export function pathPointsToDoc(layer, absRect) {
440
+ const pts = layer.points ?? [];
441
+ const { x, y, w, h } = absRect ?? layer.rect;
442
+ return pts.map((p) => ({ x: x + p.x * w, y: y + p.y * h }));
443
+ }
@@ -0,0 +1,10 @@
1
+ import type { CanvasDocument } from './canvasDocument.js';
2
+ export type CanvasExportFormat = 'png' | 'jpeg' | 'json';
3
+ /** Parse CSS color alpha; `transparent` / missing → 0. */
4
+ export declare function backgroundAlpha(color: string | undefined): number;
5
+ /** Renders the artboard at 1:1 document pixels into an offscreen canvas. */
6
+ export declare function renderCanvasDocument(doc: CanvasDocument, opts?: {
7
+ opaqueBackground?: boolean;
8
+ }): Promise<HTMLCanvasElement>;
9
+ export declare function exportCanvasBlob(doc: CanvasDocument, format?: 'png' | 'jpeg', quality?: number): Promise<Blob>;
10
+ export declare function downloadBlob(blob: Blob, filename: string): void;