@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,419 @@
1
+ /**
2
+ * StoryParser - Parses AI-generated story code into playground components
3
+ */
4
+ export class StoryParser {
5
+ constructor() {
6
+ this.componentIdCounter = 0;
7
+ }
8
+ /**
9
+ * Parse story code into playground components
10
+ */
11
+ async parseStoryToComponents(code) {
12
+ try {
13
+ // Extract the story component definition
14
+ const componentMatch = this.extractStoryComponent(code);
15
+ if (!componentMatch) {
16
+ return {
17
+ success: false,
18
+ components: [],
19
+ imports: [],
20
+ error: 'Could not find story component in code'
21
+ };
22
+ }
23
+ // Extract imports
24
+ const imports = this.extractImports(code);
25
+ // Parse JSX into components
26
+ const components = this.parseJSX(componentMatch.jsx);
27
+ // Build component tree
28
+ const tree = this.buildComponentTree(components);
29
+ return {
30
+ success: true,
31
+ components: tree,
32
+ imports,
33
+ warnings: componentMatch.warnings
34
+ };
35
+ }
36
+ catch (error) {
37
+ return {
38
+ success: false,
39
+ components: [],
40
+ imports: [],
41
+ error: error instanceof Error ? error.message : 'Unknown parsing error'
42
+ };
43
+ }
44
+ }
45
+ /**
46
+ * Extract the story component from the code
47
+ */
48
+ extractStoryComponent(code) {
49
+ const warnings = [];
50
+ // Try to find the story export
51
+ const storyExportRegex = /export\s+const\s+\w+\s*=\s*\(\)\s*=>\s*{?\s*return\s*\(([\s\S]*?)\);?\s*}?;?/;
52
+ const storyMatch = code.match(storyExportRegex);
53
+ if (storyMatch) {
54
+ return { jsx: storyMatch[1].trim(), warnings };
55
+ }
56
+ // Try to find a default export
57
+ const defaultExportRegex = /export\s+default\s+(?:function\s+\w+\s*\(\)|(?:\(\)|\w+)\s*=>\s*){?\s*return\s*\(([\s\S]*?)\);?\s*}?;?/;
58
+ const defaultMatch = code.match(defaultExportRegex);
59
+ if (defaultMatch) {
60
+ return { jsx: defaultMatch[1].trim(), warnings };
61
+ }
62
+ // Try to find any JSX in the code
63
+ const jsxRegex = /<([A-Z][A-Za-z0-9]*)[^>]*>[\s\S]*?<\/\1>|<([A-Z][A-Za-z0-9]*)[^>]*\/>/;
64
+ const jsxMatch = code.match(jsxRegex);
65
+ if (jsxMatch) {
66
+ warnings.push('Could not find proper story export, extracting raw JSX');
67
+ // Find all JSX in the code
68
+ const allJsx = code.match(/<[A-Z][^>]*>[\s\S]*?<\/[A-Z][^>]*>|<[A-Z][^>]*\/>/g);
69
+ if (allJsx) {
70
+ return { jsx: allJsx.join('\n'), warnings };
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Extract import statements from code
77
+ */
78
+ extractImports(code) {
79
+ const imports = [];
80
+ const importRegex = /import\s+(?:(\*\s+as\s+\w+)|(?:(\w+)|{([^}]+)}))?\s*(?:,\s*(?:(\w+)|{([^}]+)}))?\s+from\s+['"]([^'"]+)['"]/g;
81
+ let match;
82
+ while ((match = importRegex.exec(code)) !== null) {
83
+ const [, namespace, defaultImport1, named1, defaultImport2, named2, source] = match;
84
+ const statement = {
85
+ source,
86
+ specifiers: []
87
+ };
88
+ if (namespace) {
89
+ statement.isNamespace = true;
90
+ statement.specifiers.push(namespace.replace(/\*\s+as\s+/, ''));
91
+ }
92
+ if (defaultImport1 || defaultImport2) {
93
+ statement.isDefault = true;
94
+ statement.specifiers.push(defaultImport1 || defaultImport2);
95
+ }
96
+ if (named1 || named2) {
97
+ const namedImports = (named1 || named2)
98
+ .split(',')
99
+ .map(s => s.trim())
100
+ .filter(Boolean);
101
+ statement.specifiers.push(...namedImports);
102
+ }
103
+ imports.push(statement);
104
+ }
105
+ return imports;
106
+ }
107
+ /**
108
+ * Parse JSX string into component objects
109
+ */
110
+ parseJSX(jsx) {
111
+ const components = [];
112
+ // Simple JSX parser - in production, we'd use a proper parser like @babel/parser
113
+ const parseElement = (jsxString, parentId) => {
114
+ // Match opening tag
115
+ const openTagRegex = /^<([A-Z][A-Za-z0-9\.]*)\s*([^>]*)>/;
116
+ const openMatch = jsxString.match(openTagRegex);
117
+ if (!openMatch) {
118
+ // Check if it's just text content
119
+ const textContent = jsxString.trim();
120
+ if (textContent && !textContent.startsWith('<')) {
121
+ return {
122
+ id: this.generateId(),
123
+ type: 'Text',
124
+ props: {},
125
+ textContent,
126
+ parentId
127
+ };
128
+ }
129
+ return null;
130
+ }
131
+ const [fullOpenTag, tagName, propsString] = openMatch;
132
+ const isSelfClosing = propsString.endsWith('/');
133
+ // Parse props
134
+ const props = this.parseProps(isSelfClosing ? propsString.slice(0, -1) : propsString);
135
+ // Create component
136
+ const component = {
137
+ id: this.generateId(),
138
+ type: tagName,
139
+ displayName: tagName,
140
+ props,
141
+ parentId
142
+ };
143
+ // Extract styles if present
144
+ if (props.style && typeof props.style === 'string') {
145
+ component.style = this.parseInlineStyles(props.style);
146
+ delete props.style;
147
+ }
148
+ if (!isSelfClosing) {
149
+ // Find closing tag
150
+ const closeTagRegex = new RegExp(`<\\/${tagName}>`);
151
+ const closeIndex = jsxString.search(closeTagRegex);
152
+ if (closeIndex > 0) {
153
+ const contentStart = fullOpenTag.length;
154
+ const content = jsxString.substring(contentStart, closeIndex);
155
+ // Parse children
156
+ if (content.trim()) {
157
+ const childComponents = this.parseChildrenAsComponents(content, component.id);
158
+ component.children = childComponents.map(c => c.id);
159
+ }
160
+ }
161
+ }
162
+ return component;
163
+ };
164
+ // Parse all top-level elements
165
+ const elementRegex = /<([A-Z][A-Za-z0-9\.]*)[^>]*>[\s\S]*?<\/\1>|<([A-Z][A-Za-z0-9\.]*)[^>]*\/>/g;
166
+ let match;
167
+ while ((match = elementRegex.exec(jsx)) !== null) {
168
+ const element = parseElement(match[0]);
169
+ if (element) {
170
+ components.push(element);
171
+ }
172
+ }
173
+ return components;
174
+ }
175
+ /**
176
+ * Parse JSX props string
177
+ */
178
+ parseProps(propsString) {
179
+ const props = {};
180
+ if (!propsString.trim())
181
+ return props;
182
+ // Match prop patterns: name="value", name={value}, name
183
+ const propRegex = /(\w+)(?:=(?:"([^"]*)"|'([^']*)'|{([^}]*)}|\{([^}]*)\}))?/g;
184
+ let match;
185
+ while ((match = propRegex.exec(propsString)) !== null) {
186
+ const [, name, doubleQuoted, singleQuoted, expression1, expression2] = match;
187
+ if (doubleQuoted !== undefined) {
188
+ props[name] = doubleQuoted;
189
+ }
190
+ else if (singleQuoted !== undefined) {
191
+ props[name] = singleQuoted;
192
+ }
193
+ else if (expression1 !== undefined || expression2 !== undefined) {
194
+ const expr = expression1 || expression2;
195
+ // Try to evaluate simple expressions
196
+ props[name] = this.evaluateExpression(expr);
197
+ }
198
+ else {
199
+ // Boolean prop
200
+ props[name] = true;
201
+ }
202
+ }
203
+ return props;
204
+ }
205
+ /**
206
+ * Parse inline style string
207
+ */
208
+ parseInlineStyles(styleString) {
209
+ const styles = {};
210
+ // Handle object notation {key: value}
211
+ if (styleString.startsWith('{') && styleString.endsWith('}')) {
212
+ styleString = styleString.slice(1, -1);
213
+ }
214
+ // Parse CSS properties
215
+ const styleRegex = /(\w+):\s*['"]?([^'",;]+)['"]?/g;
216
+ let match;
217
+ while ((match = styleRegex.exec(styleString)) !== null) {
218
+ const [, property, value] = match;
219
+ // Convert kebab-case to camelCase
220
+ const camelProperty = property.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
221
+ styles[camelProperty] = value;
222
+ }
223
+ return styles;
224
+ }
225
+ /**
226
+ * Parse children content
227
+ */
228
+ parseChildren(content, parentId) {
229
+ const children = [];
230
+ // Find all child elements
231
+ const elementRegex = /<([A-Z][A-Za-z0-9\.]*)[^>]*>[\s\S]*?<\/\1>|<([A-Z][A-Za-z0-9\.]*)[^>]*\/>/g;
232
+ let lastIndex = 0;
233
+ let match;
234
+ while ((match = elementRegex.exec(content)) !== null) {
235
+ // Check for text content before this element
236
+ if (match.index > lastIndex) {
237
+ const textContent = content.substring(lastIndex, match.index).trim();
238
+ if (textContent) {
239
+ const textId = this.generateId();
240
+ children.push(textId);
241
+ }
242
+ }
243
+ // Parse the element
244
+ const child = this.parseJSX(match[0])[0];
245
+ if (child) {
246
+ child.parentId = parentId;
247
+ children.push(child.id);
248
+ }
249
+ lastIndex = match.index + match[0].length;
250
+ }
251
+ // Check for text content after last element
252
+ if (lastIndex < content.length) {
253
+ const textContent = content.substring(lastIndex).trim();
254
+ if (textContent) {
255
+ const textId = this.generateId();
256
+ children.push(textId);
257
+ }
258
+ }
259
+ return children;
260
+ }
261
+ /**
262
+ * Parse children content and return components
263
+ */
264
+ parseChildrenAsComponents(content, parentId) {
265
+ const children = [];
266
+ // Find all child elements
267
+ const elementRegex = /<([A-Z][A-Za-z0-9\.]*)[^>]*>[\s\S]*?<\/\1>|<([A-Z][A-Za-z0-9\.]*)[^>]*\/>/g;
268
+ let lastIndex = 0;
269
+ let match;
270
+ while ((match = elementRegex.exec(content)) !== null) {
271
+ // Check for text content before this element
272
+ if (match.index > lastIndex) {
273
+ const textContent = content.substring(lastIndex, match.index).trim();
274
+ if (textContent) {
275
+ children.push({
276
+ id: this.generateId(),
277
+ type: 'Text',
278
+ props: {},
279
+ textContent,
280
+ parentId
281
+ });
282
+ }
283
+ }
284
+ // Parse the element
285
+ const child = this.parseJSX(match[0])[0];
286
+ if (child) {
287
+ child.parentId = parentId;
288
+ children.push(child);
289
+ }
290
+ lastIndex = match.index + match[0].length;
291
+ }
292
+ // Check for text content after last element
293
+ if (lastIndex < content.length) {
294
+ const textContent = content.substring(lastIndex).trim();
295
+ if (textContent) {
296
+ children.push({
297
+ id: this.generateId(),
298
+ type: 'Text',
299
+ props: {},
300
+ textContent,
301
+ parentId
302
+ });
303
+ }
304
+ }
305
+ return children;
306
+ }
307
+ /**
308
+ * Evaluate simple JavaScript expressions
309
+ */
310
+ evaluateExpression(expr) {
311
+ expr = expr.trim();
312
+ // Boolean values
313
+ if (expr === 'true')
314
+ return true;
315
+ if (expr === 'false')
316
+ return false;
317
+ // Null/undefined
318
+ if (expr === 'null')
319
+ return null;
320
+ if (expr === 'undefined')
321
+ return undefined;
322
+ // Numbers
323
+ if (/^-?\d+(\.\d+)?$/.test(expr)) {
324
+ return parseFloat(expr);
325
+ }
326
+ // Arrays
327
+ if (expr.startsWith('[') && expr.endsWith(']')) {
328
+ try {
329
+ // Simple array parsing - in production, use proper parser
330
+ return JSON.parse(expr);
331
+ }
332
+ catch {
333
+ return expr;
334
+ }
335
+ }
336
+ // Objects
337
+ if (expr.startsWith('{') && expr.endsWith('}')) {
338
+ try {
339
+ // Convert JS object notation to JSON
340
+ const jsonStr = expr
341
+ .replace(/(\w+):/g, '"$1":')
342
+ .replace(/'/g, '"');
343
+ return JSON.parse(jsonStr);
344
+ }
345
+ catch {
346
+ return expr;
347
+ }
348
+ }
349
+ // Default to string
350
+ return expr;
351
+ }
352
+ /**
353
+ * Build component tree from flat list
354
+ */
355
+ buildComponentTree(components) {
356
+ const tree = [];
357
+ const componentMap = new Map();
358
+ // First pass: create map
359
+ components.forEach(component => {
360
+ componentMap.set(component.id, component);
361
+ if (!component.children) {
362
+ component.children = [];
363
+ }
364
+ });
365
+ // Second pass: build tree
366
+ components.forEach(component => {
367
+ if (component.parentId) {
368
+ const parent = componentMap.get(component.parentId);
369
+ if (parent) {
370
+ if (!parent.children)
371
+ parent.children = [];
372
+ parent.children.push(component.id);
373
+ }
374
+ }
375
+ else {
376
+ tree.push(component);
377
+ }
378
+ });
379
+ return tree;
380
+ }
381
+ /**
382
+ * Generate unique component ID
383
+ */
384
+ generateId() {
385
+ return `component_${Date.now()}_${this.componentIdCounter++}`;
386
+ }
387
+ /**
388
+ * Validate parsed components
389
+ */
390
+ validateComponents(components) {
391
+ const errors = [];
392
+ const warnings = [];
393
+ // Check for empty tree
394
+ if (components.length === 0) {
395
+ errors.push('No components found in story');
396
+ }
397
+ // Check for missing IDs
398
+ components.forEach(component => {
399
+ if (!component.id) {
400
+ errors.push(`Component of type ${component.type} is missing an ID`);
401
+ }
402
+ // Check for unknown component types
403
+ // This would be validated against registered components in production
404
+ if (!component.type) {
405
+ errors.push(`Component ${component.id} is missing a type`);
406
+ }
407
+ // Warn about missing display names
408
+ if (!component.displayName) {
409
+ warnings.push(`Component ${component.id} is missing a display name`);
410
+ }
411
+ });
412
+ return {
413
+ valid: errors.length === 0,
414
+ errors,
415
+ warnings
416
+ };
417
+ }
418
+ }
419
+ //# sourceMappingURL=StoryParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoryParser.js","sourceRoot":"","sources":["../../../playground/services/StoryParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Zustand store for Playground state management
3
+ */
4
+ import type { PlaygroundComponent, DraggedItem, DropZone, CanvasSnapshot, PlaygroundMode, SidebarTab, ComponentDefinition } from '../types';
5
+ export interface PlaygroundState {
6
+ components: Map<string, PlaygroundComponent>;
7
+ rootId: string;
8
+ selectedIds: Set<string>;
9
+ hoveredId: string | null;
10
+ focusedId: string | null;
11
+ draggedItem: DraggedItem | null;
12
+ dropZones: Map<string, DropZone>;
13
+ dragState: 'idle' | 'dragging' | 'dropping';
14
+ mode: PlaygroundMode;
15
+ sidebarTab: SidebarTab;
16
+ propertiesPanelOpen: boolean;
17
+ canvasZoom: number;
18
+ canvasOffset: {
19
+ x: number;
20
+ y: number;
21
+ };
22
+ showGrid: boolean;
23
+ snapToGrid: boolean;
24
+ gridSize: number;
25
+ history: CanvasSnapshot[];
26
+ historyIndex: number;
27
+ maxHistorySize: number;
28
+ generatedStoryCode: string | null;
29
+ isParsingStory: boolean;
30
+ parseError: string | null;
31
+ availableComponents: ComponentDefinition[];
32
+ loadingComponents: Set<string>;
33
+ failedComponents: Map<string, Error>;
34
+ }
35
+ export interface PlaygroundActions {
36
+ addComponent: (component: PlaygroundComponent) => void;
37
+ updateComponent: (id: string, updates: Partial<PlaygroundComponent>) => void;
38
+ deleteComponent: (id: string) => void;
39
+ moveComponent: (id: string, newParentId: string, index: number) => void;
40
+ duplicateComponent: (id: string) => string;
41
+ clearComponents: () => void;
42
+ selectComponent: (id: string, multi?: boolean) => void;
43
+ deselectComponent: (id: string) => void;
44
+ selectAll: () => void;
45
+ deselectAll: () => void;
46
+ setHoveredComponent: (id: string | null) => void;
47
+ startDrag: (item: DraggedItem) => void;
48
+ updateDrag: (item: Partial<DraggedItem>) => void;
49
+ endDrag: () => void;
50
+ registerDropZone: (zone: DropZone) => void;
51
+ unregisterDropZone: (id: string) => void;
52
+ updateDropZone: (id: string, updates: Partial<DropZone>) => void;
53
+ setMode: (mode: PlaygroundMode) => void;
54
+ setSidebarTab: (tab: SidebarTab) => void;
55
+ togglePropertiesPanel: () => void;
56
+ setCanvasZoom: (zoom: number) => void;
57
+ panCanvas: (dx: number, dy: number) => void;
58
+ resetCanvas: () => void;
59
+ toggleGrid: () => void;
60
+ toggleSnapToGrid: () => void;
61
+ setGridSize: (size: number) => void;
62
+ undo: () => void;
63
+ redo: () => void;
64
+ saveSnapshot: (description?: string) => void;
65
+ clearHistory: () => void;
66
+ setGeneratedStoryCode: (code: string | null) => void;
67
+ setIsParsingStory: (parsing: boolean) => void;
68
+ setParseError: (error: string | null) => void;
69
+ loadComponentsFromStory: (components: PlaygroundComponent[]) => void;
70
+ setAvailableComponents: (components: ComponentDefinition[]) => void;
71
+ addLoadingComponent: (name: string) => void;
72
+ removeLoadingComponent: (name: string) => void;
73
+ setComponentError: (name: string, error: Error) => void;
74
+ reset: () => void;
75
+ loadFromSnapshot: (snapshot: CanvasSnapshot) => void;
76
+ }
77
+ export declare const usePlaygroundStore: import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<PlaygroundState & PlaygroundActions>, "setState"> & {
78
+ setState<A extends string | {
79
+ type: string;
80
+ }>(partial: (PlaygroundState & PlaygroundActions) | Partial<PlaygroundState & PlaygroundActions> | ((state: PlaygroundState & PlaygroundActions) => (PlaygroundState & PlaygroundActions) | Partial<PlaygroundState & PlaygroundActions>), replace?: boolean | undefined, action?: A | undefined): void;
81
+ }, "setState"> & {
82
+ setState(nextStateOrUpdater: (PlaygroundState & PlaygroundActions) | Partial<PlaygroundState & PlaygroundActions> | ((state: import("immer").WritableDraft<PlaygroundState & PlaygroundActions>) => void), shouldReplace?: boolean | undefined, action?: string | {
83
+ type: string;
84
+ } | undefined): void;
85
+ }>;
86
+ //# sourceMappingURL=playgroundStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playgroundStore.d.ts","sourceRoot":"","sources":["../../../playground/store/playgroundStore.ts"],"names":[],"mappings":"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"}