@r2digisolutions/components 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/README.md +1 -1
  2. package/dist/components/atoms/Checkbox/Checkbox.svelte +10 -3
  3. package/dist/components/atoms/Checkbox/Checkbox.svelte.d.ts +3 -0
  4. package/dist/components/atoms/IconButton/IconButton.svelte +1 -1
  5. package/dist/components/atoms/Input/Input.svelte +17 -2
  6. package/dist/components/atoms/Input/Input.svelte.d.ts +6 -1
  7. package/dist/components/atoms/MarqueeRect/MarqueeRect.svelte +21 -0
  8. package/dist/components/atoms/MarqueeRect/MarqueeRect.svelte.d.ts +8 -0
  9. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.stories.js +8 -0
  10. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte +122 -0
  11. package/dist/components/atoms/MediaKindIcon/MediaKindIcon.svelte.d.ts +11 -0
  12. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte +12 -0
  13. package/dist/components/atoms/MediaKindIcon/MediaKindIconStory.svelte.d.ts +18 -0
  14. package/dist/components/atoms/PanKnob/PanKnob.stories.d.ts +9 -0
  15. package/dist/components/atoms/PanKnob/PanKnob.stories.js +8 -0
  16. package/dist/components/atoms/PanKnob/PanKnob.svelte +218 -0
  17. package/dist/components/atoms/PanKnob/PanKnob.svelte.d.ts +19 -0
  18. package/dist/components/atoms/PanKnob/PanKnobStory.svelte +15 -0
  19. package/dist/components/atoms/PanKnob/PanKnobStory.svelte.d.ts +3 -0
  20. package/dist/components/atoms/Playhead/Playhead.stories.js +8 -0
  21. package/dist/components/atoms/Playhead/Playhead.svelte +59 -0
  22. package/dist/components/atoms/Playhead/Playhead.svelte.d.ts +13 -0
  23. package/dist/components/atoms/Playhead/PlayheadStory.svelte +9 -0
  24. package/dist/components/atoms/Playhead/PlayheadStory.svelte.d.ts +18 -0
  25. package/dist/components/atoms/Textarea/Textarea.svelte +4 -1
  26. package/dist/components/atoms/Textarea/Textarea.svelte.d.ts +1 -0
  27. package/dist/components/atoms/TimeRuler/TimeRuler.stories.js +8 -0
  28. package/dist/components/atoms/TimeRuler/TimeRuler.svelte +58 -0
  29. package/dist/components/atoms/TimeRuler/TimeRuler.svelte.d.ts +10 -0
  30. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte +7 -0
  31. package/dist/components/atoms/TimeRuler/TimeRulerStory.svelte.d.ts +18 -0
  32. package/dist/components/atoms/Toggle/Toggle.svelte +1 -1
  33. package/dist/components/atoms/Tooltip/Tooltip.svelte +1 -1
  34. package/dist/components/atoms/TrimHandle/TrimHandle.stories.js +8 -0
  35. package/dist/components/atoms/TrimHandle/TrimHandle.svelte +63 -0
  36. package/dist/components/atoms/TrimHandle/TrimHandle.svelte.d.ts +12 -0
  37. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte +11 -0
  38. package/dist/components/atoms/TrimHandle/TrimHandleStory.svelte.d.ts +18 -0
  39. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.d.ts +9 -0
  40. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.stories.js +8 -0
  41. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte +102 -0
  42. package/dist/components/molecules/AiAssistPanel/AiAssistPanel.svelte.d.ts +20 -0
  43. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte +34 -0
  44. package/dist/components/molecules/AiAssistPanel/AiAssistPanelStory.svelte.d.ts +3 -0
  45. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte +112 -62
  46. package/dist/components/molecules/BulkActionBar/BulkActionBar.svelte.d.ts +2 -0
  47. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.stories.js +8 -0
  48. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte +117 -0
  49. package/dist/components/molecules/BulkEditPanel/BulkEditPanel.svelte.d.ts +23 -0
  50. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte +18 -0
  51. package/dist/components/molecules/BulkEditPanel/BulkEditPanelStory.svelte.d.ts +18 -0
  52. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.stories.js +8 -0
  53. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte +858 -0
  54. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanel.svelte.d.ts +43 -0
  55. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte +7 -0
  56. package/dist/components/molecules/CanvasElementsPanel/CanvasElementsPanelStory.svelte.d.ts +18 -0
  57. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.d.ts +9 -0
  58. package/dist/components/molecules/CanvasInspector/CanvasInspector.stories.js +8 -0
  59. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte +1140 -0
  60. package/dist/components/molecules/CanvasInspector/CanvasInspector.svelte.d.ts +28 -0
  61. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte +20 -0
  62. package/dist/components/molecules/CanvasInspector/CanvasInspectorStory.svelte.d.ts +3 -0
  63. package/dist/components/molecules/CodeEditor/CodeEditor.svelte +13 -10
  64. package/dist/components/molecules/ColorPicker/ColorPicker.svelte +167 -97
  65. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.d.ts +9 -0
  66. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.stories.js +8 -0
  67. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte +108 -0
  68. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenu.svelte.d.ts +18 -0
  69. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte +15 -0
  70. package/dist/components/molecules/ColumnVisibilityMenu/ColumnVisibilityMenuStory.svelte.d.ts +3 -0
  71. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.stories.d.ts +9 -0
  72. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.stories.js +8 -0
  73. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.svelte +412 -0
  74. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanel.svelte.d.ts +14 -0
  75. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanelStory.svelte +27 -0
  76. package/dist/components/molecules/ConditionalFormatPanel/ConditionalFormatPanelStory.svelte.d.ts +3 -0
  77. package/dist/components/molecules/ConflictResolver/ConflictResolver.stories.js +8 -0
  78. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte +73 -0
  79. package/dist/components/molecules/ConflictResolver/ConflictResolver.svelte.d.ts +16 -0
  80. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte +11 -0
  81. package/dist/components/molecules/ConflictResolver/ConflictResolverStory.svelte.d.ts +18 -0
  82. package/dist/components/molecules/ContextMenu/ContextMenu.svelte +237 -41
  83. package/dist/components/molecules/ContextMenu/ContextMenu.svelte.d.ts +17 -1
  84. package/dist/components/molecules/DateTimePicker/DateTimePicker.svelte.d.ts +1 -1
  85. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.d.ts +9 -0
  86. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.stories.js +8 -0
  87. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte +56 -0
  88. package/dist/components/molecules/ExpressionEditor/ExpressionEditor.svelte.d.ts +12 -0
  89. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte +12 -0
  90. package/dist/components/molecules/ExpressionEditor/ExpressionEditorStory.svelte.d.ts +3 -0
  91. package/dist/components/molecules/FilterList/FilterList.stories.d.ts +9 -0
  92. package/dist/components/molecules/FilterList/FilterList.stories.js +8 -0
  93. package/dist/components/molecules/FilterList/FilterList.svelte +101 -0
  94. package/dist/components/molecules/FilterList/FilterList.svelte.d.ts +18 -0
  95. package/dist/components/molecules/FilterList/FilterListStory.svelte +31 -0
  96. package/dist/components/molecules/FilterList/FilterListStory.svelte.d.ts +3 -0
  97. package/dist/components/molecules/FormDateTimePicker/FormDateTimePicker.svelte.d.ts +1 -1
  98. package/dist/components/molecules/Gauge/Gauge.stories.d.ts +1 -1
  99. package/dist/components/molecules/InfiniteScroll/InfiniteScroll.stories.d.ts +1 -1
  100. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.d.ts +9 -0
  101. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.stories.js +8 -0
  102. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte +94 -0
  103. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowser.svelte.d.ts +15 -0
  104. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte +18 -0
  105. package/dist/components/molecules/MediaAssetBrowser/MediaAssetBrowserStory.svelte.d.ts +3 -0
  106. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.stories.js +8 -0
  107. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte +50 -0
  108. package/dist/components/molecules/MediaAssetCard/MediaAssetCard.svelte.d.ts +11 -0
  109. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte +13 -0
  110. package/dist/components/molecules/MediaAssetCard/MediaAssetCardStory.svelte.d.ts +18 -0
  111. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.stories.js +8 -0
  112. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte +380 -0
  113. package/dist/components/molecules/MediaLayerItem/MediaLayerItem.svelte.d.ts +33 -0
  114. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte +14 -0
  115. package/dist/components/molecules/MediaLayerItem/MediaLayerItemStory.svelte.d.ts +18 -0
  116. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.d.ts +9 -0
  117. package/dist/components/molecules/MediaLayerList/MediaLayerList.stories.js +8 -0
  118. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte +399 -0
  119. package/dist/components/molecules/MediaLayerList/MediaLayerList.svelte.d.ts +37 -0
  120. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte +24 -0
  121. package/dist/components/molecules/MediaLayerList/MediaLayerListStory.svelte.d.ts +3 -0
  122. package/dist/components/molecules/MediaStage/MediaStage.stories.d.ts +9 -0
  123. package/dist/components/molecules/MediaStage/MediaStage.stories.js +8 -0
  124. package/dist/components/molecules/MediaStage/MediaStage.svelte +1498 -0
  125. package/dist/components/molecules/MediaStage/MediaStage.svelte.d.ts +45 -0
  126. package/dist/components/molecules/MediaStage/MediaStageStory.svelte +35 -0
  127. package/dist/components/molecules/MediaStage/MediaStageStory.svelte.d.ts +3 -0
  128. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.d.ts +9 -0
  129. package/dist/components/molecules/MediaTimeline/MediaTimeline.stories.js +8 -0
  130. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte +131 -0
  131. package/dist/components/molecules/MediaTimeline/MediaTimeline.svelte.d.ts +19 -0
  132. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte +20 -0
  133. package/dist/components/molecules/MediaTimeline/MediaTimelineStory.svelte.d.ts +3 -0
  134. package/dist/components/molecules/MixerChannel/MixerChannel.stories.d.ts +9 -0
  135. package/dist/components/molecules/MixerChannel/MixerChannel.stories.js +8 -0
  136. package/dist/components/molecules/MixerChannel/MixerChannel.svelte +92 -0
  137. package/dist/components/molecules/MixerChannel/MixerChannel.svelte.d.ts +11 -0
  138. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte +13 -0
  139. package/dist/components/molecules/MixerChannel/MixerChannelStory.svelte.d.ts +3 -0
  140. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte +454 -0
  141. package/dist/components/molecules/NodeGraph/GraphBlueprintNode.svelte.d.ts +8 -0
  142. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte +26 -0
  143. package/dist/components/molecules/NodeGraph/GraphFlowBridge.svelte.d.ts +22 -0
  144. package/dist/components/molecules/NodeGraph/NodeGraph.stories.d.ts +12 -0
  145. package/dist/components/molecules/NodeGraph/NodeGraph.stories.js +9 -0
  146. package/dist/components/molecules/NodeGraph/NodeGraph.svelte +1409 -0
  147. package/dist/components/molecules/NodeGraph/NodeGraph.svelte.d.ts +33 -0
  148. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte +90 -0
  149. package/dist/components/molecules/NodeGraph/NodeGraphStory.svelte.d.ts +3 -0
  150. package/dist/components/molecules/NodePalette/NodePalette.stories.js +8 -0
  151. package/dist/components/molecules/NodePalette/NodePalette.svelte +86 -0
  152. package/dist/components/molecules/NodePalette/NodePalette.svelte.d.ts +11 -0
  153. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte +11 -0
  154. package/dist/components/molecules/NodePalette/NodePaletteStory.svelte.d.ts +18 -0
  155. package/dist/components/molecules/Poll/Poll.stories.d.ts +1 -1
  156. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.stories.js +8 -0
  157. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte +72 -0
  158. package/dist/components/molecules/ProgramMonitor/ProgramMonitor.svelte.d.ts +12 -0
  159. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte +16 -0
  160. package/dist/components/molecules/ProgramMonitor/ProgramMonitorStory.svelte.d.ts +18 -0
  161. package/dist/components/molecules/PropertyField/PropertyField.svelte +57 -3
  162. package/dist/components/molecules/PropertyField/PropertyField.svelte.d.ts +10 -0
  163. package/dist/components/molecules/PropertyField/PropertyFieldStory.svelte +21 -0
  164. package/dist/components/molecules/PropertyGroup/PropertyGroup.svelte +1 -1
  165. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.d.ts +9 -0
  166. package/dist/components/molecules/QueryBuilder/QueryBuilder.stories.js +8 -0
  167. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte +52 -0
  168. package/dist/components/molecules/QueryBuilder/QueryBuilder.svelte.d.ts +18 -0
  169. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte +62 -0
  170. package/dist/components/molecules/QueryBuilder/QueryBuilderStory.svelte.d.ts +3 -0
  171. package/dist/components/molecules/RelationPicker/RelationPicker.stories.d.ts +9 -0
  172. package/dist/components/molecules/RelationPicker/RelationPicker.stories.js +8 -0
  173. package/dist/components/molecules/RelationPicker/RelationPicker.svelte +180 -0
  174. package/dist/components/molecules/RelationPicker/RelationPicker.svelte.d.ts +24 -0
  175. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte +16 -0
  176. package/dist/components/molecules/RelationPicker/RelationPickerStory.svelte.d.ts +3 -0
  177. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.d.ts +9 -0
  178. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.stories.js +8 -0
  179. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte +154 -0
  180. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilder.svelte.d.ts +12 -0
  181. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte +16 -0
  182. package/dist/components/molecules/SchemaFieldBuilder/SchemaFieldBuilderStory.svelte.d.ts +3 -0
  183. package/dist/components/molecules/SecretField/SecretField.stories.d.ts +9 -0
  184. package/dist/components/molecules/SecretField/SecretField.stories.js +8 -0
  185. package/dist/components/molecules/SecretField/SecretField.svelte +58 -0
  186. package/dist/components/molecules/SecretField/SecretField.svelte.d.ts +15 -0
  187. package/dist/components/molecules/SecretField/SecretFieldStory.svelte +8 -0
  188. package/dist/components/molecules/SecretField/SecretFieldStory.svelte.d.ts +3 -0
  189. package/dist/components/molecules/SplitPane/SplitPane.svelte +96 -37
  190. package/dist/components/molecules/SplitPane/SplitPane.svelte.d.ts +10 -2
  191. package/dist/components/molecules/TableToolbar/TableToolbar.svelte.d.ts +1 -1
  192. package/dist/components/molecules/Terminal/Terminal.stories.js +20 -0
  193. package/dist/components/molecules/Terminal/Terminal.svelte +238 -0
  194. package/dist/components/molecules/Terminal/Terminal.svelte.d.ts +19 -0
  195. package/dist/components/molecules/Terminal/TerminalStory.svelte +47 -0
  196. package/dist/components/molecules/Terminal/TerminalStory.svelte.d.ts +6 -0
  197. package/dist/components/molecules/TimelineClip/TimelineClip.stories.js +8 -0
  198. package/dist/components/molecules/TimelineClip/TimelineClip.svelte +116 -0
  199. package/dist/components/molecules/TimelineClip/TimelineClip.svelte.d.ts +15 -0
  200. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte +18 -0
  201. package/dist/components/molecules/TimelineClip/TimelineClipStory.svelte.d.ts +18 -0
  202. package/dist/components/molecules/TimelineTrack/TimelineTrack.stories.js +8 -0
  203. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte +56 -0
  204. package/dist/components/molecules/TimelineTrack/TimelineTrack.svelte.d.ts +16 -0
  205. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte +35 -0
  206. package/dist/components/molecules/TimelineTrack/TimelineTrackStory.svelte.d.ts +18 -0
  207. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.stories.js +8 -0
  208. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte +158 -0
  209. package/dist/components/molecules/TraceWaterfall/TraceWaterfall.svelte.d.ts +18 -0
  210. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte +55 -0
  211. package/dist/components/molecules/TraceWaterfall/TraceWaterfallStory.svelte.d.ts +18 -0
  212. package/dist/components/molecules/TrackHeader/TrackHeader.stories.d.ts +9 -0
  213. package/dist/components/molecules/TrackHeader/TrackHeader.stories.js +8 -0
  214. package/dist/components/molecules/TrackHeader/TrackHeader.svelte +54 -0
  215. package/dist/components/molecules/TrackHeader/TrackHeader.svelte.d.ts +9 -0
  216. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte +10 -0
  217. package/dist/components/molecules/TrackHeader/TrackHeaderStory.svelte.d.ts +3 -0
  218. package/dist/components/molecules/TransportControls/TransportControls.stories.d.ts +9 -0
  219. package/dist/components/molecules/TransportControls/TransportControls.stories.js +8 -0
  220. package/dist/components/molecules/TransportControls/TransportControls.svelte +53 -0
  221. package/dist/components/molecules/TransportControls/TransportControls.svelte.d.ts +12 -0
  222. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte +18 -0
  223. package/dist/components/molecules/TransportControls/TransportControlsStory.svelte.d.ts +3 -0
  224. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.stories.js +8 -0
  225. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte +117 -0
  226. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanel.svelte.d.ts +20 -0
  227. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte +36 -0
  228. package/dist/components/molecules/VersionHistoryPanel/VersionHistoryPanelStory.svelte.d.ts +18 -0
  229. package/dist/components/molecules/VideoPlayer/VideoPlayer.stories.d.ts +1 -1
  230. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.d.ts +9 -0
  231. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.stories.js +8 -0
  232. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte +59 -0
  233. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeader.svelte.d.ts +9 -0
  234. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte +10 -0
  235. package/dist/components/molecules/VideoTrackHeader/VideoTrackHeaderStory.svelte.d.ts +3 -0
  236. package/dist/components/molecules/WaveformRegion/WaveformRegion.stories.js +8 -0
  237. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte +82 -0
  238. package/dist/components/molecules/WaveformRegion/WaveformRegion.svelte.d.ts +13 -0
  239. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte +17 -0
  240. package/dist/components/molecules/WaveformRegion/WaveformRegionStory.svelte.d.ts +18 -0
  241. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte +13 -4
  242. package/dist/components/molecules/WidgetCanvas/WidgetCanvas.svelte.d.ts +3 -1
  243. package/dist/components/molecules/WidgetCanvas/widgetCanvasContext.d.ts +2 -0
  244. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte +206 -37
  245. package/dist/components/molecules/WidgetFrame/WidgetFrame.svelte.d.ts +31 -0
  246. package/dist/components/organisms/AssetPickerPage/AssetPickerPage.svelte.d.ts +1 -1
  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 +273 -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/BacklogPage/BacklogPage.svelte.d.ts +1 -1
  254. package/dist/components/organisms/BlogEditor/BlogEditor.stories.d.ts +12 -0
  255. package/dist/components/organisms/BlogEditor/BlogEditor.stories.js +9 -0
  256. package/dist/components/organisms/BlogEditor/BlogEditor.svelte +1208 -0
  257. package/dist/components/organisms/BlogEditor/BlogEditor.svelte.d.ts +16 -0
  258. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte +144 -0
  259. package/dist/components/organisms/BlogEditor/BlogEditorStory.svelte.d.ts +3 -0
  260. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte +28 -0
  261. package/dist/components/organisms/BlogEditor/DemoBlogCard.svelte.d.ts +10 -0
  262. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte +34 -0
  263. package/dist/components/organisms/BlogEditor/DemoBlogStats.svelte.d.ts +11 -0
  264. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte +13 -0
  265. package/dist/components/organisms/BlogEditor/DemoBlogWidget.svelte.d.ts +8 -0
  266. package/dist/components/organisms/BlogRenderer/BlogRenderer.stories.js +8 -0
  267. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte +469 -0
  268. package/dist/components/organisms/BlogRenderer/BlogRenderer.svelte.d.ts +14 -0
  269. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte +20 -0
  270. package/dist/components/organisms/BlogRenderer/BlogRendererStory.svelte.d.ts +18 -0
  271. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.d.ts +12 -0
  272. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.stories.js +9 -0
  273. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte +1012 -0
  274. package/dist/components/organisms/BlueprintEditor/BlueprintEditor.svelte.d.ts +16 -0
  275. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte +76 -0
  276. package/dist/components/organisms/BlueprintEditor/BlueprintEditorStory.svelte.d.ts +3 -0
  277. package/dist/components/organisms/CalendarApp/CalendarApp.svelte.d.ts +1 -1
  278. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.d.ts +12 -0
  279. package/dist/components/organisms/CanvasEditor/CanvasEditor.stories.js +9 -0
  280. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte +1680 -0
  281. package/dist/components/organisms/CanvasEditor/CanvasEditor.svelte.d.ts +18 -0
  282. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte +329 -0
  283. package/dist/components/organisms/CanvasEditor/CanvasEditorStory.svelte.d.ts +3 -0
  284. package/dist/components/organisms/DashboardBuilderPage/DashboardBuilderPage.svelte.d.ts +1 -1
  285. package/dist/components/organisms/DataGrid/DataGrid.stories.d.ts +65 -0
  286. package/dist/components/organisms/DataGrid/DataGrid.stories.js +95 -0
  287. package/dist/components/organisms/DataGrid/DataGrid.svelte +2264 -0
  288. package/dist/components/organisms/DataGrid/DataGrid.svelte.d.ts +99 -0
  289. package/dist/components/organisms/DataGrid/DataGridStory.svelte +659 -0
  290. package/dist/components/organisms/DataGrid/DataGridStory.svelte.d.ts +11 -0
  291. package/dist/components/organisms/DataGrid/breakpoints.d.ts +10 -0
  292. package/dist/components/organisms/DataGrid/breakpoints.js +20 -0
  293. package/dist/components/organisms/DataGrid/cellEditors.d.ts +8 -0
  294. package/dist/components/organisms/DataGrid/cellEditors.js +59 -0
  295. package/dist/components/organisms/DataGrid/conditionalFormat.d.ts +11 -0
  296. package/dist/components/organisms/DataGrid/conditionalFormat.js +98 -0
  297. package/dist/components/organisms/DataGrid/filterRows.d.ts +5 -0
  298. package/dist/components/organisms/DataGrid/filterRows.js +60 -0
  299. package/dist/components/organisms/DataGrid/marks.d.ts +9 -0
  300. package/dist/components/organisms/DataGrid/marks.js +91 -0
  301. package/dist/components/organisms/DataGrid/types.d.ts +126 -0
  302. package/dist/components/organisms/DataGrid/types.js +21 -0
  303. package/dist/components/organisms/DesktopShell/DesktopShell.svelte.d.ts +1 -1
  304. package/dist/components/organisms/EditorShell/EditorShell.svelte +123 -28
  305. package/dist/components/organisms/EditorShell/EditorShell.svelte.d.ts +21 -1
  306. package/dist/components/organisms/FileUploader/FileUploader.svelte +77 -15
  307. package/dist/components/organisms/FileUploader/FileUploader.svelte.d.ts +11 -0
  308. package/dist/components/organisms/ImportWizard/ImportWizard.stories.js +8 -0
  309. package/dist/components/organisms/ImportWizard/ImportWizard.svelte +209 -0
  310. package/dist/components/organisms/ImportWizard/ImportWizard.svelte.d.ts +22 -0
  311. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte +16 -0
  312. package/dist/components/organisms/ImportWizard/ImportWizardStory.svelte.d.ts +18 -0
  313. package/dist/components/organisms/ResourceStudio/ResourceStudio.stories.d.ts +33 -0
  314. package/dist/components/organisms/ResourceStudio/ResourceStudio.stories.js +56 -0
  315. package/dist/components/organisms/ResourceStudio/ResourceStudio.svelte +830 -0
  316. package/dist/components/organisms/ResourceStudio/ResourceStudio.svelte.d.ts +68 -0
  317. package/dist/components/organisms/ResourceStudio/ResourceStudioStory.svelte +600 -0
  318. package/dist/components/organisms/ResourceStudio/ResourceStudioStory.svelte.d.ts +7 -0
  319. package/dist/components/organisms/ResourceStudio/fieldsToColumns.d.ts +4 -0
  320. package/dist/components/organisms/ResourceStudio/fieldsToColumns.js +20 -0
  321. package/dist/components/organisms/ResourceStudio/fieldsToSchema.d.ts +6 -0
  322. package/dist/components/organisms/ResourceStudio/fieldsToSchema.js +53 -0
  323. package/dist/components/organisms/ResourceStudio/types.d.ts +69 -0
  324. package/dist/components/organisms/ResourceStudio/types.js +15 -0
  325. package/dist/components/organisms/Scheduler/Scheduler.svelte.d.ts +1 -1
  326. package/dist/components/organisms/SchemaForm/SchemaForm.svelte +10 -3
  327. package/dist/components/organisms/SchemaForm/SchemaForm.svelte.d.ts +1 -0
  328. package/dist/components/organisms/VideoEditor/VideoEditor.stories.d.ts +12 -0
  329. package/dist/components/organisms/VideoEditor/VideoEditor.stories.js +9 -0
  330. package/dist/components/organisms/VideoEditor/VideoEditor.svelte +308 -0
  331. package/dist/components/organisms/VideoEditor/VideoEditor.svelte.d.ts +13 -0
  332. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte +10 -0
  333. package/dist/components/organisms/VideoEditor/VideoEditorStory.svelte.d.ts +3 -0
  334. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.d.ts +12 -0
  335. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.stories.js +9 -0
  336. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte +22 -0
  337. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplate.svelte.d.ts +13 -0
  338. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte +8 -0
  339. package/dist/components/templates/AudioEditorTemplate/AudioEditorTemplateStory.svelte.d.ts +3 -0
  340. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.d.ts +12 -0
  341. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.stories.js +9 -0
  342. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte +32 -0
  343. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplate.svelte.d.ts +17 -0
  344. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte +21 -0
  345. package/dist/components/templates/CanvasEditorTemplate/CanvasEditorTemplateStory.svelte.d.ts +3 -0
  346. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.stories.d.ts +25 -0
  347. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.stories.js +18 -0
  348. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.svelte +192 -0
  349. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplate.svelte.d.ts +62 -0
  350. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplateStory.svelte +129 -0
  351. package/dist/components/templates/ResourceStudioTemplate/ResourceStudioTemplateStory.svelte.d.ts +7 -0
  352. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.d.ts +12 -0
  353. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.stories.js +9 -0
  354. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte +22 -0
  355. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplate.svelte.d.ts +13 -0
  356. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte +8 -0
  357. package/dist/components/templates/VideoEditorTemplate/VideoEditorTemplateStory.svelte.d.ts +3 -0
  358. package/dist/index.d.ts +94 -1
  359. package/dist/index.js +68 -0
  360. package/dist/types/xyflow-svelte.d.ts +62 -0
  361. package/dist/utils/audioProject.d.ts +19 -0
  362. package/dist/utils/audioProject.js +70 -0
  363. package/dist/utils/blogDocument.d.ts +175 -0
  364. package/dist/utils/blogDocument.js +220 -0
  365. package/dist/utils/blueprintRuntime.d.ts +34 -0
  366. package/dist/utils/blueprintRuntime.js +289 -0
  367. package/dist/utils/canvasDocument.d.ts +239 -0
  368. package/dist/utils/canvasDocument.js +443 -0
  369. package/dist/utils/canvasExport.d.ts +10 -0
  370. package/dist/utils/canvasExport.js +469 -0
  371. package/dist/utils/canvasHierarchy.d.ts +189 -0
  372. package/dist/utils/canvasHierarchy.js +674 -0
  373. package/dist/utils/canvasHistory.d.ts +19 -0
  374. package/dist/utils/canvasHistory.js +48 -0
  375. package/dist/utils/canvasWidget.d.ts +81 -0
  376. package/dist/utils/canvasWidget.js +597 -0
  377. package/dist/utils/marqueeSelect.d.ts +48 -0
  378. package/dist/utils/marqueeSelect.js +189 -0
  379. package/dist/utils/mediaTime.d.ts +16 -0
  380. package/dist/utils/mediaTime.js +57 -0
  381. package/dist/utils/mediaTracks.d.ts +61 -0
  382. package/dist/utils/mediaTracks.js +102 -0
  383. package/dist/utils/nodeGraph.d.ts +354 -0
  384. package/dist/utils/nodeGraph.js +1453 -0
  385. package/dist/utils/queryBridge.d.ts +18 -0
  386. package/dist/utils/queryBridge.js +118 -0
  387. package/dist/utils/videoSequence.d.ts +13 -0
  388. package/dist/utils/videoSequence.js +63 -0
  389. package/package.json +5 -2
