@tpitre/story-ui 3.3.0 → 3.4.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 (281) hide show
  1. package/dist/cli/index.js +0 -0
  2. package/dist/cli/index.js.map +1 -0
  3. package/dist/cli/setup.js.map +1 -0
  4. package/dist/cloudflare-edge/src/mcp-session.js +462 -0
  5. package/dist/cloudflare-edge/src/types.js +4 -0
  6. package/dist/cloudflare-edge/src/worker.js +106 -0
  7. package/dist/cloudflare-pages/vite.config.js +14 -0
  8. package/dist/index.d.ts +13 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +12 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/mcp-server/index.js.map +1 -0
  13. package/dist/mcp-server/mcp-stdio-server.js.map +1 -0
  14. package/dist/mcp-server/routes/claude.js.map +1 -0
  15. package/dist/mcp-server/routes/components.js.map +1 -0
  16. package/dist/mcp-server/routes/generateStory.js.map +1 -0
  17. package/dist/mcp-server/routes/hybridStories.d.ts +18 -0
  18. package/dist/mcp-server/routes/hybridStories.d.ts.map +1 -0
  19. package/dist/mcp-server/routes/hybridStories.js +216 -0
  20. package/dist/mcp-server/routes/hybridStories.js.map +1 -0
  21. package/dist/mcp-server/routes/memoryStories.d.ts +26 -0
  22. package/dist/mcp-server/routes/memoryStories.d.ts.map +1 -0
  23. package/dist/mcp-server/routes/memoryStories.js +158 -0
  24. package/dist/mcp-server/routes/memoryStories.js.map +1 -0
  25. package/dist/mcp-server/routes/storySync.d.ts +26 -0
  26. package/dist/mcp-server/routes/storySync.d.ts.map +1 -0
  27. package/dist/mcp-server/routes/storySync.js +147 -0
  28. package/dist/mcp-server/routes/storySync.js.map +1 -0
  29. package/dist/mcp-server/routes/updateStory.js +246 -0
  30. package/dist/mcp-server/sessionManager.d.ts +50 -0
  31. package/dist/mcp-server/sessionManager.d.ts.map +1 -0
  32. package/dist/mcp-server/sessionManager.js +125 -0
  33. package/dist/mcp-server/sessionManager.js.map +1 -0
  34. package/dist/playground/components/AIAssistant/AIAssistant.d.ts +6 -0
  35. package/dist/playground/components/AIAssistant/AIAssistant.d.ts.map +1 -0
  36. package/dist/playground/components/AIAssistant/AIAssistant.js +109 -0
  37. package/dist/playground/components/AIAssistant/AIAssistant.js.map +1 -0
  38. package/dist/playground/components/AIAssistant/AIAssistant.module.css +166 -0
  39. package/dist/playground/components/Canvas/Canvas.d.ts +9 -0
  40. package/dist/playground/components/Canvas/Canvas.d.ts.map +1 -0
  41. package/dist/playground/components/Canvas/Canvas.js +58 -0
  42. package/dist/playground/components/Canvas/Canvas.js.map +1 -0
  43. package/dist/playground/components/Canvas/Canvas.module.css +189 -0
  44. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts +9 -0
  45. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts.map +1 -0
  46. package/dist/playground/components/Canvas/CanvasWithDnd.js +158 -0
  47. package/dist/playground/components/Canvas/CanvasWithDnd.js.map +1 -0
  48. package/dist/playground/components/Canvas/ComponentRenderer.d.ts +15 -0
  49. package/dist/playground/components/Canvas/ComponentRenderer.d.ts.map +1 -0
  50. package/dist/playground/components/Canvas/ComponentRenderer.js +177 -0
  51. package/dist/playground/components/Canvas/ComponentRenderer.js.map +1 -0
  52. package/dist/playground/components/Canvas/DraggableComponent.d.ts +15 -0
  53. package/dist/playground/components/Canvas/DraggableComponent.d.ts.map +1 -0
  54. package/dist/playground/components/Canvas/DraggableComponent.js +49 -0
  55. package/dist/playground/components/Canvas/DraggableComponent.js.map +1 -0
  56. package/dist/playground/components/Canvas/index.d.ts +9 -0
  57. package/dist/playground/components/Canvas/index.d.ts.map +1 -0
  58. package/dist/playground/components/Canvas/index.js +5 -0
  59. package/dist/playground/components/Canvas/index.js.map +1 -0
  60. package/dist/playground/components/CodeView/CodeView.d.ts +12 -0
  61. package/dist/playground/components/CodeView/CodeView.d.ts.map +1 -0
  62. package/dist/playground/components/CodeView/CodeView.js +77 -0
  63. package/dist/playground/components/CodeView/CodeView.js.map +1 -0
  64. package/dist/playground/components/CodeView/CodeView.module.css +178 -0
  65. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts +17 -0
  66. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts.map +1 -0
  67. package/dist/playground/components/ComponentPalette/ComponentPalette.js +138 -0
  68. package/dist/playground/components/ComponentPalette/ComponentPalette.js.map +1 -0
  69. package/dist/playground/components/ComponentPalette/ComponentPalette.module.css +217 -0
  70. package/dist/playground/components/ComponentPalette/index.d.ts +3 -0
  71. package/dist/playground/components/ComponentPalette/index.d.ts.map +1 -0
  72. package/dist/playground/components/ComponentPalette/index.js +2 -0
  73. package/dist/playground/components/ComponentPalette/index.js.map +1 -0
  74. package/dist/playground/components/DropZone/DropZone.d.ts +17 -0
  75. package/dist/playground/components/DropZone/DropZone.d.ts.map +1 -0
  76. package/dist/playground/components/DropZone/DropZone.js +73 -0
  77. package/dist/playground/components/DropZone/DropZone.js.map +1 -0
  78. package/dist/playground/components/DropZone/DropZone.module.css +86 -0
  79. package/dist/playground/components/ExportDialog/ExportDialog.d.ts +10 -0
  80. package/dist/playground/components/ExportDialog/ExportDialog.d.ts.map +1 -0
  81. package/dist/playground/components/ExportDialog/ExportDialog.js +57 -0
  82. package/dist/playground/components/ExportDialog/ExportDialog.js.map +1 -0
  83. package/dist/playground/components/ExportDialog/ExportDialog.module.css +328 -0
  84. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts +134 -0
  85. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts.map +1 -0
  86. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js +254 -0
  87. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js.map +1 -0
  88. package/dist/playground/components/LayoutHelpers/index.d.ts +3 -0
  89. package/dist/playground/components/LayoutHelpers/index.d.ts.map +1 -0
  90. package/dist/playground/components/LayoutHelpers/index.js +2 -0
  91. package/dist/playground/components/LayoutHelpers/index.js.map +1 -0
  92. package/dist/playground/components/Playground/Playground.d.ts +10 -0
  93. package/dist/playground/components/Playground/Playground.d.ts.map +1 -0
  94. package/dist/playground/components/Playground/Playground.js +128 -0
  95. package/dist/playground/components/Playground/Playground.js.map +1 -0
  96. package/dist/playground/components/Playground/Playground.module.css +308 -0
  97. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts +10 -0
  98. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts.map +1 -0
  99. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js +150 -0
  100. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js.map +1 -0
  101. package/dist/playground/components/PropertiesPanel/PropertiesPanel.module.css +155 -0
  102. package/dist/playground/components/PropertiesPanel/index.d.ts +3 -0
  103. package/dist/playground/components/PropertiesPanel/index.d.ts.map +1 -0
  104. package/dist/playground/components/PropertiesPanel/index.js +2 -0
  105. package/dist/playground/components/PropertiesPanel/index.js.map +1 -0
  106. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts +12 -0
  107. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts.map +1 -0
  108. package/dist/playground/components/PropertyEditors/BooleanEditor.js +14 -0
  109. package/dist/playground/components/PropertyEditors/BooleanEditor.js.map +1 -0
  110. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts +12 -0
  111. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts.map +1 -0
  112. package/dist/playground/components/PropertyEditors/ColorEditor.js +62 -0
  113. package/dist/playground/components/PropertyEditors/ColorEditor.js.map +1 -0
  114. package/dist/playground/components/PropertyEditors/IconEditor.d.ts +12 -0
  115. package/dist/playground/components/PropertyEditors/IconEditor.d.ts.map +1 -0
  116. package/dist/playground/components/PropertyEditors/IconEditor.js +123 -0
  117. package/dist/playground/components/PropertyEditors/IconEditor.js.map +1 -0
  118. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts +15 -0
  119. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts.map +1 -0
  120. package/dist/playground/components/PropertyEditors/NumberEditor.js +46 -0
  121. package/dist/playground/components/PropertyEditors/NumberEditor.js.map +1 -0
  122. package/dist/playground/components/PropertyEditors/PropertyEditors.module.css +432 -0
  123. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts +19 -0
  124. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts.map +1 -0
  125. package/dist/playground/components/PropertyEditors/SelectEditor.js +17 -0
  126. package/dist/playground/components/PropertyEditors/SelectEditor.js.map +1 -0
  127. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts +19 -0
  128. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts.map +1 -0
  129. package/dist/playground/components/PropertyEditors/SpacingEditor.js +162 -0
  130. package/dist/playground/components/PropertyEditors/SpacingEditor.js.map +1 -0
  131. package/dist/playground/components/PropertyEditors/SpacingEditor.module.css +214 -0
  132. package/dist/playground/components/PropertyEditors/TextEditor.d.ts +14 -0
  133. package/dist/playground/components/PropertyEditors/TextEditor.d.ts.map +1 -0
  134. package/dist/playground/components/PropertyEditors/TextEditor.js +38 -0
  135. package/dist/playground/components/PropertyEditors/TextEditor.js.map +1 -0
  136. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts +23 -0
  137. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts.map +1 -0
  138. package/dist/playground/components/PropertyEditors/TokenEditor.js +50 -0
  139. package/dist/playground/components/PropertyEditors/TokenEditor.js.map +1 -0
  140. package/dist/playground/components/PropertyEditors/index.d.ts +20 -0
  141. package/dist/playground/components/PropertyEditors/index.d.ts.map +1 -0
  142. package/dist/playground/components/PropertyEditors/index.js +12 -0
  143. package/dist/playground/components/PropertyEditors/index.js.map +1 -0
  144. package/dist/playground/components/TreeView/TreeView.d.ts +10 -0
  145. package/dist/playground/components/TreeView/TreeView.d.ts.map +1 -0
  146. package/dist/playground/components/TreeView/TreeView.js +146 -0
  147. package/dist/playground/components/TreeView/TreeView.js.map +1 -0
  148. package/dist/playground/components/TreeView/TreeView.module.css +214 -0
  149. package/dist/playground/components/TreeView/index.d.ts +3 -0
  150. package/dist/playground/components/TreeView/index.d.ts.map +1 -0
  151. package/dist/playground/components/TreeView/index.js +2 -0
  152. package/dist/playground/components/TreeView/index.js.map +1 -0
  153. package/dist/playground/config/propertyDefinitions.d.ts +73 -0
  154. package/dist/playground/config/propertyDefinitions.d.ts.map +1 -0
  155. package/dist/playground/config/propertyDefinitions.js +809 -0
  156. package/dist/playground/config/propertyDefinitions.js.map +1 -0
  157. package/dist/playground/hooks/useKeyboardShortcuts.d.ts +38 -0
  158. package/dist/playground/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  159. package/dist/playground/hooks/useKeyboardShortcuts.js +191 -0
  160. package/dist/playground/hooks/useKeyboardShortcuts.js.map +1 -0
  161. package/dist/playground/index.d.ts +21 -0
  162. package/dist/playground/index.d.ts.map +1 -0
  163. package/dist/playground/index.js +23 -0
  164. package/dist/playground/index.js.map +1 -0
  165. package/dist/playground/services/CodeGenerator.d.ts +73 -0
  166. package/dist/playground/services/CodeGenerator.d.ts.map +1 -0
  167. package/dist/playground/services/CodeGenerator.js +359 -0
  168. package/dist/playground/services/CodeGenerator.js.map +1 -0
  169. package/dist/playground/services/DragDropManager.d.ts +95 -0
  170. package/dist/playground/services/DragDropManager.d.ts.map +1 -0
  171. package/dist/playground/services/DragDropManager.js +408 -0
  172. package/dist/playground/services/DragDropManager.js.map +1 -0
  173. package/dist/playground/services/StoryParser.d.ts +73 -0
  174. package/dist/playground/services/StoryParser.d.ts.map +1 -0
  175. package/dist/playground/services/StoryParser.js +419 -0
  176. package/dist/playground/services/StoryParser.js.map +1 -0
  177. package/dist/playground/store/playgroundStore.d.ts +86 -0
  178. package/dist/playground/store/playgroundStore.d.ts.map +1 -0
  179. package/dist/playground/store/playgroundStore.js +337 -0
  180. package/dist/playground/store/playgroundStore.js.map +1 -0
  181. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts +13 -0
  182. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts.map +1 -0
  183. package/dist/playground/stories/PlaygroundDragDrop.stories.js +227 -0
  184. package/dist/playground/stories/PlaygroundDragDrop.stories.js.map +1 -0
  185. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts +13 -0
  186. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts.map +1 -0
  187. package/dist/playground/stories/PlaygroundPhase4.stories.js +334 -0
  188. package/dist/playground/stories/PlaygroundPhase4.stories.js.map +1 -0
  189. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts +14 -0
  190. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts.map +1 -0
  191. package/dist/playground/stories/PlaygroundPhase5.stories.js +512 -0
  192. package/dist/playground/stories/PlaygroundPhase5.stories.js.map +1 -0
  193. package/dist/playground/stories/PlaygroundProperties.stories.d.ts +13 -0
  194. package/dist/playground/stories/PlaygroundProperties.stories.d.ts.map +1 -0
  195. package/dist/playground/stories/PlaygroundProperties.stories.js +342 -0
  196. package/dist/playground/stories/PlaygroundProperties.stories.js.map +1 -0
  197. package/dist/playground/types/index.d.ts +251 -0
  198. package/dist/playground/types/index.d.ts.map +1 -0
  199. package/dist/playground/types/index.js +5 -0
  200. package/dist/playground/types/index.js.map +1 -0
  201. package/dist/scripts/verify-framework-adapters.js +105 -0
  202. package/dist/story-generator/componentBlacklist.js.map +1 -0
  203. package/dist/story-generator/componentDiscovery.js.map +1 -0
  204. package/dist/story-generator/configLoader.js.map +1 -0
  205. package/dist/story-generator/considerationsLoader.js.map +1 -0
  206. package/dist/story-generator/documentation-sources.js.map +1 -0
  207. package/dist/story-generator/documentationLoader.js.map +1 -0
  208. package/dist/story-generator/dynamicPackageDiscovery.js.map +1 -0
  209. package/dist/story-generator/enhancedComponentDiscovery.js.map +1 -0
  210. package/dist/story-generator/generateStory.js.map +1 -0
  211. package/dist/story-generator/gitignoreManager.js.map +1 -0
  212. package/dist/story-generator/inMemoryStoryService.d.ts +89 -0
  213. package/dist/story-generator/inMemoryStoryService.d.ts.map +1 -0
  214. package/dist/story-generator/inMemoryStoryService.js +128 -0
  215. package/dist/story-generator/inMemoryStoryService.js.map +1 -0
  216. package/dist/story-generator/logger.js.map +1 -0
  217. package/dist/story-generator/postProcessStory.js.map +1 -0
  218. package/dist/story-generator/postgresStoryService.d.ts +56 -0
  219. package/dist/story-generator/postgresStoryService.d.ts.map +1 -0
  220. package/dist/story-generator/postgresStoryService.js +240 -0
  221. package/dist/story-generator/productionGitignoreManager.d.ts +91 -0
  222. package/dist/story-generator/productionGitignoreManager.d.ts.map +1 -0
  223. package/dist/story-generator/productionGitignoreManager.js +340 -0
  224. package/dist/story-generator/productionGitignoreManager.js.map +1 -0
  225. package/dist/story-generator/promptGenerator.js.map +1 -0
  226. package/dist/story-generator/providerPresets.d.ts +54 -0
  227. package/dist/story-generator/providerPresets.d.ts.map +1 -0
  228. package/dist/story-generator/providerPresets.js +214 -0
  229. package/dist/story-generator/storyHistory.js.map +1 -0
  230. package/dist/story-generator/storyServiceFactory.d.ts +22 -0
  231. package/dist/story-generator/storyServiceFactory.d.ts.map +1 -0
  232. package/dist/story-generator/storyServiceFactory.js +97 -0
  233. package/dist/story-generator/storyServiceInterface.d.ts +85 -0
  234. package/dist/story-generator/storyServiceInterface.d.ts.map +1 -0
  235. package/dist/story-generator/storyServiceInterface.js +5 -0
  236. package/dist/story-generator/storySync.d.ts +68 -0
  237. package/dist/story-generator/storySync.d.ts.map +1 -0
  238. package/dist/story-generator/storySync.js +201 -0
  239. package/dist/story-generator/storySync.js.map +1 -0
  240. package/dist/story-generator/storyTracker.js.map +1 -0
  241. package/dist/story-generator/storyValidator.js.map +1 -0
  242. package/dist/story-generator/test_validation.d.ts +2 -0
  243. package/dist/story-generator/test_validation.d.ts.map +1 -0
  244. package/dist/story-generator/test_validation.js +51 -0
  245. package/dist/story-generator/universalDesignSystemAdapter.js.map +1 -0
  246. package/dist/story-generator/urlRedirectService.js.map +1 -0
  247. package/dist/story-generator/validateStory.js.map +1 -0
  248. package/dist/story-ui.config.js.map +1 -0
  249. package/dist/story-ui.config.loader.d.ts +36 -0
  250. package/dist/story-ui.config.loader.d.ts.map +1 -0
  251. package/dist/story-ui.config.loader.js +205 -0
  252. package/dist/story-ui.config.loader.js.map +1 -0
  253. package/dist/temp/package/templates/StoryUI/StoryUIPanel.js +807 -0
  254. package/dist/temp/package/templates/StoryUI/StoryUIPanel.stories.js +37 -0
  255. package/dist/temp/package/templates/StoryUI/index.js +2 -0
  256. package/dist/templates/StoryUI/StoryUIPanel.js.map +1 -0
  257. package/dist/templates/StoryUI/StoryUIPanel.stories.js.map +1 -0
  258. package/dist/templates/StoryUI/index.js.map +1 -0
  259. package/dist/templates/StoryUI/manager.d.ts +14 -0
  260. package/dist/templates/StoryUI/manager.d.ts.map +1 -0
  261. package/dist/templates/production-app/src/App.d.ts +10 -0
  262. package/dist/templates/production-app/src/App.d.ts.map +1 -0
  263. package/dist/templates/production-app/src/App.js +653 -0
  264. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts +24 -0
  265. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts.map +1 -0
  266. package/dist/templates/production-app/src/LivePreviewRenderer.js +199 -0
  267. package/dist/templates/production-app/src/componentRegistry.d.ts +20 -0
  268. package/dist/templates/production-app/src/componentRegistry.d.ts.map +1 -0
  269. package/dist/templates/production-app/src/componentRegistry.js +316 -0
  270. package/dist/templates/production-app/src/main.d.ts +9 -0
  271. package/dist/templates/production-app/src/main.d.ts.map +1 -0
  272. package/dist/templates/production-app/src/main.js +18 -0
  273. package/dist/templates/production-app/vite.config.d.ts +3 -0
  274. package/dist/templates/production-app/vite.config.d.ts.map +1 -0
  275. package/dist/templates/production-app/vite.config.js +71 -0
  276. package/dist/test-storybooks/angular-material-storybook/src/main.js +66 -0
  277. package/dist/test-storybooks/chakra-storybook/vite.config.js +6 -0
  278. package/dist/test-storybooks/mantine-storybook/vite.config.js +93 -0
  279. package/dist/test-storybooks/web-components-shoelace/vite.config.js +9 -0
  280. package/dist/tsconfig.tsbuildinfo +1 -0
  281. package/package.json +1 -1
@@ -0,0 +1,408 @@
1
+ /**
2
+ * DragDropManager - Manages drag and drop operations in the playground
3
+ */
4
+ export class DragDropManager {
5
+ constructor(store) {
6
+ this.activeDropZone = null;
7
+ this.store = store;
8
+ }
9
+ /**
10
+ * Start a drag operation
11
+ */
12
+ startDrag(item, event) {
13
+ this.store.startDrag(item);
14
+ // Store initial position if provided
15
+ if (event) {
16
+ item.initialPosition = {
17
+ x: event.clientX,
18
+ y: event.clientY
19
+ };
20
+ }
21
+ // Calculate offset if dragging existing component
22
+ if (item.type === 'move-component' && item.component && event) {
23
+ const element = event.target;
24
+ const rect = element.getBoundingClientRect();
25
+ item.offset = {
26
+ x: event.clientX - rect.left,
27
+ y: event.clientY - rect.top
28
+ };
29
+ }
30
+ }
31
+ /**
32
+ * Update drag position and find active drop zone
33
+ */
34
+ updateDrag(event) {
35
+ // Get canvas element to account for zoom and offset
36
+ const canvas = document.querySelector('[data-canvas]');
37
+ let adjustedX = event.clientX;
38
+ let adjustedY = event.clientY;
39
+ // Account for canvas transformations if available
40
+ if (canvas) {
41
+ const canvasRect = canvas.getBoundingClientRect();
42
+ const zoom = this.store.canvasZoom || 1;
43
+ const offset = this.store.canvasOffset || { x: 0, y: 0 };
44
+ // Adjust coordinates for canvas zoom and offset
45
+ adjustedX = (event.clientX - canvasRect.left - offset.x) / zoom;
46
+ adjustedY = (event.clientY - canvasRect.top - offset.y) / zoom;
47
+ }
48
+ const dropZone = this.getDropZoneAtPoint(adjustedX, adjustedY);
49
+ if (dropZone !== this.activeDropZone) {
50
+ // Update previous drop zone
51
+ if (this.activeDropZone) {
52
+ this.store.updateDropZone(this.activeDropZone.id, {
53
+ isActive: false,
54
+ isOver: false
55
+ });
56
+ }
57
+ // Update new drop zone
58
+ if (dropZone) {
59
+ const draggedItem = this.store.draggedItem;
60
+ const canDrop = draggedItem ? this.canDrop(draggedItem, dropZone) : false;
61
+ this.store.updateDropZone(dropZone.id, {
62
+ isActive: true,
63
+ isOver: true,
64
+ canDrop
65
+ });
66
+ }
67
+ this.activeDropZone = dropZone;
68
+ }
69
+ }
70
+ /**
71
+ * End drag operation and perform drop if valid
72
+ */
73
+ endDrag(overId) {
74
+ const draggedItem = this.store.draggedItem;
75
+ if (!draggedItem) {
76
+ return null;
77
+ }
78
+ let result = null;
79
+ // Find drop zone by ID or get the active one
80
+ if (overId) {
81
+ const dropZone = this.store.dropZones.get(overId) || this.activeDropZone;
82
+ if (dropZone && this.canDrop(draggedItem, dropZone)) {
83
+ result = this.performDrop(draggedItem, dropZone);
84
+ }
85
+ }
86
+ // Clean up
87
+ this.cleanupDrag();
88
+ return result;
89
+ }
90
+ /**
91
+ * Cancel drag operation
92
+ */
93
+ cancelDrag() {
94
+ this.cleanupDrag();
95
+ }
96
+ /**
97
+ * Register a drop zone
98
+ */
99
+ registerDropZone(zone) {
100
+ this.store.registerDropZone(zone);
101
+ }
102
+ /**
103
+ * Unregister a drop zone
104
+ */
105
+ unregisterDropZone(id) {
106
+ this.store.unregisterDropZone(id);
107
+ }
108
+ /**
109
+ * Update drop zone properties
110
+ */
111
+ updateDropZone(id, updates) {
112
+ this.store.updateDropZone(id, updates);
113
+ }
114
+ /**
115
+ * Check if item can be dropped in zone
116
+ */
117
+ canDrop(item, zone) {
118
+ // Check if zone accepts this type
119
+ if (Array.isArray(zone.accepts)) {
120
+ if (item.type === 'new-component' && item.componentType) {
121
+ if (!zone.accepts.includes(item.componentType) && !zone.accepts.includes('all')) {
122
+ return false;
123
+ }
124
+ }
125
+ }
126
+ else if (typeof zone.accepts === 'function') {
127
+ if (!zone.accepts(item)) {
128
+ return false;
129
+ }
130
+ }
131
+ // Check max children limit
132
+ if (zone.maxChildren !== undefined && zone.childCount !== undefined) {
133
+ if (zone.childCount >= zone.maxChildren) {
134
+ return false;
135
+ }
136
+ }
137
+ // Prevent dropping component on itself or its children
138
+ if (item.type === 'move-component' && item.component) {
139
+ if (item.component.id === zone.componentId) {
140
+ return false;
141
+ }
142
+ // Check if zone is a child of the dragged component
143
+ if (this.isDescendant(zone.componentId, item.component.id)) {
144
+ return false;
145
+ }
146
+ }
147
+ return true;
148
+ }
149
+ /**
150
+ * Validate drop operation
151
+ */
152
+ validateDrop(item, zone) {
153
+ const canDrop = this.canDrop(item, zone);
154
+ if (!canDrop) {
155
+ // Provide specific reason
156
+ if (zone.maxChildren && zone.childCount && zone.childCount >= zone.maxChildren) {
157
+ return {
158
+ canDrop: false,
159
+ reason: `Maximum children (${zone.maxChildren}) reached`
160
+ };
161
+ }
162
+ if (item.type === 'move-component' && item.component) {
163
+ if (item.component.id === zone.componentId) {
164
+ return {
165
+ canDrop: false,
166
+ reason: 'Cannot drop component on itself'
167
+ };
168
+ }
169
+ if (this.isDescendant(zone.componentId, item.component.id)) {
170
+ return {
171
+ canDrop: false,
172
+ reason: 'Cannot drop component on its descendant'
173
+ };
174
+ }
175
+ }
176
+ return {
177
+ canDrop: false,
178
+ reason: 'This component cannot be dropped here'
179
+ };
180
+ }
181
+ return {
182
+ canDrop: true,
183
+ targetZone: zone
184
+ };
185
+ }
186
+ /**
187
+ * Get drop zone at screen coordinates
188
+ */
189
+ getDropZoneAtPoint(x, y) {
190
+ // Update drop zone rectangles if needed
191
+ this.updateDropZoneRects();
192
+ // Find zones that contain the point
193
+ const candidates = [];
194
+ for (const zone of this.store.dropZones.values()) {
195
+ if (zone.rect && this.pointInRect(x, y, zone.rect)) {
196
+ candidates.push(zone);
197
+ }
198
+ }
199
+ // Return the most specific (smallest) zone
200
+ if (candidates.length > 0) {
201
+ return candidates.reduce((smallest, zone) => {
202
+ if (!smallest.rect || !zone.rect)
203
+ return smallest;
204
+ const smallestArea = smallest.rect.width * smallest.rect.height;
205
+ const zoneArea = zone.rect.width * zone.rect.height;
206
+ return zoneArea < smallestArea ? zone : smallest;
207
+ });
208
+ }
209
+ return null;
210
+ }
211
+ /**
212
+ * Get all active drop zones
213
+ */
214
+ getActiveDropZones() {
215
+ return Array.from(this.store.dropZones.values()).filter(zone => zone.isActive);
216
+ }
217
+ /**
218
+ * Get nearest drop zone to coordinates
219
+ */
220
+ getNearestDropZone(x, y) {
221
+ let nearest = null;
222
+ let minDistance = Infinity;
223
+ for (const zone of this.store.dropZones.values()) {
224
+ if (!zone.rect)
225
+ continue;
226
+ const centerX = zone.rect.left + zone.rect.width / 2;
227
+ const centerY = zone.rect.top + zone.rect.height / 2;
228
+ const distance = Math.sqrt((x - centerX) ** 2 + (y - centerY) ** 2);
229
+ if (distance < minDistance) {
230
+ minDistance = distance;
231
+ nearest = zone;
232
+ }
233
+ }
234
+ return nearest;
235
+ }
236
+ /**
237
+ * Get insertion index for drop position
238
+ */
239
+ getInsertionIndex(zone, y) {
240
+ const parent = this.store.components.get(zone.componentId);
241
+ if (!parent || !parent.children)
242
+ return 0;
243
+ // Find the child element positions
244
+ const childElements = Array.from(document.querySelectorAll(`[data-component-id="${zone.componentId}"] > [data-component-id]`));
245
+ // Account for canvas transformations
246
+ const canvas = document.querySelector('[data-canvas]');
247
+ let adjustedY = y;
248
+ if (canvas) {
249
+ const canvasRect = canvas.getBoundingClientRect();
250
+ const zoom = this.store.canvasZoom || 1;
251
+ const offset = this.store.canvasOffset || { x: 0, y: 0 };
252
+ // Convert screen coordinates to canvas coordinates
253
+ adjustedY = (y - canvasRect.top - offset.y) / zoom;
254
+ }
255
+ // Find insertion point based on adjusted y position
256
+ for (let i = 0; i < childElements.length; i++) {
257
+ const rect = childElements[i].getBoundingClientRect();
258
+ let midY = rect.top + rect.height / 2;
259
+ // Adjust midY for canvas transformations
260
+ if (canvas) {
261
+ const canvasRect = canvas.getBoundingClientRect();
262
+ const zoom = this.store.canvasZoom || 1;
263
+ const offset = this.store.canvasOffset || { x: 0, y: 0 };
264
+ midY = (rect.top - canvasRect.top - offset.y) / zoom + rect.height / (2 * zoom);
265
+ }
266
+ if (adjustedY < midY) {
267
+ return i;
268
+ }
269
+ }
270
+ return parent.children.length;
271
+ }
272
+ /**
273
+ * Perform the drop operation
274
+ */
275
+ performDrop(item, zone) {
276
+ const result = {
277
+ dropZone: zone,
278
+ parentId: zone.componentId,
279
+ index: zone.insertIndex ?? 0,
280
+ success: false
281
+ };
282
+ try {
283
+ if (item.type === 'new-component' && item.componentType) {
284
+ // Create new component
285
+ const newComponent = {
286
+ id: this.generateComponentId(item.componentType),
287
+ type: item.componentType,
288
+ displayName: item.componentType,
289
+ props: this.getDefaultProps(item.componentType),
290
+ parentId: zone.componentId,
291
+ children: []
292
+ };
293
+ // Use the zone's insert index if specified
294
+ result.index = zone.insertIndex ?? this.getInsertionIndex(zone, 0);
295
+ this.store.addComponent(newComponent);
296
+ result.success = true;
297
+ result.componentId = newComponent.id;
298
+ }
299
+ else if (item.type === 'move-component' && item.component) {
300
+ // Move existing component
301
+ result.index = zone.insertIndex ?? this.getInsertionIndex(zone, 0);
302
+ this.store.moveComponent(item.component.id, zone.componentId, result.index);
303
+ result.success = true;
304
+ result.componentId = item.component.id;
305
+ }
306
+ }
307
+ catch (error) {
308
+ console.error('Drop operation failed:', error);
309
+ result.error = error instanceof Error ? error.message : 'Drop operation failed';
310
+ }
311
+ return result;
312
+ }
313
+ /**
314
+ * Get default props for component type
315
+ */
316
+ getDefaultProps(componentType) {
317
+ const defaults = {
318
+ Button: { children: 'Button', type: 'primary' },
319
+ Input: { placeholder: 'Enter text...' },
320
+ Card: { title: 'Card Title' },
321
+ Text: { children: 'Sample text' },
322
+ Title: { children: 'Title', level: 1 },
323
+ Box: { padding: 16 },
324
+ Stack: { spacing: 8 },
325
+ // Add more defaults as needed
326
+ };
327
+ return defaults[componentType] || {};
328
+ }
329
+ /**
330
+ * Clean up after drag operation
331
+ */
332
+ cleanupDrag() {
333
+ // Clear active drop zone
334
+ if (this.activeDropZone) {
335
+ this.store.updateDropZone(this.activeDropZone.id, {
336
+ isActive: false,
337
+ isOver: false,
338
+ canDrop: false
339
+ });
340
+ this.activeDropZone = null;
341
+ }
342
+ // Clear all drop zone states
343
+ for (const zone of this.store.dropZones.values()) {
344
+ this.store.updateDropZone(zone.id, {
345
+ isActive: false,
346
+ isOver: false,
347
+ canDrop: false
348
+ });
349
+ }
350
+ // End drag in store
351
+ this.store.endDrag();
352
+ }
353
+ /**
354
+ * Update drop zone DOM rectangles
355
+ */
356
+ updateDropZoneRects() {
357
+ const canvas = document.querySelector('[data-canvas]');
358
+ const zoom = this.store.canvasZoom || 1;
359
+ const offset = this.store.canvasOffset || { x: 0, y: 0 };
360
+ for (const zone of this.store.dropZones.values()) {
361
+ const element = document.querySelector(`[data-drop-zone-id="${zone.id}"]`);
362
+ if (element) {
363
+ const rect = element.getBoundingClientRect();
364
+ let computed;
365
+ // Adjust rectangle for canvas transformations
366
+ if (canvas) {
367
+ const canvasRect = canvas.getBoundingClientRect();
368
+ computed = new DOMRect((rect.left - canvasRect.left - offset.x) / zoom, (rect.top - canvasRect.top - offset.y) / zoom, rect.width / zoom, rect.height / zoom);
369
+ }
370
+ else {
371
+ computed = rect;
372
+ }
373
+ this.store.updateDropZone(zone.id, { rect: computed });
374
+ }
375
+ }
376
+ }
377
+ /**
378
+ * Check if point is inside rectangle
379
+ */
380
+ pointInRect(x, y, rect) {
381
+ return x >= rect.left &&
382
+ x <= rect.right &&
383
+ y >= rect.top &&
384
+ y <= rect.bottom;
385
+ }
386
+ /**
387
+ * Check if one component is a descendant of another
388
+ */
389
+ isDescendant(possibleDescendantId, ancestorId) {
390
+ const component = this.store.components.get(possibleDescendantId);
391
+ if (!component)
392
+ return false;
393
+ if (component.parentId === ancestorId) {
394
+ return true;
395
+ }
396
+ if (component.parentId) {
397
+ return this.isDescendant(component.parentId, ancestorId);
398
+ }
399
+ return false;
400
+ }
401
+ /**
402
+ * Generate unique component ID
403
+ */
404
+ generateComponentId(type) {
405
+ return `${type.toLowerCase()}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
406
+ }
407
+ }
408
+ //# sourceMappingURL=DragDropManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragDropManager.js","sourceRoot":"","sources":["../../../playground/services/DragDropManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * StoryParser - Parses AI-generated story code into playground components
3
+ */
4
+ import type { PlaygroundComponent } from '../types';
5
+ export interface ParseResult {
6
+ success: boolean;
7
+ components: PlaygroundComponent[];
8
+ imports: ImportStatement[];
9
+ error?: string;
10
+ warnings?: string[];
11
+ }
12
+ export interface ImportStatement {
13
+ source: string;
14
+ specifiers: string[];
15
+ isDefault?: boolean;
16
+ isNamespace?: boolean;
17
+ }
18
+ export declare class StoryParser {
19
+ private componentIdCounter;
20
+ /**
21
+ * Parse story code into playground components
22
+ */
23
+ parseStoryToComponents(code: string): Promise<ParseResult>;
24
+ /**
25
+ * Extract the story component from the code
26
+ */
27
+ private extractStoryComponent;
28
+ /**
29
+ * Extract import statements from code
30
+ */
31
+ private extractImports;
32
+ /**
33
+ * Parse JSX string into component objects
34
+ */
35
+ private parseJSX;
36
+ /**
37
+ * Parse JSX props string
38
+ */
39
+ private parseProps;
40
+ /**
41
+ * Parse inline style string
42
+ */
43
+ private parseInlineStyles;
44
+ /**
45
+ * Parse children content
46
+ */
47
+ private parseChildren;
48
+ /**
49
+ * Parse children content and return components
50
+ */
51
+ private parseChildrenAsComponents;
52
+ /**
53
+ * Evaluate simple JavaScript expressions
54
+ */
55
+ private evaluateExpression;
56
+ /**
57
+ * Build component tree from flat list
58
+ */
59
+ private buildComponentTree;
60
+ /**
61
+ * Generate unique component ID
62
+ */
63
+ private generateId;
64
+ /**
65
+ * Validate parsed components
66
+ */
67
+ validateComponents(components: PlaygroundComponent[]): {
68
+ valid: boolean;
69
+ errors: string[];
70
+ warnings: string[];
71
+ };
72
+ }
73
+ //# sourceMappingURL=StoryParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoryParser.d.ts","sourceRoot":"","sources":["../../../playground/services/StoryParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,kBAAkB,CAAK;IAE/B;;OAEG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsChE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+EhB;;OAEG;IACH,OAAO,CAAC,UAAU;IA6BlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkDjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG;QACrD,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB;CAiCF"}