@@ -0,0 +1,597 @@
1
+ import { createCanvasLayer, defaultSlotFromRect, ensureLayerSlot } from './canvasDocument.js';
2
+ import { computeAbsoluteRects, contentPadding, deleteSubtree, getChildren, getSubtreeIds, slotFromLocalRect } from './canvasHierarchy.js';
3
+ import { uid } from './mediaTracks.js';
4
+ const EXPOSEABLE_FIELDS = [
5
+ 'text',
6
+ 'fill',
7
+ 'src',
8
+ 'color',
9
+ 'opacity',
10
+ 'visible',
11
+ 'name',
12
+ 'fontSize',
13
+ 'borderRadius',
14
+ 'stroke',
15
+ 'strokeWidth',
16
+ 'textBackground',
17
+ 'objectFit'
18
+ ];
19
+ export function isExposeableField(field) {
20
+ return EXPOSEABLE_FIELDS.includes(field);
21
+ }
22
+ export function createWidgetDefinition(partial) {
23
+ return {
24
+ id: partial?.id ?? uid('widget'),
25
+ name: partial?.name ?? 'New Widget',
26
+ width: partial?.width ?? 320,
27
+ height: partial?.height ?? 200,
28
+ background: partial?.background ?? 'transparent',
29
+ layers: (partial?.layers ?? []).map(ensureLayerSlot),
30
+ exposed: partial?.exposed ?? []
31
+ };
32
+ }
33
+ function remapLayerIds(layers) {
34
+ const idMap = new Map();
35
+ for (const l of layers)
36
+ idMap.set(l.id, uid('layer'));
37
+ const next = layers.map((l) => ({
38
+ ...l,
39
+ id: idMap.get(l.id),
40
+ parentId: l.parentId && idMap.has(l.parentId) ? idMap.get(l.parentId) : null,
41
+ slot: l.slot
42
+ ? {
43
+ ...l.slot,
44
+ anchors: { ...l.slot.anchors },
45
+ offsets: { ...l.slot.offsets },
46
+ padding: l.slot.padding ? { ...l.slot.padding } : undefined,
47
+ alignment: l.slot.alignment ? { ...l.slot.alignment } : undefined
48
+ }
49
+ : defaultSlotFromRect(l.rect),
50
+ overrides: l.overrides ? { ...l.overrides } : undefined
51
+ }));
52
+ return { layers: next, idMap };
53
+ }
54
+ /**
55
+ * Create a User Widget from selected scene layers (must share same parent).
56
+ * Replaces selection with a single widget instance.
57
+ */
58
+ export function createWidgetFromSelection(doc, selectedIds, name = 'Widget') {
59
+ if (!selectedIds.length)
60
+ return null;
61
+ const set = new Set(selectedIds);
62
+ const selected = doc.layers.filter((l) => set.has(l.id));
63
+ if (!selected.length)
64
+ return null;
65
+ const parentId = selected[0].parentId ?? null;
66
+ if (!selected.every((l) => (l.parentId ?? null) === parentId))
67
+ return null;
68
+ const rootSize = { width: doc.width, height: doc.height };
69
+ const absMap = computeAbsoluteRects(doc.layers, rootSize);
70
+ let minX = Infinity;
71
+ let minY = Infinity;
72
+ let maxX = -Infinity;
73
+ let maxY = -Infinity;
74
+ const subtreeIds = new Set();
75
+ for (const id of selectedIds) {
76
+ for (const sid of getSubtreeIds(doc.layers, id))
77
+ subtreeIds.add(sid);
78
+ const r = absMap.get(id) ?? selected.find((s) => s.id === id).rect;
79
+ minX = Math.min(minX, r.x);
80
+ minY = Math.min(minY, r.y);
81
+ maxX = Math.max(maxX, r.x + r.w);
82
+ maxY = Math.max(maxY, r.y + r.h);
83
+ }
84
+ const defW = Math.max(24, maxX - minX);
85
+ const defH = Math.max(24, maxY - minY);
86
+ const rawLayers = doc.layers.filter((l) => subtreeIds.has(l.id));
87
+ const { layers: remapped, idMap } = remapLayerIds(rawLayers);
88
+ // Re-root selected roots under null and convert abs → local within widget
89
+ const defLayers = remapped.map((l) => {
90
+ const oldId = [...idMap.entries()].find(([, n]) => n === l.id)?.[0];
91
+ const wasRoot = oldId ? selectedIds.includes(oldId) : false;
92
+ if (wasRoot) {
93
+ const abs = oldId ? absMap.get(oldId) : null;
94
+ const local = abs
95
+ ? { x: abs.x - minX, y: abs.y - minY, w: abs.w, h: abs.h }
96
+ : l.rect;
97
+ return {
98
+ ...l,
99
+ parentId: null,
100
+ rect: local,
101
+ slot: defaultSlotFromRect(local)
102
+ };
103
+ }
104
+ return l;
105
+ });
106
+ const definition = createWidgetDefinition({
107
+ name,
108
+ width: defW,
109
+ height: defH,
110
+ layers: defLayers,
111
+ exposed: []
112
+ });
113
+ const zIndex = Math.min(...selected.map((s) => s.zIndex));
114
+ const instanceRect = { x: minX, y: minY, w: defW, h: defH };
115
+ // Convert instance rect to parent-local (respect content padding)
116
+ let localRect = instanceRect;
117
+ let slot = defaultSlotFromRect(instanceRect);
118
+ if (parentId) {
119
+ const parentLayer = doc.layers.find((l) => l.id === parentId) ?? null;
120
+ const parentAbs = absMap.get(parentId) ?? { x: 0, y: 0, w: doc.width, h: doc.height };
121
+ const pad = parentLayer
122
+ ? contentPadding(parentLayer)
123
+ : { left: 0, top: 0, right: 0, bottom: 0 };
124
+ const contentW = Math.max(1, parentAbs.w - pad.left - pad.right);
125
+ const contentH = Math.max(1, parentAbs.h - pad.top - pad.bottom);
126
+ localRect = {
127
+ x: instanceRect.x - parentAbs.x - pad.left,
128
+ y: instanceRect.y - parentAbs.y - pad.top,
129
+ w: defW,
130
+ h: defH
131
+ };
132
+ slot = slotFromLocalRect({ width: contentW, height: contentH }, localRect);
133
+ }
134
+ else {
135
+ slot = slotFromLocalRect({ width: doc.width, height: doc.height }, instanceRect);
136
+ localRect = instanceRect;
137
+ }
138
+ const instance = createCanvasLayer('widget', {
139
+ name,
140
+ parentId,
141
+ definitionId: definition.id,
142
+ overrides: {},
143
+ rect: localRect,
144
+ slot,
145
+ zIndex
146
+ });
147
+ let layers = doc.layers.filter((l) => !subtreeIds.has(l.id));
148
+ layers = [...layers, instance];
149
+ return {
150
+ doc: {
151
+ ...doc,
152
+ version: 2,
153
+ widgets: [...(doc.widgets ?? []), definition],
154
+ layers
155
+ },
156
+ definitionId: definition.id,
157
+ instanceId: instance.id
158
+ };
159
+ }
160
+ /** Place a new instance of a widget definition into the document. */
161
+ export function placeWidgetInstance(doc, definitionId, opts) {
162
+ const def = (doc.widgets ?? []).find((w) => w.id === definitionId);
163
+ if (!def)
164
+ return null;
165
+ const parentId = opts?.parentId ?? null;
166
+ const absMap = computeAbsoluteRects(doc.layers, { width: doc.width, height: doc.height });
167
+ const parentLayer = parentId ? (doc.layers.find((l) => l.id === parentId) ?? null) : null;
168
+ const parentAbs = parentId
169
+ ? (absMap.get(parentId) ?? { x: 0, y: 0, w: doc.width, h: doc.height })
170
+ : { x: 0, y: 0, w: doc.width, h: doc.height };
171
+ const pad = parentLayer
172
+ ? contentPadding(parentLayer)
173
+ : { left: 0, top: 0, right: 0, bottom: 0 };
174
+ const contentW = Math.max(1, parentAbs.w - pad.left - pad.right);
175
+ const contentH = Math.max(1, parentAbs.h - pad.top - pad.bottom);
176
+ const x = opts?.x ?? (parentId ? Math.round((contentW - def.width) / 2) : 80);
177
+ const y = opts?.y ?? (parentId ? Math.round((contentH - def.height) / 2) : 80);
178
+ const rect = { x, y, w: def.width, h: def.height };
179
+ const siblings = getChildren(doc.layers, parentId);
180
+ const zIndex = siblings.length ? Math.max(...siblings.map((s) => s.zIndex)) + 1 : 0;
181
+ const instance = createCanvasLayer('widget', {
182
+ name: opts?.name ?? def.name,
183
+ parentId,
184
+ definitionId,
185
+ overrides: {},
186
+ rect,
187
+ slot: slotFromLocalRect(parentId ? { width: contentW, height: contentH } : { width: doc.width, height: doc.height }, rect),
188
+ zIndex
189
+ });
190
+ return { ...doc, version: 2, layers: [...doc.layers, instance] };
191
+ }
192
+ /** Rename a widget definition (and matching instance names that still equal the old name). */
193
+ export function renameWidgetDefinition(doc, definitionId, name) {
194
+ const trimmed = name.trim() || 'Widget';
195
+ const prev = (doc.widgets ?? []).find((w) => w.id === definitionId);
196
+ const oldName = prev?.name;
197
+ return {
198
+ ...doc,
199
+ version: 2,
200
+ widgets: (doc.widgets ?? []).map((w) => (w.id === definitionId ? { ...w, name: trimmed } : w)),
201
+ layers: doc.layers.map((l) => l.kind === 'widget' && l.definitionId === definitionId && (!oldName || l.name === oldName)
202
+ ? { ...l, name: trimmed }
203
+ : l)
204
+ };
205
+ }
206
+ /** Duplicate a widget definition (new id, remapped layer ids). Does not place an instance. */
207
+ export function duplicateWidgetDefinition(doc, definitionId) {
208
+ const def = (doc.widgets ?? []).find((w) => w.id === definitionId);
209
+ if (!def)
210
+ return null;
211
+ const { layers, idMap } = remapLayerIds(def.layers);
212
+ const exposed = def.exposed.map((e) => ({
213
+ ...e,
214
+ id: uid('exp'),
215
+ targetLayerId: idMap.get(e.targetLayerId) ?? e.targetLayerId
216
+ }));
217
+ const definition = createWidgetDefinition({
218
+ name: `${def.name} Copy`,
219
+ width: def.width,
220
+ height: def.height,
221
+ background: def.background,
222
+ layers,
223
+ exposed
224
+ });
225
+ return {
226
+ doc: {
227
+ ...doc,
228
+ version: 2,
229
+ widgets: [...(doc.widgets ?? []), definition]
230
+ },
231
+ definitionId: definition.id
232
+ };
233
+ }
234
+ /**
235
+ * When a blueprint artboard size changes, optionally resize all instances to match.
236
+ */
237
+ export function syncInstanceSizesToDefinition(doc, definitionId) {
238
+ const def = (doc.widgets ?? []).find((w) => w.id === definitionId);
239
+ if (!def)
240
+ return doc;
241
+ const absMap = computeAbsoluteRects(doc.layers, { width: doc.width, height: doc.height });
242
+ return {
243
+ ...doc,
244
+ layers: doc.layers.map((l) => {
245
+ if (l.kind !== 'widget' || l.definitionId !== definitionId)
246
+ return l;
247
+ const parentId = l.parentId ?? null;
248
+ const parentLayer = parentId ? (doc.layers.find((p) => p.id === parentId) ?? null) : null;
249
+ const parentAbs = parentId
250
+ ? (absMap.get(parentId) ?? { x: 0, y: 0, w: doc.width, h: doc.height })
251
+ : { x: 0, y: 0, w: doc.width, h: doc.height };
252
+ const pad = parentLayer
253
+ ? contentPadding(parentLayer)
254
+ : { left: 0, top: 0, right: 0, bottom: 0 };
255
+ const contentW = Math.max(1, parentAbs.w - pad.left - pad.right);
256
+ const contentH = Math.max(1, parentAbs.h - pad.top - pad.bottom);
257
+ const rect = { ...l.rect, w: def.width, h: def.height };
258
+ const slot = slotFromLocalRect(parentId ? { width: contentW, height: contentH } : { width: doc.width, height: doc.height }, rect, l.slot?.anchors);
259
+ return {
260
+ ...l,
261
+ rect,
262
+ slot: {
263
+ ...slot,
264
+ padding: l.slot?.padding,
265
+ sizeRule: l.slot?.sizeRule,
266
+ alignment: l.slot?.alignment,
267
+ order: l.slot?.order
268
+ }
269
+ };
270
+ })
271
+ };
272
+ }
273
+ function applyFieldOverride(layer, field, value) {
274
+ return { ...layer, [field]: value };
275
+ }
276
+ /**
277
+ * Resolve a widget instance into concrete layers (for render/export).
278
+ * Layer ids are prefixed so they don't collide with scene ids.
279
+ */
280
+ export function resolveWidgetInstance(instance, definition, idPrefix) {
281
+ const prefix = idPrefix ?? `${instance.id}::`;
282
+ const idMap = new Map();
283
+ for (const l of definition.layers)
284
+ idMap.set(l.id, `${prefix}${l.id}`);
285
+ const overrides = instance.overrides ?? {};
286
+ const exposedById = new Map(definition.exposed.filter((e) => e.exposed).map((e) => [e.id, e]));
287
+ const fieldOverrides = new Map();
288
+ for (const [propId, value] of Object.entries(overrides)) {
289
+ const exp = exposedById.get(propId);
290
+ if (!exp)
291
+ continue;
292
+ const m = fieldOverrides.get(exp.targetLayerId) ?? new Map();
293
+ m.set(exp.field, value);
294
+ fieldOverrides.set(exp.targetLayerId, m);
295
+ }
296
+ return definition.layers.map((l) => {
297
+ let next = {
298
+ ...l,
299
+ id: idMap.get(l.id),
300
+ parentId: l.parentId ? (idMap.get(l.parentId) ?? null) : null,
301
+ slot: l.slot
302
+ ? {
303
+ ...l.slot,
304
+ anchors: { ...l.slot.anchors },
305
+ offsets: { ...l.slot.offsets }
306
+ }
307
+ : defaultSlotFromRect(l.rect)
308
+ };
309
+ const fo = fieldOverrides.get(l.id);
310
+ if (fo) {
311
+ for (const [field, value] of fo) {
312
+ next = applyFieldOverride(next, field, value);
313
+ }
314
+ }
315
+ return next;
316
+ });
317
+ }
318
+ /** Expand all widget instances in a layer list (nested widgets + named-slot injection). */
319
+ export function flattenLayersWithWidgets(layers, widgets, depth = 0) {
320
+ if (depth > 8)
321
+ return layers;
322
+ const defs = new Map(widgets.map((w) => [w.id, w]));
323
+ const widgetIds = new Set(layers.filter((l) => l.kind === 'widget' && l.definitionId).map((l) => l.id));
324
+ const out = [];
325
+ for (const layer of layers) {
326
+ // Scene children of widget instances are re-attached during expand (named slots / host).
327
+ if (layer.parentId && widgetIds.has(layer.parentId) && layer.kind !== 'widget') {
328
+ continue;
329
+ }
330
+ if (layer.kind === 'widget' && layer.definitionId) {
331
+ const def = defs.get(layer.definitionId);
332
+ if (!def) {
333
+ out.push(layer);
334
+ continue;
335
+ }
336
+ const resolved = resolveWidgetInstance(layer, def);
337
+ const nested = resolved.map((l) => l.parentId === null ? { ...l, parentId: layer.id } : l);
338
+ const slotByName = new Map();
339
+ for (const l of nested) {
340
+ if (l.kind === 'namedSlot') {
341
+ const key = (l.slotName || l.name || '').trim();
342
+ if (key)
343
+ slotByName.set(key, l.id);
344
+ }
345
+ }
346
+ const sceneKids = layers.filter((l) => (l.parentId ?? null) === layer.id);
347
+ const hostLocal = {
348
+ ...layer,
349
+ parentId: null,
350
+ kind: 'group',
351
+ clipChildren: false,
352
+ rect: { x: 0, y: 0, w: layer.rect.w, h: layer.rect.h },
353
+ slot: defaultSlotFromRect({ x: 0, y: 0, w: layer.rect.w, h: layer.rect.h })
354
+ };
355
+ const layoutProbe = computeAbsoluteRects([hostLocal, ...nested], {
356
+ width: layer.rect.w,
357
+ height: layer.rect.h
358
+ });
359
+ const injected = sceneKids.map((kid) => {
360
+ const target = kid.fillSlot?.trim();
361
+ const slotId = target ? slotByName.get(target) : undefined;
362
+ if (!slotId) {
363
+ return { ...kid, parentId: layer.id };
364
+ }
365
+ // Scene stores widget-local rects (parentId = instance). Convert to
366
+ // slot-local so paint/hit-test match the named slot coordinate space.
367
+ const slotAbs = layoutProbe.get(slotId) ?? { x: 0, y: 0, w: 0, h: 0 };
368
+ const local = {
369
+ x: kid.rect.x - slotAbs.x,
370
+ y: kid.rect.y - slotAbs.y,
371
+ w: kid.rect.w,
372
+ h: kid.rect.h
373
+ };
374
+ return {
375
+ ...kid,
376
+ parentId: slotId,
377
+ rect: local,
378
+ slot: kid.slot
379
+ ? {
380
+ ...kid.slot,
381
+ ...slotFromLocalRect({ width: Math.max(1, slotAbs.w), height: Math.max(1, slotAbs.h) }, local, kid.slot.anchors)
382
+ }
383
+ : defaultSlotFromRect(local)
384
+ };
385
+ });
386
+ out.push({
387
+ ...layer,
388
+ clipChildren: true,
389
+ kind: 'group',
390
+ name: layer.name
391
+ });
392
+ out.push(...flattenLayersWithWidgets([...nested, ...injected], widgets, depth + 1));
393
+ }
394
+ else {
395
+ out.push(layer);
396
+ }
397
+ }
398
+ return out;
399
+ }
400
+ /**
401
+ * Break / detach instance: inline resolved layers into the document and remove the instance.
402
+ */
403
+ export function breakWidgetInstance(doc, instanceId) {
404
+ const instance = doc.layers.find((l) => l.id === instanceId && l.kind === 'widget');
405
+ if (!instance?.definitionId)
406
+ return doc;
407
+ const def = (doc.widgets ?? []).find((w) => w.id === instance.definitionId);
408
+ if (!def)
409
+ return doc;
410
+ const absMap = computeAbsoluteRects(doc.layers, { width: doc.width, height: doc.height });
411
+ const instAbs = absMap.get(instanceId) ?? instance.rect;
412
+ const resolved = resolveWidgetInstance(instance, def);
413
+ const { layers: remapped, idMap } = remapLayerIds(resolved);
414
+ const inlined = remapped.map((l) => {
415
+ if (l.parentId === null) {
416
+ const abs = {
417
+ x: instAbs.x + l.rect.x,
418
+ y: instAbs.y + l.rect.y,
419
+ w: l.rect.w,
420
+ h: l.rect.h
421
+ };
422
+ const parentId = instance.parentId ?? null;
423
+ if (parentId) {
424
+ const pa = absMap.get(parentId) ?? { x: 0, y: 0, w: doc.width, h: doc.height };
425
+ const lr = { x: abs.x - pa.x, y: abs.y - pa.y, w: abs.w, h: abs.h };
426
+ return {
427
+ ...l,
428
+ parentId,
429
+ rect: lr,
430
+ slot: slotFromLocalRect({ width: pa.w, height: pa.h }, lr),
431
+ zIndex: instance.zIndex + (l.zIndex ?? 0)
432
+ };
433
+ }
434
+ return {
435
+ ...l,
436
+ parentId: null,
437
+ rect: abs,
438
+ slot: defaultSlotFromRect(abs),
439
+ zIndex: instance.zIndex + (l.zIndex ?? 0)
440
+ };
441
+ }
442
+ return { ...l, zIndex: instance.zIndex + (l.zIndex ?? 0) };
443
+ });
444
+ const layers = [...doc.layers.filter((l) => l.id !== instanceId), ...inlined];
445
+ return { ...doc, layers };
446
+ }
447
+ export function updateWidgetDefinition(doc, definitionId, updater) {
448
+ const widgets = (doc.widgets ?? []).map((w) => (w.id === definitionId ? updater(w) : w));
449
+ return { ...doc, version: 2, widgets };
450
+ }
451
+ /** Remove a widget definition and all of its instances (including nested scene children). */
452
+ export function deleteWidgetDefinition(doc, definitionId) {
453
+ const instanceIds = doc.layers
454
+ .filter((l) => l.kind === 'widget' && l.definitionId === definitionId)
455
+ .map((l) => l.id);
456
+ const remove = new Set();
457
+ for (const id of instanceIds) {
458
+ for (const sid of getSubtreeIds(doc.layers, id))
459
+ remove.add(sid);
460
+ }
461
+ return {
462
+ ...doc,
463
+ version: 2,
464
+ widgets: (doc.widgets ?? []).filter((w) => w.id !== definitionId),
465
+ layers: doc.layers.filter((l) => !remove.has(l.id))
466
+ };
467
+ }
468
+ export function setExposedProp(def, targetLayerId, field, exposed, label) {
469
+ const existing = def.exposed.find((e) => e.targetLayerId === targetLayerId && e.field === field);
470
+ if (!exposed) {
471
+ return {
472
+ ...def,
473
+ exposed: def.exposed.filter((e) => !(e.targetLayerId === targetLayerId && e.field === field))
474
+ };
475
+ }
476
+ if (existing) {
477
+ return {
478
+ ...def,
479
+ exposed: def.exposed.map((e) => e.id === existing.id ? { ...e, exposed: true, label: label ?? e.label } : e)
480
+ };
481
+ }
482
+ const prop = {
483
+ id: uid('exp'),
484
+ targetLayerId,
485
+ field,
486
+ label: label ?? field,
487
+ exposed: true
488
+ };
489
+ return { ...def, exposed: [...def.exposed, prop] };
490
+ }
491
+ export function isPropExposed(def, layerId, field) {
492
+ if (!def)
493
+ return false;
494
+ return def.exposed.some((e) => e.exposed && e.targetLayerId === layerId && e.field === field);
495
+ }
496
+ export function getExposedProp(def, layerId, field) {
497
+ return def?.exposed.find((e) => e.targetLayerId === layerId && e.field === field);
498
+ }
499
+ /** Blueprint default for an exposed prop (value on the target layer inside the definition). */
500
+ export function getExposedFieldDefault(def, prop) {
501
+ const target = def.layers.find((l) => l.id === prop.targetLayerId);
502
+ if (!target)
503
+ return undefined;
504
+ const value = target[prop.field];
505
+ if (value !== undefined)
506
+ return value;
507
+ if (prop.field === 'visible')
508
+ return true;
509
+ if (prop.field === 'opacity')
510
+ return 1;
511
+ if (prop.field === 'fontSize')
512
+ return 32;
513
+ if (prop.field === 'fill' || prop.field === 'color' || prop.field === 'stroke')
514
+ return '#000000';
515
+ return undefined;
516
+ }
517
+ /** Instance override if set, otherwise the blueprint default. */
518
+ export function resolveExposedPropValue(instance, def, prop) {
519
+ if (instance.overrides && Object.prototype.hasOwnProperty.call(instance.overrides, prop.id)) {
520
+ return instance.overrides[prop.id];
521
+ }
522
+ return getExposedFieldDefault(def, prop);
523
+ }
524
+ /** Group exposed props by target layer for inspector headers. */
525
+ export function groupExposedPropsByLayer(def) {
526
+ const props = def.exposed.filter((e) => e.exposed);
527
+ const order = [];
528
+ const map = new Map();
529
+ for (const p of props) {
530
+ if (!map.has(p.targetLayerId)) {
531
+ order.push(p.targetLayerId);
532
+ map.set(p.targetLayerId, []);
533
+ }
534
+ map.get(p.targetLayerId).push(p);
535
+ }
536
+ return order.map((layerId) => {
537
+ const target = def.layers.find((l) => l.id === layerId);
538
+ return {
539
+ layerId,
540
+ layerName: target?.name?.trim() || target?.kind || 'Layer',
541
+ props: map.get(layerId)
542
+ };
543
+ });
544
+ }
545
+ export function setInstanceOverride(doc, instanceId, propId, value) {
546
+ return {
547
+ ...doc,
548
+ layers: doc.layers.map((l) => {
549
+ if (l.id !== instanceId)
550
+ return l;
551
+ const overrides = { ...(l.overrides ?? {}) };
552
+ if (value === undefined)
553
+ delete overrides[propId];
554
+ else
555
+ overrides[propId] = value;
556
+ return { ...l, overrides };
557
+ })
558
+ };
559
+ }
560
+ export function documentAsWidgetEditSurface(doc, definitionId) {
561
+ const def = (doc.widgets ?? []).find((w) => w.id === definitionId);
562
+ if (!def)
563
+ return null;
564
+ return {
565
+ width: def.width,
566
+ height: def.height,
567
+ background: def.background ?? '#ffffff',
568
+ layers: def.layers
569
+ };
570
+ }
571
+ export function patchWidgetEditSurface(doc, definitionId, surface) {
572
+ return updateWidgetDefinition(doc, definitionId, (d) => ({
573
+ ...d,
574
+ width: surface.width ?? d.width,
575
+ height: surface.height ?? d.height,
576
+ background: surface.background ?? d.background,
577
+ layers: surface.layers ?? d.layers
578
+ }));
579
+ }
580
+ export function getNamedSlotsFromDefinition(def) {
581
+ if (!def)
582
+ return [];
583
+ return def.layers
584
+ .filter((l) => l.kind === 'namedSlot')
585
+ .map((l) => ({
586
+ layerId: l.id,
587
+ name: (l.slotName || l.name || 'Slot').trim()
588
+ }));
589
+ }
590
+ export function listFillableSlotsForInstance(doc, instanceId) {
591
+ const inst = doc.layers.find((l) => l.id === instanceId && l.kind === 'widget');
592
+ if (!inst?.definitionId)
593
+ return [];
594
+ const def = (doc.widgets ?? []).find((w) => w.id === inst.definitionId);
595
+ return getNamedSlotsFromDefinition(def).map((s) => s.name);
596
+ }
597
+ export { deleteSubtree };
@@ -0,0 +1,48 @@
1
+ /** Axis-aligned selection rectangle (container-local coordinates). */
2
+ export interface MarqueeRect {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ /** Hit-test target with an id and box in the same coordinate space as {@link MarqueeRect}. */
9
+ export interface MarqueeItemRect {
10
+ id: string;
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export type MarqueeModifier = 'replace' | 'add' | 'toggle';
17
+ export interface MarqueeDragState {
18
+ rect: MarqueeRect;
19
+ ids: string[];
20
+ modifier: MarqueeModifier;
21
+ }
22
+ export interface AttachMarqueeSelectOptions {
23
+ /** Pixels of movement before a drag becomes a marquee (keeps clicks clean). Default 4. */
24
+ threshold?: number;
25
+ /** Supply item boxes; called on each move after threshold. */
26
+ getItems: () => MarqueeItemRect[];
27
+ /** Live updates while dragging (after threshold). */
28
+ onDrag?: (state: MarqueeDragState) => void;
29
+ /** Fired on pointerup if a marquee drag occurred. */
30
+ onSelect: (state: MarqueeDragState) => void;
31
+ /** Skip starting a marquee from this event target. */
32
+ shouldIgnore?: (target: EventTarget | null) => boolean;
33
+ /** Called when the overlay rect changes (including null when idle / below threshold). */
34
+ onRect?: (rect: MarqueeRect | null) => void;
35
+ }
36
+ export declare function normalizeRect(x0: number, y0: number, x1: number, y1: number): MarqueeRect;
37
+ export declare function rectsIntersect(a: MarqueeRect, b: MarqueeRect): boolean;
38
+ export declare function hitTestIds(marquee: MarqueeRect, items: MarqueeItemRect[]): string[];
39
+ export declare function getMarqueeModifier(e: Pick<PointerEvent, 'shiftKey' | 'metaKey' | 'ctrlKey'>): MarqueeModifier;
40
+ export declare function resolveMarqueeSelection(hitIds: string[], previousIds: string[], modifier: MarqueeModifier): string[];
41
+ /** Collect `[data-marquee-id]` children in container-local (incl. scroll) coordinates. */
42
+ export declare function collectMarqueeItems(container: HTMLElement, selector?: string): MarqueeItemRect[];
43
+ export declare function defaultMarqueeIgnore(target: EventTarget | null): boolean;
44
+ /**
45
+ * Attach Windows-style rubber-band selection to a container.
46
+ * Returns a disposer.
47
+ */
48
+ export declare function attachMarqueeSelect(container: HTMLElement, options: AttachMarqueeSelectOptions): () => void;