@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.da5baf5

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 (393) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +5 -5
  4. package/analyzer-template/packages/ai/index.ts +2 -1
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
  9. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
  11. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +127 -4
  12. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1821 -542
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
  25. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
  26. package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
  27. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
  28. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
  29. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
  30. package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
  31. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +53 -176
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
  33. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
  34. package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
  35. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
  36. package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
  37. package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
  40. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
  45. package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
  46. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
  47. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +52 -6
  48. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
  49. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
  50. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
  51. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
  52. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
  53. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
  54. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
  55. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
  56. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
  57. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
  58. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
  59. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
  61. package/analyzer-template/packages/aws/package.json +2 -2
  62. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
  63. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
  64. package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
  65. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  70. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
  73. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
  75. package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/utils/index.js +2 -0
  77. package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
  79. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  80. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
  81. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
  82. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  84. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  87. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  90. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  92. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  93. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  95. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  96. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  97. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  98. package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
  99. package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
  100. package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
  101. package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
  102. package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
  103. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
  104. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  105. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
  106. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
  107. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  108. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  109. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  110. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  112. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  113. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  114. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  115. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  116. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  123. package/analyzer-template/packages/utils/index.ts +2 -0
  124. package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
  125. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +8 -3
  126. package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
  127. package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
  128. package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
  129. package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
  130. package/analyzer-template/project/constructMockCode.ts +170 -6
  131. package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
  132. package/analyzer-template/project/startScenarioCapture.ts +24 -0
  133. package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
  134. package/analyzer-template/project/writeMockDataTsx.ts +125 -4
  135. package/analyzer-template/project/writeScenarioComponents.ts +175 -45
  136. package/analyzer-template/project/writeUniversalMocks.ts +72 -10
  137. package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
  138. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  139. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
  140. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  141. package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
  142. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  143. package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
  144. package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
  145. package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
  146. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  147. package/background/src/lib/virtualized/project/writeScenarioComponents.js +130 -28
  148. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  149. package/background/src/lib/virtualized/project/writeUniversalMocks.js +59 -9
  150. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  151. package/codeyam-cli/scripts/apply-setup.js +288 -0
  152. package/codeyam-cli/scripts/apply-setup.js.map +1 -0
  153. package/codeyam-cli/scripts/extract-setup.js +130 -0
  154. package/codeyam-cli/scripts/extract-setup.js.map +1 -0
  155. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
  156. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
  157. package/codeyam-cli/src/cli.js +4 -0
  158. package/codeyam-cli/src/cli.js.map +1 -1
  159. package/codeyam-cli/src/codeyam-cli.js +0 -0
  160. package/codeyam-cli/src/commands/debug.js +190 -0
  161. package/codeyam-cli/src/commands/debug.js.map +1 -0
  162. package/codeyam-cli/src/commands/init.js +4 -23
  163. package/codeyam-cli/src/commands/init.js.map +1 -1
  164. package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
  165. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
  167. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
  168. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
  169. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  170. package/codeyam-cli/src/utils/analysisRunner.js +4 -3
  171. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  172. package/codeyam-cli/src/utils/backgroundServer.js +25 -5
  173. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  174. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
  175. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
  176. package/codeyam-cli/src/utils/fileWatcher.js +75 -5
  177. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  178. package/codeyam-cli/src/utils/queue/job.js +3 -2
  179. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  180. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
  181. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  182. package/codeyam-cli/src/utils/webappDetection.js +2 -1
  183. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  184. package/codeyam-cli/src/webserver/app/lib/database.js +63 -2
  185. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  186. package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
  187. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  188. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BFRmw1TF.js +1 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-CRfBaL5B.js} +3 -3
  190. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-CRcT5fOZ.js} +1 -1
  192. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
  193. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Dj4Mm0AR.js +6 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-wtCIkGzq.js +5 -0
  195. package/codeyam-cli/src/webserver/build/client/assets/_index-Cjdlwanz.js +1 -0
  196. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dv3k2aEm.js +10 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/chart-column-DOftqM9U.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-0WShkwuc.js +1 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/clock-DXui5oLF.js +1 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DPFKgE96.js +1 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BxaXKsIx.js} +10 -10
  203. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BRD2FrH5.js +1 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-69R47Ffu.js +5 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
  206. package/codeyam-cli/src/webserver/build/client/assets/entry.client-B5l8I1m3.js +5 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/file-text-fb2mx25c.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/files-l_Eh9jQG.js +1 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/git-BCnOUEl9.js +12 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/globals-BxkM6Up7.css +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/index-BgDzgbQW.js +8 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DE3HAwpF.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/manifest-5579bc45.js +1 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/root-o8NMI2bW.js +16 -0
  215. package/codeyam-cli/src/webserver/build/client/assets/search-BymWwY_X.js +1 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/settings-C7G4GDvW.js +1 -0
  217. package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
  218. package/codeyam-cli/src/webserver/build/client/assets/simulations-Duh3oShE.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-AlhS7g5F.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/client/assets/useToast-XY00p4rI.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/zap-Dra7vum1.js +1 -0
  222. package/codeyam-cli/src/webserver/build/server/assets/index-Dpr7o3dP.js +1 -0
  223. package/codeyam-cli/src/webserver/build/server/assets/server-build-BM5nyvlV.js +166 -0
  224. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  225. package/codeyam-cli/src/webserver/build-info.json +5 -5
  226. package/codeyam-cli/src/webserver/server.js +1 -1
  227. package/codeyam-cli/src/webserver/server.js.map +1 -1
  228. package/codeyam-cli/templates/codeyam-setup-skill.md +85 -94
  229. package/package.json +7 -10
  230. package/packages/ai/index.js +1 -2
  231. package/packages/ai/index.js.map +1 -1
  232. package/packages/ai/src/lib/analyzeScope.js +13 -0
  233. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  234. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
  235. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  236. package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
  237. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  238. package/packages/ai/src/lib/astScopes/paths.js +28 -3
  239. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  240. package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
  241. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  242. package/packages/ai/src/lib/checkAllAttributes.js +1 -3
  243. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  244. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
  245. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  246. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
  247. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
  248. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
  249. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  250. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
  251. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
  252. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
  253. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
  254. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
  255. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
  256. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
  257. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
  258. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
  259. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
  260. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
  261. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  262. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
  263. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
  264. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
  265. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
  266. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
  267. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  268. package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
  269. package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
  270. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
  271. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  272. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
  273. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  274. package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
  275. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  276. package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
  277. package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
  278. package/packages/ai/src/lib/generateEntityKeyAttributes.js +53 -176
  279. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  280. package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
  281. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  282. package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
  283. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  284. package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
  285. package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
  286. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
  287. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  288. package/packages/ai/src/lib/getLLMCallStats.js +0 -14
  289. package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
  290. package/packages/ai/src/lib/modelInfo.js +15 -0
  291. package/packages/ai/src/lib/modelInfo.js.map +1 -1
  292. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
  293. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  294. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
  295. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
  296. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
  297. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  298. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
  299. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  300. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
  301. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
  302. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
  303. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  304. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
  305. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  306. package/packages/ai/src/lib/types/index.js +2 -0
  307. package/packages/ai/src/lib/types/index.js.map +1 -1
  308. package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
  309. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  310. package/packages/analyze/src/lib/FileAnalyzer.js +45 -5
  311. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  312. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
  313. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
  314. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
  315. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
  316. package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
  317. package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
  318. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
  319. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  320. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
  321. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  322. package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
  323. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  324. package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
  325. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  326. package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
  327. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  328. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
  329. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  330. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
  331. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  332. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
  333. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  334. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
  335. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  336. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
  337. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  338. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  339. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  340. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  341. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  342. package/packages/generate/src/lib/scenarioComponent.js +5 -3
  343. package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
  344. package/packages/utils/index.js +2 -0
  345. package/packages/utils/index.js.map +1 -1
  346. package/packages/utils/src/lib/Semaphore.js +40 -0
  347. package/packages/utils/src/lib/Semaphore.js.map +1 -0
  348. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  349. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  350. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  351. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  352. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  353. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  354. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  355. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  356. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  357. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  358. package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
  359. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
  361. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-xwuhwsZH.js +0 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
  363. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-M2QuSHKC.js +0 -5
  364. package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
  366. package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
  367. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/components-CAx5ONX_.js +0 -40
  369. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
  370. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DGy3zrli.js +0 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-ChAdTrrU.js +0 -1
  372. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-D9L7267w.js +0 -5
  373. package/codeyam-cli/src/webserver/build/client/assets/entry.client-C6FRgjPr.js +0 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
  376. package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
  380. package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/settings-Hbf8b7J_.js +0 -1
  382. package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
  383. package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
  384. package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
  385. package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
  386. package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
  387. package/codeyam-cli/src/webserver/build/server/assets/index-eAULANMV.js +0 -1
  388. package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
  389. package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
  390. package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
  391. package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
  392. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
  393. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
@@ -2,9 +2,6 @@
2
2
  // This script runs the Remix server in the background
3
3
  import { startRemixServer } from "./server.js";
4
4
  import { createFileWatcher } from "../utils/fileWatcher.js";
5
- import { syncUncommittedEntities } from "../utils/syncUncommittedEntities.js";
6
- import { loadProject } from "../../../packages/supabase/index.js";
7
- import { ProjectAnalyzer } from "../../../packages/analyze/index.js";
8
5
  import { setProjectRoot } from "../state.js";
9
6
  import { AnalysisQueue } from "../utils/queue/manager.js";
10
7
  import { checkForStaleProcesses } from "../utils/queue/heartbeat.js";
@@ -65,39 +62,10 @@ async function main() {
65
62
  });
66
63
  await analysisQueue.start();
67
64
  console.log('📋 Analysis queue initialized');
68
- const { url } = await startRemixServer({
69
- port,
70
- analysisQueue,
71
- dbNotifier, // Pass the SAME dbNotifier instance to Remix routes
72
- });
73
- console.log(`✅ CodeYam server running at ${url}`);
74
- // Start file watcher if we have project and branch info
65
+ // Start file watcher BEFORE the server if we have project and branch info
66
+ // This ensures the database is in sync with the filesystem before accepting requests
75
67
  if (project?.id && branch?.id) {
76
68
  try {
77
- // Sync uncommitted entities before starting the file watcher
78
- // This catches any changes that happened while the server was off
79
- console.log('🔄 Syncing uncommitted entities...');
80
- const fullProject = await loadProject({
81
- id: project.id,
82
- withFiles: true,
83
- });
84
- if (fullProject) {
85
- // Ensure files array exists (loadProject with withFiles: true should populate it, but be defensive)
86
- if (!fullProject.files) {
87
- fullProject.files = [];
88
- }
89
- const projectAnalyzer = await ProjectAnalyzer.from({
90
- project: fullProject,
91
- dirPath: rootPath,
92
- });
93
- await syncUncommittedEntities({
94
- projectId: project.id,
95
- branchId: branch.id,
96
- projectRootPath: rootPath,
97
- projectAnalyzer,
98
- });
99
- console.log('✅ Sync complete');
100
- }
101
69
  // Load project config to get pathsToIgnore
102
70
  let customIgnorePatterns = [];
103
71
  try {
@@ -113,7 +81,11 @@ async function main() {
113
81
  catch (error) {
114
82
  console.warn('⚠️ Failed to load pathsToIgnore from config:', error);
115
83
  }
116
- fileWatcher = createFileWatcher({
84
+ // createFileWatcher now awaits start() which includes initial sync
85
+ // This replaces the old syncUncommittedEntities call with a more complete sync
86
+ // that also compares code SHAs and creates new entity versions if needed
87
+ console.log('🔄 Starting file watcher with initial sync...');
88
+ fileWatcher = await createFileWatcher({
117
89
  projectId: project.id,
118
90
  branchId: branch.id,
119
91
  projectRootPath: rootPath,
@@ -126,6 +98,14 @@ async function main() {
126
98
  console.error('Failed to start file watcher:', error);
127
99
  }
128
100
  }
101
+ // Start server AFTER file watcher is fully initialized
102
+ // This ensures /api/health only returns 200 when the system is truly ready
103
+ const { url } = await startRemixServer({
104
+ port,
105
+ analysisQueue,
106
+ dbNotifier, // Pass the SAME dbNotifier instance to Remix routes
107
+ });
108
+ console.log(`✅ CodeYam server running at ${url}`);
129
109
  }
130
110
  main().catch((error) => {
131
111
  console.error('❌ Failed to start CodeYam server:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"backgroundServer.js","sourceRoot":"","sources":["../../../../src/webserver/backgroundServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backgroundServer.js","sourceRoot":"","sources":["../../../../src/webserver/backgroundServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{j as o}from"./chunk-WWGJGFF6-De6i8FUT.js";import{c,F as l}from"./file-text-fb2mx25c.js";import{C as i}from"./chart-column-DOftqM9U.js";const s=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]],d=c("box",s);const g=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],h=c("code-xml",g);const C=[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]],a=c("code",C);const b=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],f=c("list",b);const x=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],p=c("tag",x),y="data:image/svg+xml,%3csvg%20width='18'%20height='14'%20viewBox='0%200%2018%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.46802%2013.5264C1.10497%2013.5264%20-3.51454e-08%2012.4214%20-7.84995e-08%2011.0583L-3.51715e-07%202.46848C-3.95069e-07%201.10542%201.10497%200.000452947%202.46802%200.000453841L10.3546%200.000453496L15.2058%200.000453284C16.5689%200.000453225%2017.6738%201.10542%2017.6738%202.46847L17.6738%2011.0583C17.6738%2012.4214%2016.5689%2013.5264%2015.2058%2013.5264L2.46802%2013.5264Z'%20fill='%23F0E4FF'/%3e%3cpath%20d='M14.7146%2010.9579V7.27751L11.2361%203.7832L6.97294%208.06716L5.642%206.75757L2.96094%209.41945V10.9579H14.7146Z'%20fill='%239040F5'/%3e%3ccircle%20cx='5.57991'%20cy='4.1639'%20r='1.59554'%20fill='%239040F5'/%3e%3c/svg%3e";function j({type:r}){const t={visual:{iconColor:"#7c3aed",bgColor:"bg-purple-100",bgHex:"#f3e8ff"},library:{iconColor:"#0DBFE9",bgColor:"bg-cyan-100",bgHex:"#cffafe"},type:{iconColor:"#dc2626",bgColor:"bg-red-100",bgHex:"#fee2e2"},data:{iconColor:"#2563eb",bgColor:"bg-blue-100",bgHex:"#dbeafe"},index:{iconColor:"#ea580c",bgColor:"bg-orange-100",bgHex:"#ffedd5"},functionCall:{iconColor:"#7c3aed",bgColor:"bg-purple-100",bgHex:"#f3e8ff"},class:{iconColor:"#059669",bgColor:"bg-emerald-100",bgHex:"#d1fae5"},method:{iconColor:"#0891b2",bgColor:"bg-cyan-100",bgHex:"#cffafe"},other:{iconColor:"#6b7280",bgColor:"bg-gray-100",bgHex:"#f3f4f6"}},e=t[r]||t.other,n=()=>{switch(r){case"library":return o.jsx(h,{size:16,color:e.iconColor});case"visual":return o.jsx("img",{src:y,alt:"",style:{width:22,height:17}});case"type":return o.jsx(p,{size:16,color:e.iconColor});case"data":return o.jsx(i,{size:16,color:e.iconColor});case"index":return o.jsx(f,{size:16,color:e.iconColor});case"functionCall":return o.jsx(a,{size:16,color:e.iconColor});case"class":return o.jsx(d,{size:16,color:e.iconColor});case"method":return o.jsx(a,{size:16,color:e.iconColor});case"other":return o.jsx(l,{size:16,color:e.iconColor});default:return o.jsx(l,{size:16,color:e.iconColor})}};return o.jsx("span",{className:`flex items-center justify-center w-8 h-8 rounded ${e.bgColor}`,children:n()})}export{h as C,j as E};
@@ -1,6 +1,6 @@
1
- import{r as _,j as z,F as Z,x as ze,b as He}from"./components-CAx5ONX_.js";import{u as Ee}from"./useLastLogLine-BBlyqxij.js";const Te=_.createContext({dimensions:{height:720,width:1200},updateDimensions:()=>{},iframeRef:{current:null},scale:1,updateScale:()=>{},maxWidth:1200,updateMaxWidth:()=>{}}),Ie=()=>{const i=_.useContext(Te);if(!i)throw new Error("useWebContainer must be used within a WebContainerProvider");return i},nt=({children:i})=>{const[m,f]=_.useState({height:720,width:1200}),[c,w]=_.useState(1),[u,y]=_.useState(1200),R=_.useRef(null),h=_.useCallback(({height:d,width:D})=>{f(x=>({height:d??x.height,width:D??x.width}))},[]),v=_.useCallback(d=>{w(d)},[]),O=_.useCallback(d=>{y(d)},[]);return z.jsx(Te.Provider,{value:{dimensions:m,updateDimensions:h,iframeRef:R,scale:c,updateScale:v,maxWidth:u,updateMaxWidth:O},children:i})};var X={exports:{}},A={},$={exports:{}},ie={},se={exports:{}},le,fe;function Le(){if(fe)return le;fe=1;var i="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return le=i,le}var ue,de;function Fe(){if(de)return ue;de=1;var i=Le();function m(){}function f(){}return f.resetWarningCache=m,ue=function(){function c(y,R,h,v,O,d){if(d!==i){var D=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw D.name="Invariant Violation",D}}c.isRequired=c;function w(){return c}var u={array:c,bigint:c,bool:c,func:c,number:c,object:c,string:c,symbol:c,any:c,arrayOf:w,element:c,elementType:c,instanceOf:w,node:c,objectOf:w,oneOf:w,oneOfType:w,shape:w,exact:w,checkPropTypes:f,resetWarningCache:m};return u.PropTypes=u,u},ue}var pe;function re(){return pe||(pe=1,se.exports=Fe()()),se.exports}var Q={exports:{}},he;function Be(){if(he)return Q.exports;he=1;function i(f){var c,w,u="";if(typeof f=="string"||typeof f=="number")u+=f;else if(typeof f=="object")if(Array.isArray(f)){var y=f.length;for(c=0;c<y;c++)f[c]&&(w=i(f[c]))&&(u&&(u+=" "),u+=w)}else for(w in f)f[w]&&(u&&(u+=" "),u+=w);return u}function m(){for(var f,c,w=0,u="",y=arguments.length;w<y;w++)(f=arguments[w])&&(c=i(f))&&(u&&(u+=" "),u+=c);return u}return Q.exports=m,Q.exports.clsx=m,Q.exports}var N={},B={},ge;function ne(){if(ge)return B;ge=1,Object.defineProperty(B,"__esModule",{value:!0}),B.dontSetMe=w,B.findInArray=i,B.int=c,B.isFunction=m,B.isNum=f;function i(u,y){for(let R=0,h=u.length;R<h;R++)if(y.apply(y,[u[R],R,u]))return u[R]}function m(u){return typeof u=="function"||Object.prototype.toString.call(u)==="[object Function]"}function f(u){return typeof u=="number"&&!isNaN(u)}function c(u){return parseInt(u,10)}function w(u,y,R){if(u[y])return new Error(`Invalid prop ${y} passed to ${R} - do not set this, set it on the child.`)}return B}var Y={},me;function Ye(){if(me)return Y;me=1,Object.defineProperty(Y,"__esModule",{value:!0}),Y.browserPrefixToKey=f,Y.browserPrefixToStyle=c,Y.default=void 0,Y.getPrefix=m;const i=["Moz","Webkit","O","ms"];function m(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const y=window.document?.documentElement?.style;if(!y||u in y)return"";for(let R=0;R<i.length;R++)if(f(u,i[R])in y)return i[R];return""}function f(u,y){return y?`${y}${w(u)}`:u}function c(u,y){return y?`-${y.toLowerCase()}-${u}`:u}function w(u){let y="",R=!0;for(let h=0;h<u.length;h++)R?(y+=u[h].toUpperCase(),R=!1):u[h]==="-"?R=!0:y+=u[h];return y}return Y.default=m(),Y}var ve;function ce(){if(ve)return N;ve=1,Object.defineProperty(N,"__esModule",{value:!0}),N.addClassName=r,N.addEvent=y,N.addUserSelectStyles=t,N.createCSSTransform=x,N.createSVGTransform=P,N.getTouch=g,N.getTouchIdentifier=s,N.getTranslation=S,N.innerHeight=O,N.innerWidth=d,N.matchesSelector=w,N.matchesSelectorAndParentsTo=u,N.offsetXYFromParent=D,N.outerHeight=h,N.outerWidth=v,N.removeClassName=n,N.removeEvent=R,N.scheduleRemoveUserSelectStyles=a;var i=ne(),m=f(Ye());function f(e,l){if(typeof WeakMap=="function")var p=new WeakMap,M=new WeakMap;return(f=function(b,C){if(!C&&b&&b.__esModule)return b;var E,T,q={__proto__:null,default:b};if(b===null||typeof b!="object"&&typeof b!="function")return q;if(E=C?M:p){if(E.has(b))return E.get(b);E.set(b,q)}for(const j in b)j!=="default"&&{}.hasOwnProperty.call(b,j)&&((T=(E=Object.defineProperty)&&Object.getOwnPropertyDescriptor(b,j))&&(T.get||T.set)?E(q,j,T):q[j]=b[j]);return q})(e,l)}let c="";function w(e,l){return c||(c=(0,i.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(p){return(0,i.isFunction)(e[p])})),(0,i.isFunction)(e[c])?e[c](l):!1}function u(e,l,p){let M=e;do{if(w(M,l))return!0;if(M===p)return!1;M=M.parentNode}while(M);return!1}function y(e,l,p,M){if(!e)return;const b={capture:!0,...M};e.addEventListener?e.addEventListener(l,p,b):e.attachEvent?e.attachEvent("on"+l,p):e["on"+l]=p}function R(e,l,p,M){if(!e)return;const b={capture:!0,...M};e.removeEventListener?e.removeEventListener(l,p,b):e.detachEvent?e.detachEvent("on"+l,p):e["on"+l]=null}function h(e){let l=e.clientHeight;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l+=(0,i.int)(p.borderTopWidth),l+=(0,i.int)(p.borderBottomWidth),l}function v(e){let l=e.clientWidth;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l+=(0,i.int)(p.borderLeftWidth),l+=(0,i.int)(p.borderRightWidth),l}function O(e){let l=e.clientHeight;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l-=(0,i.int)(p.paddingTop),l-=(0,i.int)(p.paddingBottom),l}function d(e){let l=e.clientWidth;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l-=(0,i.int)(p.paddingLeft),l-=(0,i.int)(p.paddingRight),l}function D(e,l,p){const b=l===l.ownerDocument.body?{left:0,top:0}:l.getBoundingClientRect(),C=(e.clientX+l.scrollLeft-b.left)/p,E=(e.clientY+l.scrollTop-b.top)/p;return{x:C,y:E}}function x(e,l){const p=S(e,l,"px");return{[(0,m.browserPrefixToKey)("transform",m.default)]:p}}function P(e,l){return S(e,l,"")}function S(e,l,p){let{x:M,y:b}=e,C=`translate(${M}${p},${b}${p})`;if(l){const E=`${typeof l.x=="string"?l.x:l.x+p}`,T=`${typeof l.y=="string"?l.y:l.y+p}`;C=`translate(${E}, ${T})`+C}return C}function g(e,l){return e.targetTouches&&(0,i.findInArray)(e.targetTouches,p=>l===p.identifier)||e.changedTouches&&(0,i.findInArray)(e.changedTouches,p=>l===p.identifier)}function s(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function t(e){if(!e)return;let l=e.getElementById("react-draggable-style-el");l||(l=e.createElement("style"),l.type="text/css",l.id="react-draggable-style-el",l.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
1
+ import{r as _,j as z,A as Z,b as He}from"./chunk-WWGJGFF6-De6i8FUT.js";import{u as ze}from"./useLastLogLine-AlhS7g5F.js";import{r as Ee}from"./index-BgDzgbQW.js";const Te=_.createContext({dimensions:{height:720,width:1200},updateDimensions:()=>{},iframeRef:{current:null},scale:1,updateScale:()=>{},maxWidth:1200,updateMaxWidth:()=>{}}),Ie=()=>{const i=_.useContext(Te);if(!i)throw new Error("useWebContainer must be used within a WebContainerProvider");return i},at=({children:i})=>{const[m,f]=_.useState({height:720,width:1200}),[c,w]=_.useState(1),[u,y]=_.useState(1200),R=_.useRef(null),h=_.useCallback(({height:d,width:D})=>{f(x=>({height:d??x.height,width:D??x.width}))},[]),v=_.useCallback(d=>{w(d)},[]),O=_.useCallback(d=>{y(d)},[]);return z.jsx(Te.Provider,{value:{dimensions:m,updateDimensions:h,iframeRef:R,scale:c,updateScale:v,maxWidth:u,updateMaxWidth:O},children:i})};var U={exports:{}},X={},$={exports:{}},ie={},se={exports:{}},le,fe;function Le(){if(fe)return le;fe=1;var i="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return le=i,le}var ue,de;function Fe(){if(de)return ue;de=1;var i=Le();function m(){}function f(){}return f.resetWarningCache=m,ue=function(){function c(y,R,h,v,O,d){if(d!==i){var D=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw D.name="Invariant Violation",D}}c.isRequired=c;function w(){return c}var u={array:c,bigint:c,bool:c,func:c,number:c,object:c,string:c,symbol:c,any:c,arrayOf:w,element:c,elementType:c,instanceOf:w,node:c,objectOf:w,oneOf:w,oneOfType:w,shape:w,exact:w,checkPropTypes:f,resetWarningCache:m};return u.PropTypes=u,u},ue}var pe;function re(){return pe||(pe=1,se.exports=Fe()()),se.exports}var Q={exports:{}},he;function Be(){if(he)return Q.exports;he=1;function i(f){var c,w,u="";if(typeof f=="string"||typeof f=="number")u+=f;else if(typeof f=="object")if(Array.isArray(f)){var y=f.length;for(c=0;c<y;c++)f[c]&&(w=i(f[c]))&&(u&&(u+=" "),u+=w)}else for(w in f)f[w]&&(u&&(u+=" "),u+=w);return u}function m(){for(var f,c,w=0,u="",y=arguments.length;w<y;w++)(f=arguments[w])&&(c=i(f))&&(u&&(u+=" "),u+=c);return u}return Q.exports=m,Q.exports.clsx=m,Q.exports}var N={},B={},ge;function ne(){if(ge)return B;ge=1,Object.defineProperty(B,"__esModule",{value:!0}),B.dontSetMe=w,B.findInArray=i,B.int=c,B.isFunction=m,B.isNum=f;function i(u,y){for(let R=0,h=u.length;R<h;R++)if(y.apply(y,[u[R],R,u]))return u[R]}function m(u){return typeof u=="function"||Object.prototype.toString.call(u)==="[object Function]"}function f(u){return typeof u=="number"&&!isNaN(u)}function c(u){return parseInt(u,10)}function w(u,y,R){if(u[y])return new Error(`Invalid prop ${y} passed to ${R} - do not set this, set it on the child.`)}return B}var Y={},me;function Ye(){if(me)return Y;me=1,Object.defineProperty(Y,"__esModule",{value:!0}),Y.browserPrefixToKey=f,Y.browserPrefixToStyle=c,Y.default=void 0,Y.getPrefix=m;const i=["Moz","Webkit","O","ms"];function m(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const y=window.document?.documentElement?.style;if(!y||u in y)return"";for(let R=0;R<i.length;R++)if(f(u,i[R])in y)return i[R];return""}function f(u,y){return y?`${y}${w(u)}`:u}function c(u,y){return y?`-${y.toLowerCase()}-${u}`:u}function w(u){let y="",R=!0;for(let h=0;h<u.length;h++)R?(y+=u[h].toUpperCase(),R=!1):u[h]==="-"?R=!0:y+=u[h];return y}return Y.default=m(),Y}var ve;function ce(){if(ve)return N;ve=1,Object.defineProperty(N,"__esModule",{value:!0}),N.addClassName=r,N.addEvent=y,N.addUserSelectStyles=t,N.createCSSTransform=x,N.createSVGTransform=P,N.getTouch=g,N.getTouchIdentifier=s,N.getTranslation=S,N.innerHeight=O,N.innerWidth=d,N.matchesSelector=w,N.matchesSelectorAndParentsTo=u,N.offsetXYFromParent=D,N.outerHeight=h,N.outerWidth=v,N.removeClassName=n,N.removeEvent=R,N.scheduleRemoveUserSelectStyles=a;var i=ne(),m=f(Ye());function f(e,l){if(typeof WeakMap=="function")var p=new WeakMap,M=new WeakMap;return(f=function(b,C){if(!C&&b&&b.__esModule)return b;var E,T,q={__proto__:null,default:b};if(b===null||typeof b!="object"&&typeof b!="function")return q;if(E=C?M:p){if(E.has(b))return E.get(b);E.set(b,q)}for(const j in b)j!=="default"&&{}.hasOwnProperty.call(b,j)&&((T=(E=Object.defineProperty)&&Object.getOwnPropertyDescriptor(b,j))&&(T.get||T.set)?E(q,j,T):q[j]=b[j]);return q})(e,l)}let c="";function w(e,l){return c||(c=(0,i.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(p){return(0,i.isFunction)(e[p])})),(0,i.isFunction)(e[c])?e[c](l):!1}function u(e,l,p){let M=e;do{if(w(M,l))return!0;if(M===p)return!1;M=M.parentNode}while(M);return!1}function y(e,l,p,M){if(!e)return;const b={capture:!0,...M};e.addEventListener?e.addEventListener(l,p,b):e.attachEvent?e.attachEvent("on"+l,p):e["on"+l]=p}function R(e,l,p,M){if(!e)return;const b={capture:!0,...M};e.removeEventListener?e.removeEventListener(l,p,b):e.detachEvent?e.detachEvent("on"+l,p):e["on"+l]=null}function h(e){let l=e.clientHeight;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l+=(0,i.int)(p.borderTopWidth),l+=(0,i.int)(p.borderBottomWidth),l}function v(e){let l=e.clientWidth;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l+=(0,i.int)(p.borderLeftWidth),l+=(0,i.int)(p.borderRightWidth),l}function O(e){let l=e.clientHeight;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l-=(0,i.int)(p.paddingTop),l-=(0,i.int)(p.paddingBottom),l}function d(e){let l=e.clientWidth;const p=e.ownerDocument.defaultView.getComputedStyle(e);return l-=(0,i.int)(p.paddingLeft),l-=(0,i.int)(p.paddingRight),l}function D(e,l,p){const b=l===l.ownerDocument.body?{left:0,top:0}:l.getBoundingClientRect(),C=(e.clientX+l.scrollLeft-b.left)/p,E=(e.clientY+l.scrollTop-b.top)/p;return{x:C,y:E}}function x(e,l){const p=S(e,l,"px");return{[(0,m.browserPrefixToKey)("transform",m.default)]:p}}function P(e,l){return S(e,l,"")}function S(e,l,p){let{x:M,y:b}=e,C=`translate(${M}${p},${b}${p})`;if(l){const E=`${typeof l.x=="string"?l.x:l.x+p}`,T=`${typeof l.y=="string"?l.y:l.y+p}`;C=`translate(${E}, ${T})`+C}return C}function g(e,l){return e.targetTouches&&(0,i.findInArray)(e.targetTouches,p=>l===p.identifier)||e.changedTouches&&(0,i.findInArray)(e.changedTouches,p=>l===p.identifier)}function s(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function t(e){if(!e)return;let l=e.getElementById("react-draggable-style-el");l||(l=e.createElement("style"),l.type="text/css",l.id="react-draggable-style-el",l.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
2
2
  `,l.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
3
- `,e.getElementsByTagName("head")[0].appendChild(l)),e.body&&r(e.body,"react-draggable-transparent-selection")}function a(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{o(e)}):o(e)}function o(e){if(e)try{if(e.body&&n(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const l=(e.defaultView||window).getSelection();l&&l.type!=="Caret"&&l.removeAllRanges()}}catch{}}function r(e,l){e.classList?e.classList.add(l):e.className.match(new RegExp(`(?:^|\\s)${l}(?!\\S)`))||(e.className+=` ${l}`)}function n(e,l){e.classList?e.classList.remove(l):e.className=e.className.replace(new RegExp(`(?:^|\\s)${l}(?!\\S)`,"g"),"")}return N}var L={},ye;function je(){if(ye)return L;ye=1,Object.defineProperty(L,"__esModule",{value:!0}),L.canDragX=w,L.canDragY=u,L.createCoreData=R,L.createDraggableData=h,L.getBoundPosition=f,L.getControlPosition=y,L.snapToGrid=c;var i=ne(),m=ce();function f(d,D,x){if(!d.props.bounds)return[D,x];let{bounds:P}=d.props;P=typeof P=="string"?P:v(P);const S=O(d);if(typeof P=="string"){const{ownerDocument:g}=S,s=g.defaultView;let t;if(P==="parent"?t=S.parentNode:t=S.getRootNode().querySelector(P),!(t instanceof s.HTMLElement))throw new Error('Bounds selector "'+P+'" could not find an element.');const a=t,o=s.getComputedStyle(S),r=s.getComputedStyle(a);P={left:-S.offsetLeft+(0,i.int)(r.paddingLeft)+(0,i.int)(o.marginLeft),top:-S.offsetTop+(0,i.int)(r.paddingTop)+(0,i.int)(o.marginTop),right:(0,m.innerWidth)(a)-(0,m.outerWidth)(S)-S.offsetLeft+(0,i.int)(r.paddingRight)-(0,i.int)(o.marginRight),bottom:(0,m.innerHeight)(a)-(0,m.outerHeight)(S)-S.offsetTop+(0,i.int)(r.paddingBottom)-(0,i.int)(o.marginBottom)}}return(0,i.isNum)(P.right)&&(D=Math.min(D,P.right)),(0,i.isNum)(P.bottom)&&(x=Math.min(x,P.bottom)),(0,i.isNum)(P.left)&&(D=Math.max(D,P.left)),(0,i.isNum)(P.top)&&(x=Math.max(x,P.top)),[D,x]}function c(d,D,x){const P=Math.round(D/d[0])*d[0],S=Math.round(x/d[1])*d[1];return[P,S]}function w(d){return d.props.axis==="both"||d.props.axis==="x"}function u(d){return d.props.axis==="both"||d.props.axis==="y"}function y(d,D,x){const P=typeof D=="number"?(0,m.getTouch)(d,D):null;if(typeof D=="number"&&!P)return null;const S=O(x),g=x.props.offsetParent||S.offsetParent||S.ownerDocument.body;return(0,m.offsetXYFromParent)(P||d,g,x.props.scale)}function R(d,D,x){const P=!(0,i.isNum)(d.lastX),S=O(d);return P?{node:S,deltaX:0,deltaY:0,lastX:D,lastY:x,x:D,y:x}:{node:S,deltaX:D-d.lastX,deltaY:x-d.lastY,lastX:d.lastX,lastY:d.lastY,x:D,y:x}}function h(d,D){const x=d.props.scale;return{node:D.node,x:d.state.x+D.deltaX/x,y:d.state.y+D.deltaY/x,deltaX:D.deltaX/x,deltaY:D.deltaY/x,lastX:d.state.x,lastY:d.state.y}}function v(d){return{left:d.left,top:d.top,right:d.right,bottom:d.bottom}}function O(d){const D=d.findDOMNode();if(!D)throw new Error("<DraggableCore>: Unmounted during event!");return D}return L}var V={},ee={},be;function Ne(){if(be)return ee;be=1,Object.defineProperty(ee,"__esModule",{value:!0}),ee.default=i;function i(){}return ee}var Se;function Ue(){if(Se)return V;Se=1,Object.defineProperty(V,"__esModule",{value:!0}),V.default=void 0;var i=h(Z()),m=R(re()),f=R(ze()),c=ce(),w=je(),u=ne(),y=R(Ne());function R(S){return S&&S.__esModule?S:{default:S}}function h(S,g){if(typeof WeakMap=="function")var s=new WeakMap,t=new WeakMap;return(h=function(a,o){if(!o&&a&&a.__esModule)return a;var r,n,e={__proto__:null,default:a};if(a===null||typeof a!="object"&&typeof a!="function")return e;if(r=o?t:s){if(r.has(a))return r.get(a);r.set(a,e)}for(const l in a)l!=="default"&&{}.hasOwnProperty.call(a,l)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(a,l))&&(n.get||n.set)?r(e,l,n):e[l]=a[l]);return e})(S,g)}function v(S,g,s){return(g=O(g))in S?Object.defineProperty(S,g,{value:s,enumerable:!0,configurable:!0,writable:!0}):S[g]=s,S}function O(S){var g=d(S,"string");return typeof g=="symbol"?g:g+""}function d(S,g){if(typeof S!="object"||!S)return S;var s=S[Symbol.toPrimitive];if(s!==void 0){var t=s.call(S,g);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(S)}const D={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let x=D.mouse,P=class extends i.Component{constructor(){super(...arguments),v(this,"dragging",!1),v(this,"lastX",NaN),v(this,"lastY",NaN),v(this,"touchIdentifier",null),v(this,"mounted",!1),v(this,"handleDragStart",g=>{if(this.props.onMouseDown(g),!this.props.allowAnyClick&&typeof g.button=="number"&&g.button!==0)return!1;const s=this.findDOMNode();if(!s||!s.ownerDocument||!s.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:t}=s;if(this.props.disabled||!(g.target instanceof t.defaultView.Node)||this.props.handle&&!(0,c.matchesSelectorAndParentsTo)(g.target,this.props.handle,s)||this.props.cancel&&(0,c.matchesSelectorAndParentsTo)(g.target,this.props.cancel,s))return;g.type==="touchstart"&&!this.props.allowMobileScroll&&g.preventDefault();const a=(0,c.getTouchIdentifier)(g);this.touchIdentifier=a;const o=(0,w.getControlPosition)(g,a,this);if(o==null)return;const{x:r,y:n}=o,e=(0,w.createCoreData)(this,r,n);(0,y.default)("DraggableCore: handleDragStart: %j",e),(0,y.default)("calling",this.props.onStart),!(this.props.onStart(g,e)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,c.addUserSelectStyles)(t),this.dragging=!0,this.lastX=r,this.lastY=n,(0,c.addEvent)(t,x.move,this.handleDrag),(0,c.addEvent)(t,x.stop,this.handleDragStop))}),v(this,"handleDrag",g=>{const s=(0,w.getControlPosition)(g,this.touchIdentifier,this);if(s==null)return;let{x:t,y:a}=s;if(Array.isArray(this.props.grid)){let n=t-this.lastX,e=a-this.lastY;if([n,e]=(0,w.snapToGrid)(this.props.grid,n,e),!n&&!e)return;t=this.lastX+n,a=this.lastY+e}const o=(0,w.createCoreData)(this,t,a);if((0,y.default)("DraggableCore: handleDrag: %j",o),this.props.onDrag(g,o)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const e=document.createEvent("MouseEvents");e.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=t,this.lastY=a}),v(this,"handleDragStop",g=>{if(!this.dragging)return;const s=(0,w.getControlPosition)(g,this.touchIdentifier,this);if(s==null)return;let{x:t,y:a}=s;if(Array.isArray(this.props.grid)){let e=t-this.lastX||0,l=a-this.lastY||0;[e,l]=(0,w.snapToGrid)(this.props.grid,e,l),t=this.lastX+e,a=this.lastY+l}const o=(0,w.createCoreData)(this,t,a);if(this.props.onStop(g,o)===!1||this.mounted===!1)return!1;const n=this.findDOMNode();n&&this.props.enableUserSelectHack&&(0,c.scheduleRemoveUserSelectStyles)(n.ownerDocument),(0,y.default)("DraggableCore: handleDragStop: %j",o),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,n&&((0,y.default)("DraggableCore: Removing handlers"),(0,c.removeEvent)(n.ownerDocument,x.move,this.handleDrag),(0,c.removeEvent)(n.ownerDocument,x.stop,this.handleDragStop))}),v(this,"onMouseDown",g=>(x=D.mouse,this.handleDragStart(g))),v(this,"onMouseUp",g=>(x=D.mouse,this.handleDragStop(g))),v(this,"onTouchStart",g=>(x=D.touch,this.handleDragStart(g))),v(this,"onTouchEnd",g=>(x=D.touch,this.handleDragStop(g)))}componentDidMount(){this.mounted=!0;const g=this.findDOMNode();g&&(0,c.addEvent)(g,D.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const g=this.findDOMNode();if(g){const{ownerDocument:s}=g;(0,c.removeEvent)(s,D.mouse.move,this.handleDrag),(0,c.removeEvent)(s,D.touch.move,this.handleDrag),(0,c.removeEvent)(s,D.mouse.stop,this.handleDragStop),(0,c.removeEvent)(s,D.touch.stop,this.handleDragStop),(0,c.removeEvent)(g,D.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,c.scheduleRemoveUserSelectStyles)(s)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:f.default.findDOMNode(this)}render(){return i.cloneElement(i.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return V.default=P,v(P,"displayName","DraggableCore"),v(P,"propTypes",{allowAnyClick:m.default.bool,allowMobileScroll:m.default.bool,children:m.default.node.isRequired,disabled:m.default.bool,enableUserSelectHack:m.default.bool,offsetParent:function(S,g){if(S[g]&&S[g].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:m.default.arrayOf(m.default.number),handle:m.default.string,cancel:m.default.string,nodeRef:m.default.object,onStart:m.default.func,onDrag:m.default.func,onStop:m.default.func,onMouseDown:m.default.func,scale:m.default.number,className:u.dontSetMe,style:u.dontSetMe,transform:u.dontSetMe}),v(P,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),V}var we;function Xe(){return we||(we=1,(function(i){Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"DraggableCore",{enumerable:!0,get:function(){return h.default}}),i.default=void 0;var m=d(Z()),f=O(re()),c=O(ze()),w=Be(),u=ce(),y=je(),R=ne(),h=O(Ue()),v=O(Ne());function O(s){return s&&s.__esModule?s:{default:s}}function d(s,t){if(typeof WeakMap=="function")var a=new WeakMap,o=new WeakMap;return(d=function(r,n){if(!n&&r&&r.__esModule)return r;var e,l,p={__proto__:null,default:r};if(r===null||typeof r!="object"&&typeof r!="function")return p;if(e=n?o:a){if(e.has(r))return e.get(r);e.set(r,p)}for(const M in r)M!=="default"&&{}.hasOwnProperty.call(r,M)&&((l=(e=Object.defineProperty)&&Object.getOwnPropertyDescriptor(r,M))&&(l.get||l.set)?e(p,M,l):p[M]=r[M]);return p})(s,t)}function D(){return D=Object.assign?Object.assign.bind():function(s){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var o in a)({}).hasOwnProperty.call(a,o)&&(s[o]=a[o])}return s},D.apply(null,arguments)}function x(s,t,a){return(t=P(t))in s?Object.defineProperty(s,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[t]=a,s}function P(s){var t=S(s,"string");return typeof t=="symbol"?t:t+""}function S(s,t){if(typeof s!="object"||!s)return s;var a=s[Symbol.toPrimitive];if(a!==void 0){var o=a.call(s,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(s)}class g extends m.Component{static getDerivedStateFromProps(t,a){let{position:o}=t,{prevPropsPosition:r}=a;return o&&(!r||o.x!==r.x||o.y!==r.y)?((0,v.default)("Draggable: getDerivedStateFromProps %j",{position:o,prevPropsPosition:r}),{x:o.x,y:o.y,prevPropsPosition:{...o}}):null}constructor(t){super(t),x(this,"onDragStart",(a,o)=>{if((0,v.default)("Draggable: onDragStart: %j",o),this.props.onStart(a,(0,y.createDraggableData)(this,o))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),x(this,"onDrag",(a,o)=>{if(!this.state.dragging)return!1;(0,v.default)("Draggable: onDrag: %j",o);const r=(0,y.createDraggableData)(this,o),n={x:r.x,y:r.y,slackX:0,slackY:0};if(this.props.bounds){const{x:l,y:p}=n;n.x+=this.state.slackX,n.y+=this.state.slackY;const[M,b]=(0,y.getBoundPosition)(this,n.x,n.y);n.x=M,n.y=b,n.slackX=this.state.slackX+(l-n.x),n.slackY=this.state.slackY+(p-n.y),r.x=n.x,r.y=n.y,r.deltaX=n.x-this.state.x,r.deltaY=n.y-this.state.y}if(this.props.onDrag(a,r)===!1)return!1;this.setState(n)}),x(this,"onDragStop",(a,o)=>{if(!this.state.dragging||this.props.onStop(a,(0,y.createDraggableData)(this,o))===!1)return!1;(0,v.default)("Draggable: onDragStop: %j",o);const n={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:l,y:p}=this.props.position;n.x=l,n.y=p}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},t.position&&!(t.onDrag||t.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??c.default.findDOMNode(this)}render(){const{axis:t,bounds:a,children:o,defaultPosition:r,defaultClassName:n,defaultClassNameDragging:e,defaultClassNameDragged:l,position:p,positionOffset:M,scale:b,...C}=this.props;let E={},T=null;const j=!!!p||this.state.dragging,H=p||r,I={x:(0,y.canDragX)(this)&&j?this.state.x:H.x,y:(0,y.canDragY)(this)&&j?this.state.y:H.y};this.state.isElementSVG?T=(0,u.createSVGTransform)(I,M):E=(0,u.createCSSTransform)(I,M);const W=(0,w.clsx)(o.props.className||"",n,{[e]:this.state.dragging,[l]:this.state.dragged});return m.createElement(h.default,D({},C,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),m.cloneElement(m.Children.only(o),{className:W,style:{...o.props.style,...E},transform:T}))}}i.default=g,x(g,"displayName","Draggable"),x(g,"propTypes",{...h.default.propTypes,axis:f.default.oneOf(["both","x","y","none"]),bounds:f.default.oneOfType([f.default.shape({left:f.default.number,right:f.default.number,top:f.default.number,bottom:f.default.number}),f.default.string,f.default.oneOf([!1])]),defaultClassName:f.default.string,defaultClassNameDragging:f.default.string,defaultClassNameDragged:f.default.string,defaultPosition:f.default.shape({x:f.default.number,y:f.default.number}),positionOffset:f.default.shape({x:f.default.oneOfType([f.default.number,f.default.string]),y:f.default.oneOfType([f.default.number,f.default.string])}),position:f.default.shape({x:f.default.number,y:f.default.number}),className:R.dontSetMe,style:R.dontSetMe,transform:R.dontSetMe}),x(g,"defaultProps",{...h.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(ie)),ie}var xe;function We(){if(xe)return $.exports;xe=1;const{default:i,DraggableCore:m}=Xe();return $.exports=i,$.exports.default=i,$.exports.DraggableCore=m,$.exports}var te={},De;function Ae(){if(De)return te;De=1,te.__esModule=!0,te.cloneElement=R;var i=m(Z());function m(h){return h&&h.__esModule?h:{default:h}}function f(h,v){var O=Object.keys(h);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(h);v&&(d=d.filter(function(D){return Object.getOwnPropertyDescriptor(h,D).enumerable})),O.push.apply(O,d)}return O}function c(h){for(var v=1;v<arguments.length;v++){var O=arguments[v]!=null?arguments[v]:{};v%2?f(Object(O),!0).forEach(function(d){w(h,d,O[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(O)):f(Object(O)).forEach(function(d){Object.defineProperty(h,d,Object.getOwnPropertyDescriptor(O,d))})}return h}function w(h,v,O){return v=u(v),v in h?Object.defineProperty(h,v,{value:O,enumerable:!0,configurable:!0,writable:!0}):h[v]=O,h}function u(h){var v=y(h,"string");return typeof v=="symbol"?v:String(v)}function y(h,v){if(typeof h!="object"||h===null)return h;var O=h[Symbol.toPrimitive];if(O!==void 0){var d=O.call(h,v);if(typeof d!="object")return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return(v==="string"?String:Number)(h)}function R(h,v){return v.style&&h.props.style&&(v.style=c(c({},h.props.style),v.style)),v.className&&h.props.className&&(v.className=h.props.className+" "+v.className),i.default.cloneElement(h,v)}return te}var G={},Re;function ke(){if(Re)return G;Re=1,G.__esModule=!0,G.resizableProps=void 0;var i=m(re());We();function m(c){return c&&c.__esModule?c:{default:c}}var f={axis:i.default.oneOf(["both","x","y","none"]),className:i.default.string,children:i.default.element.isRequired,draggableOpts:i.default.shape({allowAnyClick:i.default.bool,cancel:i.default.string,children:i.default.node,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:i.default.node,grid:i.default.arrayOf(i.default.number),handle:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number}),height:function(){for(var w=arguments.length,u=new Array(w),y=0;y<w;y++)u[y]=arguments[y];var R=u[0];if(R.axis==="both"||R.axis==="y"){var h;return(h=i.default.number).isRequired.apply(h,u)}return i.default.number.apply(i.default,u)},handle:i.default.oneOfType([i.default.node,i.default.func]),handleSize:i.default.arrayOf(i.default.number),lockAspectRatio:i.default.bool,maxConstraints:i.default.arrayOf(i.default.number),minConstraints:i.default.arrayOf(i.default.number),onResizeStop:i.default.func,onResizeStart:i.default.func,onResize:i.default.func,resizeHandles:i.default.arrayOf(i.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:i.default.number,width:function(){for(var w=arguments.length,u=new Array(w),y=0;y<w;y++)u[y]=arguments[y];var R=u[0];if(R.axis==="both"||R.axis==="x"){var h;return(h=i.default.number).isRequired.apply(h,u)}return i.default.number.apply(i.default,u)}};return G.resizableProps=f,G}var Pe;function qe(){if(Pe)return A;Pe=1,A.__esModule=!0,A.default=void 0;var i=y(Z()),m=We(),f=Ae(),c=ke(),w=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function u(s){if(typeof WeakMap!="function")return null;var t=new WeakMap,a=new WeakMap;return(u=function(r){return r?a:t})(s)}function y(s,t){if(s&&s.__esModule)return s;if(s===null||typeof s!="object"&&typeof s!="function")return{default:s};var a=u(t);if(a&&a.has(s))return a.get(s);var o={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in s)if(n!=="default"&&Object.prototype.hasOwnProperty.call(s,n)){var e=r?Object.getOwnPropertyDescriptor(s,n):null;e&&(e.get||e.set)?Object.defineProperty(o,n,e):o[n]=s[n]}return o.default=s,a&&a.set(s,o),o}function R(){return R=Object.assign?Object.assign.bind():function(s){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(s[o]=a[o])}return s},R.apply(this,arguments)}function h(s,t){if(s==null)return{};var a={},o=Object.keys(s),r,n;for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&(a[r]=s[r]);return a}function v(s,t){var a=Object.keys(s);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(s);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(s,r).enumerable})),a.push.apply(a,o)}return a}function O(s){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?v(Object(a),!0).forEach(function(o){d(s,o,a[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(a)):v(Object(a)).forEach(function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(a,o))})}return s}function d(s,t,a){return t=D(t),t in s?Object.defineProperty(s,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[t]=a,s}function D(s){var t=x(s,"string");return typeof t=="symbol"?t:String(t)}function x(s,t){if(typeof s!="object"||s===null)return s;var a=s[Symbol.toPrimitive];if(a!==void 0){var o=a.call(s,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(s)}function P(s,t){s.prototype=Object.create(t.prototype),s.prototype.constructor=s,S(s,t)}function S(s,t){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,r){return o.__proto__=r,o},S(s,t)}var g=(function(s){P(t,s);function t(){for(var o,r=arguments.length,n=new Array(r),e=0;e<r;e++)n[e]=arguments[e];return o=s.call.apply(s,[this].concat(n))||this,o.handleRefs={},o.lastHandleRect=null,o.slack=null,o}var a=t.prototype;return a.componentWillUnmount=function(){this.resetData()},a.resetData=function(){this.lastHandleRect=this.slack=null},a.runConstraints=function(r,n){var e=this.props,l=e.minConstraints,p=e.maxConstraints,M=e.lockAspectRatio;if(!l&&!p&&!M)return[r,n];if(M){var b=this.props.width/this.props.height,C=r-this.props.width,E=n-this.props.height;Math.abs(C)>Math.abs(E*b)?n=r/b:r=n*b}var T=r,q=n,j=this.slack||[0,0],H=j[0],I=j[1];return r+=H,n+=I,l&&(r=Math.max(l[0],r),n=Math.max(l[1],n)),p&&(r=Math.min(p[0],r),n=Math.min(p[1],n)),this.slack=[H+(T-r),I+(q-n)],[r,n]},a.resizeHandler=function(r,n){var e=this;return function(l,p){var M=p.node,b=p.deltaX,C=p.deltaY;r==="onResizeStart"&&e.resetData();var E=(e.props.axis==="both"||e.props.axis==="x")&&n!=="n"&&n!=="s",T=(e.props.axis==="both"||e.props.axis==="y")&&n!=="e"&&n!=="w";if(!(!E&&!T)){var q=n[0],j=n[n.length-1],H=M.getBoundingClientRect();if(e.lastHandleRect!=null){if(j==="w"){var I=H.left-e.lastHandleRect.left;b+=I}if(q==="n"){var W=H.top-e.lastHandleRect.top;C+=W}}e.lastHandleRect=H,j==="w"&&(b=-b),q==="n"&&(C=-C);var k=e.props.width+(E?b/e.props.transformScale:0),F=e.props.height+(T?C/e.props.transformScale:0),U=e.runConstraints(k,F);k=U[0],F=U[1];var ae=k!==e.props.width||F!==e.props.height,J=typeof e.props[r]=="function"?e.props[r]:null,oe=r==="onResize"&&!ae;J&&!oe&&(l.persist==null||l.persist(),J(l,{node:M,size:{width:k,height:F},handle:n})),r==="onResizeStop"&&e.resetData()}}},a.renderResizeHandle=function(r,n){var e=this.props.handle;if(!e)return i.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+r,ref:n});if(typeof e=="function")return e(r,n);var l=typeof e.type=="string",p=O({ref:n},l?{}:{handleAxis:r});return i.cloneElement(e,p)},a.render=function(){var r=this,n=this.props,e=n.children,l=n.className,p=n.draggableOpts;n.width,n.height,n.handle,n.handleSize,n.lockAspectRatio,n.axis,n.minConstraints,n.maxConstraints,n.onResize,n.onResizeStop,n.onResizeStart;var M=n.resizeHandles;n.transformScale;var b=h(n,w);return(0,f.cloneElement)(e,O(O({},b),{},{className:(l?l+" ":"")+"react-resizable",children:[].concat(e.props.children,M.map(function(C){var E,T=(E=r.handleRefs[C])!=null?E:r.handleRefs[C]=i.createRef();return i.createElement(m.DraggableCore,R({},p,{nodeRef:T,key:"resizableHandle-"+C,onStop:r.resizeHandler("onResizeStop",C),onStart:r.resizeHandler("onResizeStart",C),onDrag:r.resizeHandler("onResize",C)}),r.renderResizeHandle(C,T))}))}))},t})(i.Component);return A.default=g,g.propTypes=c.resizableProps,g.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},A}var K={},Oe;function $e(){if(Oe)return K;Oe=1,K.__esModule=!0,K.default=void 0;var i=R(Z()),m=u(re()),f=u(qe()),c=ke(),w=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function u(t){return t&&t.__esModule?t:{default:t}}function y(t){if(typeof WeakMap!="function")return null;var a=new WeakMap,o=new WeakMap;return(y=function(n){return n?o:a})(t)}function R(t,a){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var o=y(a);if(o&&o.has(t))return o.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in t)if(e!=="default"&&Object.prototype.hasOwnProperty.call(t,e)){var l=n?Object.getOwnPropertyDescriptor(t,e):null;l&&(l.get||l.set)?Object.defineProperty(r,e,l):r[e]=t[e]}return r.default=t,o&&o.set(t,r),r}function h(){return h=Object.assign?Object.assign.bind():function(t){for(var a=1;a<arguments.length;a++){var o=arguments[a];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(t[r]=o[r])}return t},h.apply(this,arguments)}function v(t,a){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),o.push.apply(o,r)}return o}function O(t){for(var a=1;a<arguments.length;a++){var o=arguments[a]!=null?arguments[a]:{};a%2?v(Object(o),!0).forEach(function(r){d(t,r,o[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r))})}return t}function d(t,a,o){return a=D(a),a in t?Object.defineProperty(t,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[a]=o,t}function D(t){var a=x(t,"string");return typeof a=="symbol"?a:String(a)}function x(t,a){if(typeof t!="object"||t===null)return t;var o=t[Symbol.toPrimitive];if(o!==void 0){var r=o.call(t,a);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function P(t,a){if(t==null)return{};var o={},r=Object.keys(t),n,e;for(e=0;e<r.length;e++)n=r[e],!(a.indexOf(n)>=0)&&(o[n]=t[n]);return o}function S(t,a){t.prototype=Object.create(a.prototype),t.prototype.constructor=t,g(t,a)}function g(t,a){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},g(t,a)}var s=(function(t){S(a,t);function a(){for(var r,n=arguments.length,e=new Array(n),l=0;l<n;l++)e[l]=arguments[l];return r=t.call.apply(t,[this].concat(e))||this,r.state={width:r.props.width,height:r.props.height,propsWidth:r.props.width,propsHeight:r.props.height},r.onResize=function(p,M){var b=M.size;r.props.onResize?(p.persist==null||p.persist(),r.setState(b,function(){return r.props.onResize&&r.props.onResize(p,M)})):r.setState(b)},r}a.getDerivedStateFromProps=function(n,e){return e.propsWidth!==n.width||e.propsHeight!==n.height?{width:n.width,height:n.height,propsWidth:n.width,propsHeight:n.height}:null};var o=a.prototype;return o.render=function(){var n=this.props,e=n.handle,l=n.handleSize;n.onResize;var p=n.onResizeStart,M=n.onResizeStop,b=n.draggableOpts,C=n.minConstraints,E=n.maxConstraints,T=n.lockAspectRatio,q=n.axis;n.width,n.height;var j=n.resizeHandles,H=n.style,I=n.transformScale,W=P(n,w);return i.createElement(f.default,{axis:q,draggableOpts:b,handle:e,handleSize:l,height:this.state.height,lockAspectRatio:T,maxConstraints:E,minConstraints:C,onResizeStart:p,onResize:this.onResize,onResizeStop:M,resizeHandles:j,transformScale:I,width:this.state.width},i.createElement("div",h({},W,{style:O(O({},H),{},{width:this.state.width+"px",height:this.state.height+"px"})})))},a})(i.Component);return K.default=s,s.propTypes=O(O({},c.resizableProps),{},{children:m.default.element}),K}var _e;function Ve(){return _e||(_e=1,X.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},X.exports.Resizable=qe().default,X.exports.ResizableBox=$e().default),X.exports}var Ge=Ve();const Ke=Ge.ResizableBox,Ze=typeof window<"u",Je=1200,Qe=720,Me=30,et=({id:i,scenarioName:m,iframeUrl:f,defaultWidth:c=1440,defaultHeight:w=900,onDataOverride:u,onIframeLoad:y,onScaleChange:R,onDimensionChange:h})=>{const[v,O]=_.useState(!1),[d,D]=_.useState(!1),[x,P]=_.useState(Je),[S,g]=_.useState(Qe),[s,t]=_.useState(null),[a,o]=_.useState(null),{dimensions:r,updateDimensions:n,iframeRef:e,updateScale:l,updateMaxWidth:p}=Ie(),M=_.useMemo(()=>Math.min(1,x/r.width),[x,r.width]),b=a!==null?a:M;_.useEffect(()=>{v||(l(b),R?.(b))},[b,l,R,v]),_.useEffect(()=>{p(x)},[x,p]);const C=_.useCallback(()=>{O(!0),o(M)},[M]),E=_.useCallback(()=>{O(!1),o(null)},[]),T=_.useCallback((W,k)=>{const F=a!==null?a:1,U=Math.round(k.size.width/F);n({width:U}),h?.(U,r.height)},[n,a,h,r.height]),q=_.useCallback(()=>{setTimeout(()=>{D(!0)},100),y&&y()},[y]);_.useEffect(()=>{const W=k=>{if(k.data.type==="codeyam-resize"){if(m&&k.data.name!==m||r.height===k.data.height||k.data.height===0)return;n({height:k.data.height})}};return window.addEventListener("message",W),()=>{window.removeEventListener("message",W)}},[e,m,c,r,n]),_.useEffect(()=>{d&&u&&u(e.current)},[d,u,e]),_.useEffect(()=>{if(!m)return;const W=setInterval(()=>{e?.current?.contentWindow?.postMessage({type:"codeyam-respond",name:m},"*")},1e3);return()=>clearInterval(W)},[m,e]),_.useEffect(()=>{const W=()=>{const k=document.getElementById("scenario-container");if(!k)return;const F=k.getBoundingClientRect(),U=k.clientWidth-Me*2,ae=window.innerHeight-F.top-Me*2,J=Math.max(ae,400),oe=window.innerHeight-F.top;P(U),g(J),t(oe)};return W(),window.addEventListener("resize",W),()=>window.removeEventListener("resize",W)},[]),_.useEffect(()=>{n({width:c,height:w})},[c,w,n]);const j=_.useMemo(()=>r.width*b,[r.width,b]),H=_.useMemo(()=>{const W=r.height,k=W*b;return W&&W!==720&&W!==900&&k<S?k:S},[r.height,S,b]),I=_.useCallback(()=>{window.history.back()},[]);return Ze?z.jsxs("div",{id:"scenario-container",className:"relative bg-gray-100 w-full flex items-center justify-center",style:s?{height:`${s}px`}:{},children:[v&&z.jsx("div",{className:"fixed inset-0 z-50 bg-transparent"}),z.jsx("style",{children:`
3
+ `,e.getElementsByTagName("head")[0].appendChild(l)),e.body&&r(e.body,"react-draggable-transparent-selection")}function a(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{o(e)}):o(e)}function o(e){if(e)try{if(e.body&&n(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const l=(e.defaultView||window).getSelection();l&&l.type!=="Caret"&&l.removeAllRanges()}}catch{}}function r(e,l){e.classList?e.classList.add(l):e.className.match(new RegExp(`(?:^|\\s)${l}(?!\\S)`))||(e.className+=` ${l}`)}function n(e,l){e.classList?e.classList.remove(l):e.className=e.className.replace(new RegExp(`(?:^|\\s)${l}(?!\\S)`,"g"),"")}return N}var L={},ye;function je(){if(ye)return L;ye=1,Object.defineProperty(L,"__esModule",{value:!0}),L.canDragX=w,L.canDragY=u,L.createCoreData=R,L.createDraggableData=h,L.getBoundPosition=f,L.getControlPosition=y,L.snapToGrid=c;var i=ne(),m=ce();function f(d,D,x){if(!d.props.bounds)return[D,x];let{bounds:P}=d.props;P=typeof P=="string"?P:v(P);const S=O(d);if(typeof P=="string"){const{ownerDocument:g}=S,s=g.defaultView;let t;if(P==="parent"?t=S.parentNode:t=S.getRootNode().querySelector(P),!(t instanceof s.HTMLElement))throw new Error('Bounds selector "'+P+'" could not find an element.');const a=t,o=s.getComputedStyle(S),r=s.getComputedStyle(a);P={left:-S.offsetLeft+(0,i.int)(r.paddingLeft)+(0,i.int)(o.marginLeft),top:-S.offsetTop+(0,i.int)(r.paddingTop)+(0,i.int)(o.marginTop),right:(0,m.innerWidth)(a)-(0,m.outerWidth)(S)-S.offsetLeft+(0,i.int)(r.paddingRight)-(0,i.int)(o.marginRight),bottom:(0,m.innerHeight)(a)-(0,m.outerHeight)(S)-S.offsetTop+(0,i.int)(r.paddingBottom)-(0,i.int)(o.marginBottom)}}return(0,i.isNum)(P.right)&&(D=Math.min(D,P.right)),(0,i.isNum)(P.bottom)&&(x=Math.min(x,P.bottom)),(0,i.isNum)(P.left)&&(D=Math.max(D,P.left)),(0,i.isNum)(P.top)&&(x=Math.max(x,P.top)),[D,x]}function c(d,D,x){const P=Math.round(D/d[0])*d[0],S=Math.round(x/d[1])*d[1];return[P,S]}function w(d){return d.props.axis==="both"||d.props.axis==="x"}function u(d){return d.props.axis==="both"||d.props.axis==="y"}function y(d,D,x){const P=typeof D=="number"?(0,m.getTouch)(d,D):null;if(typeof D=="number"&&!P)return null;const S=O(x),g=x.props.offsetParent||S.offsetParent||S.ownerDocument.body;return(0,m.offsetXYFromParent)(P||d,g,x.props.scale)}function R(d,D,x){const P=!(0,i.isNum)(d.lastX),S=O(d);return P?{node:S,deltaX:0,deltaY:0,lastX:D,lastY:x,x:D,y:x}:{node:S,deltaX:D-d.lastX,deltaY:x-d.lastY,lastX:d.lastX,lastY:d.lastY,x:D,y:x}}function h(d,D){const x=d.props.scale;return{node:D.node,x:d.state.x+D.deltaX/x,y:d.state.y+D.deltaY/x,deltaX:D.deltaX/x,deltaY:D.deltaY/x,lastX:d.state.x,lastY:d.state.y}}function v(d){return{left:d.left,top:d.top,right:d.right,bottom:d.bottom}}function O(d){const D=d.findDOMNode();if(!D)throw new Error("<DraggableCore>: Unmounted during event!");return D}return L}var V={},ee={},be;function Ne(){if(be)return ee;be=1,Object.defineProperty(ee,"__esModule",{value:!0}),ee.default=i;function i(){}return ee}var Se;function Ae(){if(Se)return V;Se=1,Object.defineProperty(V,"__esModule",{value:!0}),V.default=void 0;var i=h(Z()),m=R(re()),f=R(Ee()),c=ce(),w=je(),u=ne(),y=R(Ne());function R(S){return S&&S.__esModule?S:{default:S}}function h(S,g){if(typeof WeakMap=="function")var s=new WeakMap,t=new WeakMap;return(h=function(a,o){if(!o&&a&&a.__esModule)return a;var r,n,e={__proto__:null,default:a};if(a===null||typeof a!="object"&&typeof a!="function")return e;if(r=o?t:s){if(r.has(a))return r.get(a);r.set(a,e)}for(const l in a)l!=="default"&&{}.hasOwnProperty.call(a,l)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(a,l))&&(n.get||n.set)?r(e,l,n):e[l]=a[l]);return e})(S,g)}function v(S,g,s){return(g=O(g))in S?Object.defineProperty(S,g,{value:s,enumerable:!0,configurable:!0,writable:!0}):S[g]=s,S}function O(S){var g=d(S,"string");return typeof g=="symbol"?g:g+""}function d(S,g){if(typeof S!="object"||!S)return S;var s=S[Symbol.toPrimitive];if(s!==void 0){var t=s.call(S,g);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(S)}const D={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let x=D.mouse,P=class extends i.Component{constructor(){super(...arguments),v(this,"dragging",!1),v(this,"lastX",NaN),v(this,"lastY",NaN),v(this,"touchIdentifier",null),v(this,"mounted",!1),v(this,"handleDragStart",g=>{if(this.props.onMouseDown(g),!this.props.allowAnyClick&&typeof g.button=="number"&&g.button!==0)return!1;const s=this.findDOMNode();if(!s||!s.ownerDocument||!s.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:t}=s;if(this.props.disabled||!(g.target instanceof t.defaultView.Node)||this.props.handle&&!(0,c.matchesSelectorAndParentsTo)(g.target,this.props.handle,s)||this.props.cancel&&(0,c.matchesSelectorAndParentsTo)(g.target,this.props.cancel,s))return;g.type==="touchstart"&&!this.props.allowMobileScroll&&g.preventDefault();const a=(0,c.getTouchIdentifier)(g);this.touchIdentifier=a;const o=(0,w.getControlPosition)(g,a,this);if(o==null)return;const{x:r,y:n}=o,e=(0,w.createCoreData)(this,r,n);(0,y.default)("DraggableCore: handleDragStart: %j",e),(0,y.default)("calling",this.props.onStart),!(this.props.onStart(g,e)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,c.addUserSelectStyles)(t),this.dragging=!0,this.lastX=r,this.lastY=n,(0,c.addEvent)(t,x.move,this.handleDrag),(0,c.addEvent)(t,x.stop,this.handleDragStop))}),v(this,"handleDrag",g=>{const s=(0,w.getControlPosition)(g,this.touchIdentifier,this);if(s==null)return;let{x:t,y:a}=s;if(Array.isArray(this.props.grid)){let n=t-this.lastX,e=a-this.lastY;if([n,e]=(0,w.snapToGrid)(this.props.grid,n,e),!n&&!e)return;t=this.lastX+n,a=this.lastY+e}const o=(0,w.createCoreData)(this,t,a);if((0,y.default)("DraggableCore: handleDrag: %j",o),this.props.onDrag(g,o)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const e=document.createEvent("MouseEvents");e.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=t,this.lastY=a}),v(this,"handleDragStop",g=>{if(!this.dragging)return;const s=(0,w.getControlPosition)(g,this.touchIdentifier,this);if(s==null)return;let{x:t,y:a}=s;if(Array.isArray(this.props.grid)){let e=t-this.lastX||0,l=a-this.lastY||0;[e,l]=(0,w.snapToGrid)(this.props.grid,e,l),t=this.lastX+e,a=this.lastY+l}const o=(0,w.createCoreData)(this,t,a);if(this.props.onStop(g,o)===!1||this.mounted===!1)return!1;const n=this.findDOMNode();n&&this.props.enableUserSelectHack&&(0,c.scheduleRemoveUserSelectStyles)(n.ownerDocument),(0,y.default)("DraggableCore: handleDragStop: %j",o),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,n&&((0,y.default)("DraggableCore: Removing handlers"),(0,c.removeEvent)(n.ownerDocument,x.move,this.handleDrag),(0,c.removeEvent)(n.ownerDocument,x.stop,this.handleDragStop))}),v(this,"onMouseDown",g=>(x=D.mouse,this.handleDragStart(g))),v(this,"onMouseUp",g=>(x=D.mouse,this.handleDragStop(g))),v(this,"onTouchStart",g=>(x=D.touch,this.handleDragStart(g))),v(this,"onTouchEnd",g=>(x=D.touch,this.handleDragStop(g)))}componentDidMount(){this.mounted=!0;const g=this.findDOMNode();g&&(0,c.addEvent)(g,D.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const g=this.findDOMNode();if(g){const{ownerDocument:s}=g;(0,c.removeEvent)(s,D.mouse.move,this.handleDrag),(0,c.removeEvent)(s,D.touch.move,this.handleDrag),(0,c.removeEvent)(s,D.mouse.stop,this.handleDragStop),(0,c.removeEvent)(s,D.touch.stop,this.handleDragStop),(0,c.removeEvent)(g,D.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,c.scheduleRemoveUserSelectStyles)(s)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:f.default.findDOMNode(this)}render(){return i.cloneElement(i.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return V.default=P,v(P,"displayName","DraggableCore"),v(P,"propTypes",{allowAnyClick:m.default.bool,allowMobileScroll:m.default.bool,children:m.default.node.isRequired,disabled:m.default.bool,enableUserSelectHack:m.default.bool,offsetParent:function(S,g){if(S[g]&&S[g].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:m.default.arrayOf(m.default.number),handle:m.default.string,cancel:m.default.string,nodeRef:m.default.object,onStart:m.default.func,onDrag:m.default.func,onStop:m.default.func,onMouseDown:m.default.func,scale:m.default.number,className:u.dontSetMe,style:u.dontSetMe,transform:u.dontSetMe}),v(P,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),V}var we;function Ue(){return we||(we=1,(function(i){Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"DraggableCore",{enumerable:!0,get:function(){return h.default}}),i.default=void 0;var m=d(Z()),f=O(re()),c=O(Ee()),w=Be(),u=ce(),y=je(),R=ne(),h=O(Ae()),v=O(Ne());function O(s){return s&&s.__esModule?s:{default:s}}function d(s,t){if(typeof WeakMap=="function")var a=new WeakMap,o=new WeakMap;return(d=function(r,n){if(!n&&r&&r.__esModule)return r;var e,l,p={__proto__:null,default:r};if(r===null||typeof r!="object"&&typeof r!="function")return p;if(e=n?o:a){if(e.has(r))return e.get(r);e.set(r,p)}for(const M in r)M!=="default"&&{}.hasOwnProperty.call(r,M)&&((l=(e=Object.defineProperty)&&Object.getOwnPropertyDescriptor(r,M))&&(l.get||l.set)?e(p,M,l):p[M]=r[M]);return p})(s,t)}function D(){return D=Object.assign?Object.assign.bind():function(s){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var o in a)({}).hasOwnProperty.call(a,o)&&(s[o]=a[o])}return s},D.apply(null,arguments)}function x(s,t,a){return(t=P(t))in s?Object.defineProperty(s,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[t]=a,s}function P(s){var t=S(s,"string");return typeof t=="symbol"?t:t+""}function S(s,t){if(typeof s!="object"||!s)return s;var a=s[Symbol.toPrimitive];if(a!==void 0){var o=a.call(s,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(s)}class g extends m.Component{static getDerivedStateFromProps(t,a){let{position:o}=t,{prevPropsPosition:r}=a;return o&&(!r||o.x!==r.x||o.y!==r.y)?((0,v.default)("Draggable: getDerivedStateFromProps %j",{position:o,prevPropsPosition:r}),{x:o.x,y:o.y,prevPropsPosition:{...o}}):null}constructor(t){super(t),x(this,"onDragStart",(a,o)=>{if((0,v.default)("Draggable: onDragStart: %j",o),this.props.onStart(a,(0,y.createDraggableData)(this,o))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),x(this,"onDrag",(a,o)=>{if(!this.state.dragging)return!1;(0,v.default)("Draggable: onDrag: %j",o);const r=(0,y.createDraggableData)(this,o),n={x:r.x,y:r.y,slackX:0,slackY:0};if(this.props.bounds){const{x:l,y:p}=n;n.x+=this.state.slackX,n.y+=this.state.slackY;const[M,b]=(0,y.getBoundPosition)(this,n.x,n.y);n.x=M,n.y=b,n.slackX=this.state.slackX+(l-n.x),n.slackY=this.state.slackY+(p-n.y),r.x=n.x,r.y=n.y,r.deltaX=n.x-this.state.x,r.deltaY=n.y-this.state.y}if(this.props.onDrag(a,r)===!1)return!1;this.setState(n)}),x(this,"onDragStop",(a,o)=>{if(!this.state.dragging||this.props.onStop(a,(0,y.createDraggableData)(this,o))===!1)return!1;(0,v.default)("Draggable: onDragStop: %j",o);const n={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:l,y:p}=this.props.position;n.x=l,n.y=p}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},t.position&&!(t.onDrag||t.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??c.default.findDOMNode(this)}render(){const{axis:t,bounds:a,children:o,defaultPosition:r,defaultClassName:n,defaultClassNameDragging:e,defaultClassNameDragged:l,position:p,positionOffset:M,scale:b,...C}=this.props;let E={},T=null;const j=!!!p||this.state.dragging,H=p||r,I={x:(0,y.canDragX)(this)&&j?this.state.x:H.x,y:(0,y.canDragY)(this)&&j?this.state.y:H.y};this.state.isElementSVG?T=(0,u.createSVGTransform)(I,M):E=(0,u.createCSSTransform)(I,M);const W=(0,w.clsx)(o.props.className||"",n,{[e]:this.state.dragging,[l]:this.state.dragged});return m.createElement(h.default,D({},C,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),m.cloneElement(m.Children.only(o),{className:W,style:{...o.props.style,...E},transform:T}))}}i.default=g,x(g,"displayName","Draggable"),x(g,"propTypes",{...h.default.propTypes,axis:f.default.oneOf(["both","x","y","none"]),bounds:f.default.oneOfType([f.default.shape({left:f.default.number,right:f.default.number,top:f.default.number,bottom:f.default.number}),f.default.string,f.default.oneOf([!1])]),defaultClassName:f.default.string,defaultClassNameDragging:f.default.string,defaultClassNameDragged:f.default.string,defaultPosition:f.default.shape({x:f.default.number,y:f.default.number}),positionOffset:f.default.shape({x:f.default.oneOfType([f.default.number,f.default.string]),y:f.default.oneOfType([f.default.number,f.default.string])}),position:f.default.shape({x:f.default.number,y:f.default.number}),className:R.dontSetMe,style:R.dontSetMe,transform:R.dontSetMe}),x(g,"defaultProps",{...h.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(ie)),ie}var xe;function We(){if(xe)return $.exports;xe=1;const{default:i,DraggableCore:m}=Ue();return $.exports=i,$.exports.default=i,$.exports.DraggableCore=m,$.exports}var te={},De;function Xe(){if(De)return te;De=1,te.__esModule=!0,te.cloneElement=R;var i=m(Z());function m(h){return h&&h.__esModule?h:{default:h}}function f(h,v){var O=Object.keys(h);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(h);v&&(d=d.filter(function(D){return Object.getOwnPropertyDescriptor(h,D).enumerable})),O.push.apply(O,d)}return O}function c(h){for(var v=1;v<arguments.length;v++){var O=arguments[v]!=null?arguments[v]:{};v%2?f(Object(O),!0).forEach(function(d){w(h,d,O[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(O)):f(Object(O)).forEach(function(d){Object.defineProperty(h,d,Object.getOwnPropertyDescriptor(O,d))})}return h}function w(h,v,O){return v=u(v),v in h?Object.defineProperty(h,v,{value:O,enumerable:!0,configurable:!0,writable:!0}):h[v]=O,h}function u(h){var v=y(h,"string");return typeof v=="symbol"?v:String(v)}function y(h,v){if(typeof h!="object"||h===null)return h;var O=h[Symbol.toPrimitive];if(O!==void 0){var d=O.call(h,v);if(typeof d!="object")return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return(v==="string"?String:Number)(h)}function R(h,v){return v.style&&h.props.style&&(v.style=c(c({},h.props.style),v.style)),v.className&&h.props.className&&(v.className=h.props.className+" "+v.className),i.default.cloneElement(h,v)}return te}var G={},Re;function ke(){if(Re)return G;Re=1,G.__esModule=!0,G.resizableProps=void 0;var i=m(re());We();function m(c){return c&&c.__esModule?c:{default:c}}var f={axis:i.default.oneOf(["both","x","y","none"]),className:i.default.string,children:i.default.element.isRequired,draggableOpts:i.default.shape({allowAnyClick:i.default.bool,cancel:i.default.string,children:i.default.node,disabled:i.default.bool,enableUserSelectHack:i.default.bool,offsetParent:i.default.node,grid:i.default.arrayOf(i.default.number),handle:i.default.string,nodeRef:i.default.object,onStart:i.default.func,onDrag:i.default.func,onStop:i.default.func,onMouseDown:i.default.func,scale:i.default.number}),height:function(){for(var w=arguments.length,u=new Array(w),y=0;y<w;y++)u[y]=arguments[y];var R=u[0];if(R.axis==="both"||R.axis==="y"){var h;return(h=i.default.number).isRequired.apply(h,u)}return i.default.number.apply(i.default,u)},handle:i.default.oneOfType([i.default.node,i.default.func]),handleSize:i.default.arrayOf(i.default.number),lockAspectRatio:i.default.bool,maxConstraints:i.default.arrayOf(i.default.number),minConstraints:i.default.arrayOf(i.default.number),onResizeStop:i.default.func,onResizeStart:i.default.func,onResize:i.default.func,resizeHandles:i.default.arrayOf(i.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:i.default.number,width:function(){for(var w=arguments.length,u=new Array(w),y=0;y<w;y++)u[y]=arguments[y];var R=u[0];if(R.axis==="both"||R.axis==="x"){var h;return(h=i.default.number).isRequired.apply(h,u)}return i.default.number.apply(i.default,u)}};return G.resizableProps=f,G}var Pe;function qe(){if(Pe)return X;Pe=1,X.__esModule=!0,X.default=void 0;var i=y(Z()),m=We(),f=Xe(),c=ke(),w=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function u(s){if(typeof WeakMap!="function")return null;var t=new WeakMap,a=new WeakMap;return(u=function(r){return r?a:t})(s)}function y(s,t){if(s&&s.__esModule)return s;if(s===null||typeof s!="object"&&typeof s!="function")return{default:s};var a=u(t);if(a&&a.has(s))return a.get(s);var o={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in s)if(n!=="default"&&Object.prototype.hasOwnProperty.call(s,n)){var e=r?Object.getOwnPropertyDescriptor(s,n):null;e&&(e.get||e.set)?Object.defineProperty(o,n,e):o[n]=s[n]}return o.default=s,a&&a.set(s,o),o}function R(){return R=Object.assign?Object.assign.bind():function(s){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(s[o]=a[o])}return s},R.apply(this,arguments)}function h(s,t){if(s==null)return{};var a={},o=Object.keys(s),r,n;for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&(a[r]=s[r]);return a}function v(s,t){var a=Object.keys(s);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(s);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(s,r).enumerable})),a.push.apply(a,o)}return a}function O(s){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?v(Object(a),!0).forEach(function(o){d(s,o,a[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(a)):v(Object(a)).forEach(function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(a,o))})}return s}function d(s,t,a){return t=D(t),t in s?Object.defineProperty(s,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[t]=a,s}function D(s){var t=x(s,"string");return typeof t=="symbol"?t:String(t)}function x(s,t){if(typeof s!="object"||s===null)return s;var a=s[Symbol.toPrimitive];if(a!==void 0){var o=a.call(s,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(s)}function P(s,t){s.prototype=Object.create(t.prototype),s.prototype.constructor=s,S(s,t)}function S(s,t){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,r){return o.__proto__=r,o},S(s,t)}var g=(function(s){P(t,s);function t(){for(var o,r=arguments.length,n=new Array(r),e=0;e<r;e++)n[e]=arguments[e];return o=s.call.apply(s,[this].concat(n))||this,o.handleRefs={},o.lastHandleRect=null,o.slack=null,o}var a=t.prototype;return a.componentWillUnmount=function(){this.resetData()},a.resetData=function(){this.lastHandleRect=this.slack=null},a.runConstraints=function(r,n){var e=this.props,l=e.minConstraints,p=e.maxConstraints,M=e.lockAspectRatio;if(!l&&!p&&!M)return[r,n];if(M){var b=this.props.width/this.props.height,C=r-this.props.width,E=n-this.props.height;Math.abs(C)>Math.abs(E*b)?n=r/b:r=n*b}var T=r,q=n,j=this.slack||[0,0],H=j[0],I=j[1];return r+=H,n+=I,l&&(r=Math.max(l[0],r),n=Math.max(l[1],n)),p&&(r=Math.min(p[0],r),n=Math.min(p[1],n)),this.slack=[H+(T-r),I+(q-n)],[r,n]},a.resizeHandler=function(r,n){var e=this;return function(l,p){var M=p.node,b=p.deltaX,C=p.deltaY;r==="onResizeStart"&&e.resetData();var E=(e.props.axis==="both"||e.props.axis==="x")&&n!=="n"&&n!=="s",T=(e.props.axis==="both"||e.props.axis==="y")&&n!=="e"&&n!=="w";if(!(!E&&!T)){var q=n[0],j=n[n.length-1],H=M.getBoundingClientRect();if(e.lastHandleRect!=null){if(j==="w"){var I=H.left-e.lastHandleRect.left;b+=I}if(q==="n"){var W=H.top-e.lastHandleRect.top;C+=W}}e.lastHandleRect=H,j==="w"&&(b=-b),q==="n"&&(C=-C);var k=e.props.width+(E?b/e.props.transformScale:0),F=e.props.height+(T?C/e.props.transformScale:0),A=e.runConstraints(k,F);k=A[0],F=A[1];var ae=k!==e.props.width||F!==e.props.height,J=typeof e.props[r]=="function"?e.props[r]:null,oe=r==="onResize"&&!ae;J&&!oe&&(l.persist==null||l.persist(),J(l,{node:M,size:{width:k,height:F},handle:n})),r==="onResizeStop"&&e.resetData()}}},a.renderResizeHandle=function(r,n){var e=this.props.handle;if(!e)return i.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+r,ref:n});if(typeof e=="function")return e(r,n);var l=typeof e.type=="string",p=O({ref:n},l?{}:{handleAxis:r});return i.cloneElement(e,p)},a.render=function(){var r=this,n=this.props,e=n.children,l=n.className,p=n.draggableOpts;n.width,n.height,n.handle,n.handleSize,n.lockAspectRatio,n.axis,n.minConstraints,n.maxConstraints,n.onResize,n.onResizeStop,n.onResizeStart;var M=n.resizeHandles;n.transformScale;var b=h(n,w);return(0,f.cloneElement)(e,O(O({},b),{},{className:(l?l+" ":"")+"react-resizable",children:[].concat(e.props.children,M.map(function(C){var E,T=(E=r.handleRefs[C])!=null?E:r.handleRefs[C]=i.createRef();return i.createElement(m.DraggableCore,R({},p,{nodeRef:T,key:"resizableHandle-"+C,onStop:r.resizeHandler("onResizeStop",C),onStart:r.resizeHandler("onResizeStart",C),onDrag:r.resizeHandler("onResize",C)}),r.renderResizeHandle(C,T))}))}))},t})(i.Component);return X.default=g,g.propTypes=c.resizableProps,g.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},X}var K={},Oe;function $e(){if(Oe)return K;Oe=1,K.__esModule=!0,K.default=void 0;var i=R(Z()),m=u(re()),f=u(qe()),c=ke(),w=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function u(t){return t&&t.__esModule?t:{default:t}}function y(t){if(typeof WeakMap!="function")return null;var a=new WeakMap,o=new WeakMap;return(y=function(n){return n?o:a})(t)}function R(t,a){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var o=y(a);if(o&&o.has(t))return o.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in t)if(e!=="default"&&Object.prototype.hasOwnProperty.call(t,e)){var l=n?Object.getOwnPropertyDescriptor(t,e):null;l&&(l.get||l.set)?Object.defineProperty(r,e,l):r[e]=t[e]}return r.default=t,o&&o.set(t,r),r}function h(){return h=Object.assign?Object.assign.bind():function(t){for(var a=1;a<arguments.length;a++){var o=arguments[a];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(t[r]=o[r])}return t},h.apply(this,arguments)}function v(t,a){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),o.push.apply(o,r)}return o}function O(t){for(var a=1;a<arguments.length;a++){var o=arguments[a]!=null?arguments[a]:{};a%2?v(Object(o),!0).forEach(function(r){d(t,r,o[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r))})}return t}function d(t,a,o){return a=D(a),a in t?Object.defineProperty(t,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[a]=o,t}function D(t){var a=x(t,"string");return typeof a=="symbol"?a:String(a)}function x(t,a){if(typeof t!="object"||t===null)return t;var o=t[Symbol.toPrimitive];if(o!==void 0){var r=o.call(t,a);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function P(t,a){if(t==null)return{};var o={},r=Object.keys(t),n,e;for(e=0;e<r.length;e++)n=r[e],!(a.indexOf(n)>=0)&&(o[n]=t[n]);return o}function S(t,a){t.prototype=Object.create(a.prototype),t.prototype.constructor=t,g(t,a)}function g(t,a){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},g(t,a)}var s=(function(t){S(a,t);function a(){for(var r,n=arguments.length,e=new Array(n),l=0;l<n;l++)e[l]=arguments[l];return r=t.call.apply(t,[this].concat(e))||this,r.state={width:r.props.width,height:r.props.height,propsWidth:r.props.width,propsHeight:r.props.height},r.onResize=function(p,M){var b=M.size;r.props.onResize?(p.persist==null||p.persist(),r.setState(b,function(){return r.props.onResize&&r.props.onResize(p,M)})):r.setState(b)},r}a.getDerivedStateFromProps=function(n,e){return e.propsWidth!==n.width||e.propsHeight!==n.height?{width:n.width,height:n.height,propsWidth:n.width,propsHeight:n.height}:null};var o=a.prototype;return o.render=function(){var n=this.props,e=n.handle,l=n.handleSize;n.onResize;var p=n.onResizeStart,M=n.onResizeStop,b=n.draggableOpts,C=n.minConstraints,E=n.maxConstraints,T=n.lockAspectRatio,q=n.axis;n.width,n.height;var j=n.resizeHandles,H=n.style,I=n.transformScale,W=P(n,w);return i.createElement(f.default,{axis:q,draggableOpts:b,handle:e,handleSize:l,height:this.state.height,lockAspectRatio:T,maxConstraints:E,minConstraints:C,onResizeStart:p,onResize:this.onResize,onResizeStop:M,resizeHandles:j,transformScale:I,width:this.state.width},i.createElement("div",h({},W,{style:O(O({},H),{},{width:this.state.width+"px",height:this.state.height+"px"})})))},a})(i.Component);return K.default=s,s.propTypes=O(O({},c.resizableProps),{},{children:m.default.element}),K}var _e;function Ve(){return _e||(_e=1,U.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},U.exports.Resizable=qe().default,U.exports.ResizableBox=$e().default),U.exports}var Ge=Ve();const Ke=Ge.ResizableBox,Ze=typeof window<"u",Je=1200,Qe=720,Me=30,et=({id:i,scenarioName:m,iframeUrl:f,defaultWidth:c=1440,defaultHeight:w=900,onDataOverride:u,onIframeLoad:y,onScaleChange:R,onDimensionChange:h})=>{const[v,O]=_.useState(!1),[d,D]=_.useState(!1),[x,P]=_.useState(Je),[S,g]=_.useState(Qe),[s,t]=_.useState(null),[a,o]=_.useState(null),{dimensions:r,updateDimensions:n,iframeRef:e,updateScale:l,updateMaxWidth:p}=Ie(),M=_.useMemo(()=>Math.min(1,x/r.width),[x,r.width]),b=a!==null?a:M;_.useEffect(()=>{v||(l(b),R?.(b))},[b,l,R,v]),_.useEffect(()=>{p(x)},[x,p]);const C=_.useCallback(()=>{O(!0),o(M)},[M]),E=_.useCallback(()=>{O(!1),o(null)},[]),T=_.useCallback((W,k)=>{const F=a!==null?a:1,A=Math.round(k.size.width/F);n({width:A}),h?.(A,r.height)},[n,a,h,r.height]),q=_.useCallback(()=>{setTimeout(()=>{D(!0)},100),y&&y()},[y]);_.useEffect(()=>{const W=k=>{if(k.data.type==="codeyam-resize"){if(m&&k.data.name!==m||r.height===k.data.height||k.data.height===0)return;n({height:k.data.height})}};return window.addEventListener("message",W),()=>{window.removeEventListener("message",W)}},[e,m,c,r,n]),_.useEffect(()=>{d&&u&&u(e.current)},[d,u,e]),_.useEffect(()=>{if(!m)return;const W=setInterval(()=>{e?.current?.contentWindow?.postMessage({type:"codeyam-respond",name:m},"*")},1e3);return()=>clearInterval(W)},[m,e]),_.useEffect(()=>{const W=()=>{const k=document.getElementById("scenario-container");if(!k)return;const F=k.getBoundingClientRect(),A=k.clientWidth-Me*2,ae=window.innerHeight-F.top-Me*2,J=Math.max(ae,400),oe=window.innerHeight-F.top;P(A),g(J),t(oe)};return W(),window.addEventListener("resize",W),()=>window.removeEventListener("resize",W)},[]),_.useEffect(()=>{n({width:c,height:w})},[c,w,n]);const j=_.useMemo(()=>r.width*b,[r.width,b]),H=_.useMemo(()=>{const W=r.height,k=W*b;return W&&W!==720&&W!==900&&k<S?k:S},[r.height,S,b]),I=_.useCallback(()=>{window.history.back()},[]);return Ze?z.jsxs("div",{id:"scenario-container",className:"relative bg-gray-100 w-full flex items-center justify-center",style:s?{height:`${s}px`}:{},children:[v&&z.jsx("div",{className:"fixed inset-0 z-50 bg-transparent"}),z.jsx("style",{children:`
4
4
  .react-resizable-handle-e {
5
5
  display: flex !important;
6
6
  align-items: center !important;
@@ -23,4 +23,4 @@ import{r as _,j as z,F as Z,x as ze,b as He}from"./components-CAx5ONX_.js";impor
23
23
  .react-resizable:hover .react-resizable-handle-e {
24
24
  opacity: 0.4 !important;
25
25
  }
26
- `}),z.jsx(Ke,{width:j,height:H,minConstraints:[300,200],maxConstraints:[x,S],className:"relative bg-white rounded-lg shadow-md",resizeHandles:["e"],onResizeStart:C,onResizeStop:E,onResize:T,children:z.jsx("div",{className:"overflow-auto",style:{width:`${j}px`,height:`${H}px`},children:z.jsx("div",{style:{width:`${r.width}px`,height:`${r.height}px`,transform:`scale(${b})`,transformOrigin:"top left"},children:f?z.jsx("iframe",{ref:e,className:"w-full h-full rounded-lg",src:f,onLoad:q,sandbox:"allow-scripts allow-same-origin"}):z.jsxs("p",{className:"w-full h-full flex flex-col gap-3 items-center justify-center",children:[z.jsx("span",{className:"text-xl font-light",children:"Oops! Looks like this scenario is not available yet. Please check back later."}),z.jsx("span",{className:"text-blue-600 cursor-pointer",onClick:I,children:"Go back"})]})})})},`resizable-box-${i}`)]}):z.jsx("div",{className:"relative bg-gray-100 w-full h-full flex items-center justify-center",children:z.jsx("p",{className:"text-gray-500",children:"Loading interactive view..."})})};function Ce(i){const m=i.replace(/[^a-zA-Z0-9_]+/g,"_");return m.slice(0,1).toUpperCase()+m.slice(1)}function ot({analysisId:i,scenarioId:m,scenarioName:f,projectSlug:c,enabled:w=!0}){const u=He(),[y,R]=_.useState(null),[h,v]=_.useState(!1),[O,d]=_.useState(!1),[D,x]=_.useState(!1),P=_.useRef(!1),S=_.useRef(null),g=_.useRef(null),[s,t]=_.useState(0),[a,o]=_.useState(0),r=_.useRef(null),n=_.useRef(!1),{interactiveUrl:e,resetLogs:l}=Ee(c,w),p=_.useRef(m);_.useEffect(()=>{if(p.current!==m&&(p.current=m,S.current&&g.current&&f)){const b=Ce(g.current),C=Ce(f),E=S.current.replace(b,C);R(E),d(!0),x(!1),t(0),o(T=>T+1),n.current=!1,r.current&&(clearTimeout(r.current),r.current=null);return}},[m,f]),_.useEffect(()=>{if(e){const b=e+"?width=600px";S.current=b,f&&(g.current=f),R(b),v(!1),d(!0)}},[e]),_.useEffect(()=>{const b=C=>{C.data.type==="codeyam-resize"&&(n.current||(n.current=!0,r.current&&(clearTimeout(r.current),r.current=null),t(0),x(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{d(!1)})})))};return window.addEventListener("message",b),()=>window.removeEventListener("message",b)},[]);const M=()=>{n.current=!1,r.current&&clearTimeout(r.current);const b=500*Math.pow(2,s);r.current=setTimeout(()=>{n.current||(s<2?(t(C=>C+1),o(C=>C+1),d(!0)):(console.error("[useInteractiveMode] Interactive mode failed to load after 3 attempts - showing iframe anyway"),x(!0),d(!1)))},b)};return _.useEffect(()=>{w&&!P.current&&m&&i&&(P.current=!0,v(!0),x(!1),R(null),(async()=>{if(c)try{await fetch(`/api/logs/${c}`,{method:"DELETE"})}catch(C){console.error("[useInteractiveMode] Failed to clear log file:",C)}l(),u.submit({action:"start",analysisId:i,scenarioId:m},{method:"post",action:"/api/interactive-mode"})})())},[w,m,i,l,c]),_.useEffect(()=>{const b=i,C=()=>{if(P.current&&b){const T=new URLSearchParams({action:"stop",analysisId:b});console.log("[useInteractiveMode] Sending stop request via sendBeacon");const q=navigator.sendBeacon("/api/interactive-mode",T);console.log("[useInteractiveMode] sendBeacon result:",q),q||(console.log("[useInteractiveMode] sendBeacon failed, using fetch fallback"),fetch("/api/interactive-mode",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:T,keepalive:!0}).catch(j=>console.error("Failed to stop interactive mode:",j)))}},E=()=>{C()};return window.addEventListener("beforeunload",E),()=>{window.removeEventListener("beforeunload",E),console.log("[useInteractiveMode] Cleanup running:",{hasStarted:P.current,analysisId:b}),C()}},[i]),{interactiveServerUrl:y,isStarting:h,isLoading:O,showIframe:D,iframeKey:a,onIframeLoad:M}}function it({scenarioId:i,scenarioName:m,iframeUrl:f,isStarting:c,isLoading:w,showIframe:u,iframeKey:y,onIframeLoad:R,onScaleChange:h,onDimensionChange:v,projectSlug:O,defaultWidth:d=1440,defaultHeight:D=900,retryCount:x=0}){const{lastLine:P}=Ee(O??null,c||w);return f?z.jsxs("div",{className:"flex-1 min-h-0 relative",children:[z.jsx("div",{style:{opacity:u?1:0},children:z.jsx(et,{id:i,scenarioName:m,iframeUrl:f,defaultWidth:d,defaultHeight:D,onIframeLoad:R,onScaleChange:h,onDimensionChange:v},y)}),!u&&(c||w)&&z.jsx("div",{className:"absolute inset-0 flex items-center justify-center z-10",children:z.jsxs("div",{className:"flex flex-col items-center gap-3",children:[z.jsx("div",{className:"w-12 h-12",children:z.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:z.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),z.jsxs("div",{className:"text-center",children:[z.jsx("p",{className:"text-base font-semibold text-[#005c75] mb-1",children:c&&!f?"Starting interactive mode...":`Checking server stability. Attempt #${x+1}..`}),P&&!f&&z.jsx("p",{className:"text-xs font-mono text-[#666] leading-relaxed",children:P}),f&&x>0&&z.jsxs("p",{className:"text-xs font-mono text-[#666] leading-relaxed",children:["Waiting for application to initialize... (attempt"," ",x+1,")"]})]})]})})]}):z.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-12 text-center bg-[#f6f9fc]",children:z.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-2xl",children:[z.jsx("div",{className:"w-12 h-12 mb-2",children:z.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:z.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),z.jsx("h2",{className:"text-2xl font-semibold text-[#005c75] leading-[30px] m-0 font-['IBM_Plex_Sans']",children:w?"Interactive mode ready: launching...":"Starting Interactive Mode..."}),P&&z.jsx("p",{className:"text-xs font-mono text-[#005c75] text-center leading-5 m-0 max-w-xl font-['IBM_Plex_Mono']",children:P}),z.jsx("p",{className:"text-xs text-[#8e8e8e] text-center leading-5 m-0 font-['IBM_Plex_Mono']",children:w?"Loading the page in the background...":"Setting up the dev server for this scenario..."})]})})}export{it as I,nt as W,ot as a,Ie as u};
26
+ `}),z.jsx(Ke,{width:j,height:H,minConstraints:[300,200],maxConstraints:[x,S],className:"relative bg-white rounded-lg shadow-md",resizeHandles:["e"],onResizeStart:C,onResizeStop:E,onResize:T,children:z.jsx("div",{className:"overflow-auto",style:{width:`${j}px`,height:`${H}px`},children:z.jsx("div",{style:{width:`${r.width}px`,height:`${r.height}px`,transform:`scale(${b})`,transformOrigin:"top left"},children:f?z.jsx("iframe",{ref:e,className:"w-full h-full rounded-lg",src:f,onLoad:q,sandbox:"allow-scripts allow-same-origin"}):z.jsxs("p",{className:"w-full h-full flex flex-col gap-3 items-center justify-center",children:[z.jsx("span",{className:"text-xl font-light",children:"Oops! Looks like this scenario is not available yet. Please check back later."}),z.jsx("span",{className:"text-blue-600 cursor-pointer",onClick:I,children:"Go back"})]})})})},`resizable-box-${i}`)]}):z.jsx("div",{className:"relative bg-gray-100 w-full h-full flex items-center justify-center",children:z.jsx("p",{className:"text-gray-500",children:"Loading interactive view..."})})};function Ce(i){const m=i.replace(/[^a-zA-Z0-9_]+/g,"_");return m.slice(0,1).toUpperCase()+m.slice(1)}function it({analysisId:i,scenarioId:m,scenarioName:f,projectSlug:c,enabled:w=!0}){const u=He(),[y,R]=_.useState(null),[h,v]=_.useState(!1),[O,d]=_.useState(!1),[D,x]=_.useState(!1),P=_.useRef(!1),S=_.useRef(null),g=_.useRef(null),[s,t]=_.useState(0),[a,o]=_.useState(0),r=_.useRef(null),n=_.useRef(!1),{interactiveUrl:e,resetLogs:l}=ze(c,w),p=_.useRef(m);_.useEffect(()=>{if(p.current!==m&&(p.current=m,S.current&&g.current&&f)){const b=Ce(g.current),C=Ce(f),E=S.current.replace(b,C);R(E),d(!0),x(!1),t(0),o(T=>T+1),n.current=!1,r.current&&(clearTimeout(r.current),r.current=null);return}},[m,f]),_.useEffect(()=>{if(e){const b=e+"?width=600px";S.current=b,f&&(g.current=f),R(b),v(!1),d(!0)}},[e]),_.useEffect(()=>{const b=C=>{C.data.type==="codeyam-resize"&&(n.current||(n.current=!0,r.current&&(clearTimeout(r.current),r.current=null),t(0),x(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{d(!1)})})))};return window.addEventListener("message",b),()=>window.removeEventListener("message",b)},[]);const M=()=>{n.current=!1,r.current&&clearTimeout(r.current);const b=500*Math.pow(2,s);r.current=setTimeout(()=>{n.current||(s<2?(t(C=>C+1),o(C=>C+1),d(!0)):(console.error("[useInteractiveMode] Interactive mode failed to load after 3 attempts - showing iframe anyway"),x(!0),d(!1)))},b)};return _.useEffect(()=>{w&&!P.current&&m&&i&&(P.current=!0,v(!0),x(!1),R(null),(async()=>{if(c)try{await fetch(`/api/logs/${c}`,{method:"DELETE"})}catch(C){console.error("[useInteractiveMode] Failed to clear log file:",C)}l(),u.submit({action:"start",analysisId:i,scenarioId:m},{method:"post",action:"/api/interactive-mode"})})())},[w,m,i,l,c]),_.useEffect(()=>{const b=i,C=()=>{if(P.current&&b){const T=new URLSearchParams({action:"stop",analysisId:b});console.log("[useInteractiveMode] Sending stop request via sendBeacon");const q=navigator.sendBeacon("/api/interactive-mode",T);console.log("[useInteractiveMode] sendBeacon result:",q),q||(console.log("[useInteractiveMode] sendBeacon failed, using fetch fallback"),fetch("/api/interactive-mode",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:T,keepalive:!0}).catch(j=>console.error("Failed to stop interactive mode:",j)))}},E=()=>{C()};return window.addEventListener("beforeunload",E),()=>{window.removeEventListener("beforeunload",E),console.log("[useInteractiveMode] Cleanup running:",{hasStarted:P.current,analysisId:b}),C()}},[i]),{interactiveServerUrl:y,isStarting:h,isLoading:O,showIframe:D,iframeKey:a,onIframeLoad:M}}function st({scenarioId:i,scenarioName:m,iframeUrl:f,isStarting:c,isLoading:w,showIframe:u,iframeKey:y,onIframeLoad:R,onScaleChange:h,onDimensionChange:v,projectSlug:O,defaultWidth:d=1440,defaultHeight:D=900,retryCount:x=0}){const{lastLine:P}=ze(O??null,c||w);return f?z.jsxs("div",{className:"flex-1 min-h-0 relative",children:[z.jsx("div",{style:{opacity:u?1:0},children:z.jsx(et,{id:i,scenarioName:m,iframeUrl:f,defaultWidth:d,defaultHeight:D,onIframeLoad:R,onScaleChange:h,onDimensionChange:v},y)}),!u&&(c||w)&&z.jsx("div",{className:"absolute inset-0 flex items-center justify-center z-10",children:z.jsxs("div",{className:"flex flex-col items-center gap-3",children:[z.jsx("div",{className:"w-12 h-12",children:z.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:z.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),z.jsxs("div",{className:"text-center",children:[z.jsx("p",{className:"text-base font-semibold text-[#005c75] mb-1",children:c&&!f?"Starting interactive mode...":`Checking server stability. Attempt #${x+1}..`}),P&&!f&&z.jsx("p",{className:"text-xs font-mono text-[#666] leading-relaxed",children:P}),f&&x>0&&z.jsxs("p",{className:"text-xs font-mono text-[#666] leading-relaxed",children:["Waiting for application to initialize... (attempt"," ",x+1,")"]})]})]})})]}):z.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-12 text-center bg-[#f6f9fc]",children:z.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-2xl",children:[z.jsx("div",{className:"w-12 h-12 mb-2",children:z.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:z.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),z.jsx("h2",{className:"text-2xl font-semibold text-[#005c75] leading-[30px] m-0 font-['IBM_Plex_Sans']",children:w?"Interactive mode ready: launching...":"Starting Interactive Mode..."}),P&&z.jsx("p",{className:"text-xs font-mono text-[#005c75] text-center leading-5 m-0 max-w-xl font-['IBM_Plex_Mono']",children:P}),z.jsx("p",{className:"text-xs text-[#8e8e8e] text-center leading-5 m-0 font-['IBM_Plex_Mono']",children:w?"Loading the page in the background...":"Setting up the dev server for this scenario..."})]})})}export{st as I,at as W,it as a,Ie as u};
@@ -0,0 +1,3 @@
1
+ import{j as l,L as D}from"./chunk-WWGJGFF6-De6i8FUT.js";function F(t,d,x,y,E){const e=d?.scenarios?.find(r=>r.name===t.name),u=!!e?.startedAt,n=!!e?.screenshotStartedAt,k=!!e?.screenshotFinishedAt,p=!!e?.finishedAt,v=1800*1e3,g=n&&!k&&e?.screenshotStartedAt&&Date.now()-new Date(e.screenshotStartedAt).getTime()>v,o=!!t.metadata?.screenshotPaths?.[0]||!!t.metadata?.executionResult,s=n&&!k,c=e?.error,S=t.metadata?.executionResult?.error,a=[];if(d?.errors&&d.errors.length>0)for(const r of d.errors)a.push({source:`${r.phase} phase`,message:r.message});if(d?.steps)for(const r of d.steps)r.error&&a.push({source:r.name,message:r.error});const w=!o&&!c&&!S&&a.length>0,i=!!(c||S||g||w),j=g?"Capture timed out after 30 minutes":(typeof c=="string"?c:null)||S?.message||(w?`Analysis error: ${a[0].message}`:null),L=g?"The capture process has been running for more than 30 minutes and likely got stuck. Consider re-running the analysis.":e?.errorStack||S?.stack||null,A=(y&&E?E.jobs.some(r=>r.entityShas?.includes(y)||r.type==="analysis"&&r.entityShas&&r.entityShas.length===0)||E.currentlyExecuting?.entityShas?.includes(y):!1)&&!u&&!i||!!e?.analyzing&&!u&&!i,C=u&&!n&&!p&&!i,M=(A||C||s)&&!i,h=(A||C)&&x===!1&&!o;let m;h?m="crashed":i?m="error":o||p?m="completed":s?m="capturing":C?m="starting":A?m="queued":m="pending";let b="📷",f="pending",T=!1,$=`Not captured: ${t.name}`;const R="border-gray-300",z=i||h?"bg-red-50":"bg-white";return i||h?(b="⚠️",f="error",$=`Error: ${h?"Analysis process crashed":j||"Unknown error"}`):A?(b="⋯",f="queued",$=`Queued: ${t.name}`):C?(b="⋯",f="starting",T=!0,$=`Starting server for ${t.name}...`):s&&!i?(b="⋯",f="capturing",T=!0,$=`Capturing ${t.name}...`):o&&(b="✓",f="completed",$=t.name),{hasError:i||h,errorMessage:h?"Analysis process crashed":j,errorStack:h?"Process terminated unexpectedly before completing analysis":L,isCapturing:s,isCaptured:o,hasCrashed:h,isAnalyzing:M,isQueued:A,isServerStarting:C,status:m,icon:b,iconType:f,shouldSpin:T,title:$,borderColor:R,bgColor:z}}function P({scenario:t,entitySha:d,size:x="medium",showBorder:y=!0,isOutdated:E=!1}){const e=F(t,void 0,void 0,d,void 0),u=t.metadata?.executionResult,n=!!u,p=(t.metadata?.data?.argumentsData||[]).length,v=u?.returnValue!==void 0&&u?.returnValue!==null,g=u?.sideEffects?.consoleOutput?.length||0,o=u?.timing?.duration||0;let s=0;p>0&&s++,p>2&&s++,v&&s++,g>0&&s++,s=Math.min(3,s);const c=x==="small"?{width:"w-[50px]",height:"h-[38px]",iconSize:"text-base",textSize:"text-[8px]"}:{width:"w-20",height:"h-15",iconSize:"text-xl",textSize:"text-[10px]"},a=e.hasError?{border:"border-red-400",bg:"bg-red-50",icon:"text-red-600",badge:"bg-red-100 text-red-700"}:n?E?{border:"border-amber-500",bg:"bg-amber-50",icon:"text-amber-700",badge:"bg-amber-100 text-amber-700"}:{border:"border-blue-400",bg:"bg-blue-50",icon:"text-blue-600",badge:"bg-blue-100 text-blue-700"}:{border:"border-gray-300 border-dashed",bg:"bg-gray-50",icon:"text-gray-400",badge:"bg-gray-100 text-gray-600"},w=y?`border-2 ${a.border}`:"",i=Array.from({length:3},(L,N)=>l.jsx("div",{className:`w-1 h-1 rounded-full ${N<s?a.icon.replace("text-","bg-"):"bg-gray-300"}`},N)),j=e.hasError?`Error: ${e.errorMessage||"Unknown error"}`:n?`${t.name}
2
+ ${p} args → ${v?"value":"void"}${g>0?` (${g} logs)`:""}
3
+ ${o}ms`:`Not executed: ${t.name}`;return l.jsxs(D,{to:`/entity/${d}/scenarios/${t.id}`,className:`relative ${c.width} ${c.height} ${w} rounded ${a.bg} flex flex-col items-center justify-center gap-0.5 cursor-pointer transition-all hover:scale-105 hover:shadow-md`,title:j,children:[l.jsx("div",{className:`${a.icon} ${c.iconSize} font-mono font-bold`,children:e.hasError?"⚠":n?"ƒ":"○"}),n&&!e.hasError&&l.jsxs("div",{className:`flex items-center gap-0.5 ${c.textSize} ${a.badge} px-1 rounded`,children:[l.jsx("span",{children:p}),l.jsx("span",{children:"→"}),l.jsx("span",{children:v?"✓":"∅"})]}),n&&!e.hasError&&x==="medium"&&l.jsx("div",{className:"flex gap-0.5 mt-0.5",children:i}),n&&!e.hasError&&o>100&&x==="medium"&&l.jsx("div",{className:`absolute top-0.5 right-0.5 ${c.textSize} ${a.badge} px-1 rounded`,children:o>1e3?`${Math.round(o/1e3)}s`:`${o}ms`}),n&&!e.hasError&&g>0&&x==="medium"&&l.jsxs("div",{className:"absolute bottom-0.5 left-0.5 text-[8px] text-gray-500",children:["📝",g]})]})}export{P as L,F as g};
@@ -1,3 +1,3 @@
1
- import{r,j as e}from"./components-CAx5ONX_.js";function w({projectSlug:i,onClose:l}){const[p,o]=r.useState("Loading logs..."),[x,m]=r.useState(!0),[u,g]=r.useState(!0),[n,f]=r.useState("all"),a=r.useRef(null);return r.useEffect(()=>{const t=async()=>{try{const s=await fetch(`/api/logs/${i}`);if(s.ok){const d=await s.text();if(n==="all")o(d);else{const b=d.trim().split(`
1
+ import{r,j as e}from"./chunk-WWGJGFF6-De6i8FUT.js";function w({projectSlug:i,onClose:l}){const[p,o]=r.useState("Loading logs..."),[x,m]=r.useState(!0),[u,g]=r.useState(!0),[n,f]=r.useState("all"),a=r.useRef(null);return r.useEffect(()=>{const t=async()=>{try{const s=await fetch(`/api/logs/${i}`);if(s.ok){const d=await s.text();if(n==="all")o(d);else{const b=d.trim().split(`
2
2
  `).filter(c=>{if(c.length===0)return!1;const h=c.match(/^.*CodeYam Log Level (\d+):/);return!!h&&Number(h[1])<=n});o(b.map(c=>c.replace(/^.*CodeYam Log Level \d+:\s*/,"")).join(`
3
3
  `))}u&&a.current&&setTimeout(()=>{a.current?.scrollTo({top:a.current.scrollHeight,behavior:"smooth"})},100)}else o(`Error: ${s.status} - ${await s.text()}`)}catch(s){o(`Error fetching logs: ${s.message}`)}};if(t().catch(()=>{}),x){const s=setInterval(()=>{t().catch(()=>{})},2e3);return()=>clearInterval(s)}},[i,x,u,n]),r.useEffect(()=>{const t=s=>{s.key==="Escape"&&l()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[l]),e.jsx("div",{className:"fixed inset-0 bg-black/70 flex items-center justify-center z-9999 p-5",onClick:l,children:e.jsxs("div",{className:"bg-[#1e1e1e] rounded-lg shadow-2xl flex flex-col max-w-[1200px] w-full max-h-[90vh] overflow-hidden",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"flex justify-between items-center px-5 py-4 border-b border-[#333] bg-[#252525]",children:[e.jsxs("h3",{className:"m-0 text-lg font-semibold text-white",children:["Analysis Logs - ",i]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm text-[#ccc] select-none",children:[e.jsx("span",{children:"Log Level:"}),e.jsxs("select",{value:n,onChange:t=>f(t.target.value==="all"?"all":Number(t.target.value)),className:"bg-[#333] text-white border border-[#555] rounded px-2 py-1 text-sm cursor-pointer outline-none transition-all hover:border-[#777] hover:bg-[#3a3a3a] focus:border-blue-600",children:[e.jsx("option",{value:"1",children:"1"}),e.jsx("option",{value:"2",children:"2"}),e.jsx("option",{value:"3",children:"3"}),e.jsx("option",{value:"4",children:"4"}),e.jsx("option",{value:"all",children:"All"})]})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:x,onChange:t=>m(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-refresh"})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-[#ccc] cursor-pointer select-none group",children:[e.jsx("input",{type:"checkbox",checked:u,onChange:t=>g(t.target.checked),className:"cursor-pointer"}),e.jsx("span",{className:"group-hover:text-white",children:"Auto-scroll"})]}),e.jsx("button",{onClick:l,className:"bg-transparent border-none text-[#999] text-2xl cursor-pointer p-0 w-8 h-8 flex items-center justify-center rounded transition-all hover:bg-[#333] hover:text-white",title:"Close (Esc)",children:"✕"})]})]}),e.jsx("pre",{className:"flex-1 m-0 px-5 py-4 overflow-auto font-mono text-[13px] leading-relaxed text-[#d4d4d4] bg-[#1e1e1e] whitespace-pre-wrap wrap-break-word scrollbar-thin scrollbar-thumb-[#424242] scrollbar-track-[#1e1e1e] hover:scrollbar-thumb-[#4f4f4f]",ref:a,children:p})]})})}export{w as L};
@@ -0,0 +1 @@
1
+ import{r as t,j as e}from"./chunk-WWGJGFF6-De6i8FUT.js";function j({screenshotPath:a,cacheBuster:l,alt:x,className:f="",title:o}){const[n,s]=t.useState("loading"),[i,r]=t.useState(!1),c=t.useRef(null),d=l?`/api/screenshot/${a}?cb=${l}`:`/api/screenshot/${a}`,m=()=>{s("success"),r(!0)},g=()=>{s("error"),r(!1)};return t.useEffect(()=>{s("loading"),r(!1);const u=c.current;u?.complete&&(u.naturalHeight!==0?(s("success"),r(!0)):(s("error"),r(!1)))},[d]),a?e.jsxs("div",{className:"relative w-full h-full flex items-center justify-center",title:o,children:[e.jsx("img",{ref:c,src:d,alt:x,onLoad:m,onError:g,className:f||"max-w-full max-h-full object-contain",style:{visibility:i?"visible":"hidden",position:i?"relative":"absolute"}}),n==="loading"&&e.jsx("div",{className:"absolute inset-0 bg-gray-100 animate-pulse rounded flex items-center justify-center",children:e.jsx("svg",{className:"w-8 h-8 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})}),n==="error"&&e.jsxs("div",{className:"absolute inset-0 border-2 border-dashed border-gray-300 bg-gray-50 rounded flex flex-col items-center justify-center text-xs gap-1",children:[e.jsx("span",{className:"text-2xl text-gray-400",children:"📷"}),e.jsx("span",{className:"text-gray-400 whitespace-nowrap",children:"No Screenshot"})]})]}):e.jsx("div",{className:"w-full h-full border-2 border-dashed border-gray-300 bg-gray-50 rounded flex flex-col items-center justify-center text-xs gap-1",title:o,children:e.jsx("span",{className:"text-2xl text-gray-400",children:"📷"})})}export{j as S};
@@ -0,0 +1,6 @@
1
+ import{j as e,L as u}from"./chunk-WWGJGFF6-De6i8FUT.js";import{S as j}from"./SafeScreenshot-Bual6h18.js";import{L as S,g as b}from"./LibraryFunctionPreview-BYVx9KFp.js";import{c as C}from"./file-text-fb2mx25c.js";import{C as w}from"./circle-alert-0WShkwuc.js";const $=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],v=C("circle-check-big",$);function A({scenario:a,entity:i,analysisStatus:d,queueState:h,processIsRunning:x,size:t="medium",cacheBuster:p,className:f="",viewMode:o}){if(i.entityType==="library")return e.jsx(S,{scenario:a,entitySha:i.sha,size:t==="small"?"small":"medium"});const s=b(a,d,x,i.sha,h),l=t==="small"?{containerClass:"w-16 h-12",iconSize:"text-xl"}:t==="large"?{containerClass:"w-full h-[67px]",iconSize:"text-2xl"}:{containerClass:"w-20 h-15",iconSize:"text-2xl"},c=`relative ${l.containerClass} ${f}`,m=()=>{const n=`/entity/${i.sha}/scenarios/${a.id}`;return o?`${n}/${o}`:n};if(s.isCaptured){const n=a.metadata?.screenshotPaths?.[0];return e.jsx(u,{to:m(),className:`${c} overflow-hidden bg-gray-50 cursor-pointer transition-all flex items-center justify-center hover:scale-105 hover:shadow-md`,children:e.jsx(j,{screenshotPath:n,cacheBuster:p,alt:a.name,title:a.name,className:"max-w-full max-h-full object-contain object-center"})})}const y=()=>{const n={size:t==="small"?16:t==="large"?24:20,strokeWidth:2},g=t==="small"?"text-base":t==="large"?"text-2xl":"text-xl",r=e.jsxs(e.Fragment,{children:[e.jsx("style",{children:`
2
+ @keyframes strongPulse {
3
+ 0%, 100% { opacity: 0.2; }
4
+ 50% { opacity: 1; }
5
+ }
6
+ `}),e.jsxs("div",{className:`${g} font-bold tracking-widest flex items-center justify-center text-gray-600`,children:[e.jsx("span",{style:{animation:"strongPulse 1.5s ease-in-out infinite"},children:"."}),e.jsx("span",{style:{animation:"strongPulse 1.5s ease-in-out infinite",animationDelay:"0.3s"},children:"."}),e.jsx("span",{style:{animation:"strongPulse 1.5s ease-in-out infinite",animationDelay:"0.6s"},children:"."})]})]});if(s.shouldSpin||s.iconType==="queued"||s.iconType==="pending")return r;switch(s.iconType){case"starting":case"capturing":return r;case"error":return e.jsx(w,{...n});case"completed":return e.jsx(v,{...n});default:return r}};return e.jsx(u,{to:m(),className:`${c} ${s.bgColor} flex flex-col items-center justify-center cursor-pointer transition-all hover:scale-105 hover:shadow-md`,title:s.title,children:e.jsx("div",{className:l.iconSize,children:y()})})}export{v as C,A as S};
@@ -0,0 +1,5 @@
1
+ import{r as o,j as e,b as Z,L as ee}from"./chunk-WWGJGFF6-De6i8FUT.js";import{a as se,I as te}from"./InteractivePreview-CRfBaL5B.js";import{L as re}from"./LogViewer-CRcT5fOZ.js";import{S as ae}from"./SafeScreenshot-Bual6h18.js";import{u as ne}from"./useLastLogLine-AlhS7g5F.js";function ie({presets:r,customSizes:x,currentWidth:l,currentHeight:n,scale:b,onSizeChange:v,onSaveCustomSize:u,onRemoveCustomSize:t,className:c=""}){const[a,d]=o.useState(!1),[m,I]=o.useState(String(l)),[k,N]=o.useState(String(n)),[h,p]=o.useState(!1),[f,y]=o.useState(!1),S=o.useRef(null);o.useEffect(()=>{h||I(String(l))},[l,h]),o.useEffect(()=>{f||N(String(n))},[n,f]),o.useEffect(()=>{const s=w=>{S.current&&!S.current.contains(w.target)&&d(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[]);const P=o.useMemo(()=>{const s=r.find(g=>g.width===l&&g.height===n);if(s)return s.name;const w=x.find(g=>g.width===l&&g.height===n);return w?w.name:"Custom"},[r,x,l,n]),A=P==="Custom",M=s=>{v(s.width,s.height),d(!1)},E=s=>{const w=s.target.value;I(w);const g=parseInt(w,10);!isNaN(g)&&g>0&&v(g,n)},D=s=>{const w=s.target.value;N(w);const g=parseInt(w,10);!isNaN(g)&&g>0&&v(l,g)},B=()=>{p(!1);const s=parseInt(m,10);(isNaN(s)||s<=0)&&I(String(l))},C=()=>{y(!1);const s=parseInt(k,10);(isNaN(s)||s<=0)&&N(String(n))},$=s=>{(s.key==="Enter"||s.key==="Escape")&&s.target.blur()};return e.jsxs("div",{className:`flex items-center gap-3 ${c}`,children:[e.jsxs("div",{className:"relative",ref:S,children:[e.jsxs("button",{onClick:()=>d(!a),className:"flex items-center gap-2 px-3 py-1.5 bg-white border border-gray-300 rounded-md text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:ring-offset-1 min-w-[120px] justify-between",children:[e.jsx("span",{children:P}),e.jsx("svg",{className:`w-4 h-4 transition-transform ${a?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),a&&e.jsx("div",{className:"absolute top-full left-0 mt-1 min-w-full bg-white border border-gray-200 rounded-md shadow-lg z-50",children:e.jsxs("div",{className:"py-1",children:[r.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-3 py-1 text-xs font-semibold text-gray-500 uppercase tracking-wider whitespace-nowrap",children:"Presets"}),r.map(s=>e.jsxs("button",{onClick:()=>M(s),className:`w-full text-left px-3 py-2 text-sm hover:bg-gray-100 flex justify-between items-center gap-4 whitespace-nowrap ${P===s.name?"bg-[#f0f7f9] text-[#005c75]":"text-gray-700"}`,children:[e.jsx("span",{children:s.name}),e.jsxs("span",{className:"text-xs text-gray-500",children:[s.width," x ",s.height]})]},s.name))]}),x.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-gray-100 my-1"}),e.jsx("div",{className:"px-3 py-1 text-xs font-semibold text-gray-500 uppercase tracking-wider whitespace-nowrap",children:"Custom"}),[...x].sort((s,w)=>s.width-w.width).map(s=>e.jsxs("div",{className:`flex items-center gap-1 hover:bg-gray-100 ${P===s.name?"bg-[#f0f7f9] text-[#005c75]":"text-gray-700"}`,children:[e.jsxs("button",{onClick:()=>M(s),className:"flex-1 text-left px-3 py-2 text-sm flex justify-between items-center gap-4 whitespace-nowrap cursor-pointer",children:[e.jsx("span",{children:s.name}),e.jsxs("span",{className:"text-xs text-gray-500",children:[s.width," x ",s.height]})]}),t&&e.jsx("button",{onClick:w=>{w.stopPropagation(),P===s.name&&r.length>0&&v(r[0].width,r[0].height),t(s.name)},className:"p-1.5 mr-1 text-gray-400 hover:text-red-500 hover:bg-red-50 rounded cursor-pointer transition-colors",title:"Remove custom size",children:e.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]},s.name))]})]})})]}),e.jsxs("div",{className:"flex items-center gap-1 text-sm",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{type:"text",value:m,onChange:E,onFocus:()=>p(!0),onBlur:B,onKeyDown:$,className:"w-16 px-2 py-1 text-right border border-gray-300 rounded-l-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75]"}),e.jsx("span",{className:"px-2 py-1 bg-gray-100 border border-l-0 border-gray-300 rounded-r-md text-gray-500 text-sm",children:"px"})]}),e.jsx("span",{className:"text-gray-400 mx-1",children:"×"}),e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{type:"text",value:k,onChange:D,onFocus:()=>y(!0),onBlur:C,onKeyDown:$,className:"w-16 px-2 py-1 text-right border border-gray-300 rounded-l-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75]"}),e.jsx("span",{className:"px-2 py-1 bg-gray-100 border border-l-0 border-gray-300 rounded-r-md text-gray-500 text-sm",children:"px"})]}),b!==void 0&&b<1&&e.jsxs("span",{className:"text-xs text-gray-500 ml-1",children:["(",Math.round(b*100),"%)"]})]}),A&&e.jsx("button",{onClick:u,className:"px-3 py-1.5 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:ring-offset-1 transition-colors",children:"Save Custom Size"})]})}function oe({scenario:r,analysis:x,entity:l}){const n=r.metadata?.executionResult||null,b=r.metadata?.data?.argumentsData||[],v=u=>{if(!u)return"No execution results available yet. Run the function to capture side effects including console output, file operations, and API calls.";const t=[],c=u.sideEffects?.consoleOutput||[];c.length>0&&(t.push(`Console Output: ${c.length} log ${c.length===1?"entry":"entries"} captured`),c.forEach(m=>{t.push(` [${m.level.toUpperCase()}] ${m.args.join(" ")}`)}));const a=u.sideEffects?.fileWrites||[];a.length>0&&(t.push(`
2
+ File System Operations: ${a.length} ${a.length===1?"operation":"operations"} detected`),a.forEach(m=>{t.push(` ${m.operation}: ${m.path}${m.size?` (${m.size} bytes)`:""}`)}));const d=u.sideEffects?.apiCalls||[];return d.length>0&&(t.push(`
3
+ API Calls: ${d.length} ${d.length===1?"call":"calls"} made`),d.forEach(m=>{t.push(` ${m.method} ${m.url}${m.status?` → ${m.status}`:""}${m.duration?` (${m.duration}ms)`:""}`)})),u.error&&t.push(`
4
+ Error: ${u.error.name||"Error"}: ${u.error.message}`),t.length===0?"No side effects detected. The function executed without console output, file operations, or API calls.":t.join(`
5
+ `)};return e.jsxs("div",{className:"flex w-full h-full gap-0",children:[e.jsxs("div",{className:"flex-1 border border-gray-200 bg-white rounded flex flex-col",children:[e.jsx("div",{className:"px-4 pt-3.5 pb-2.5",children:e.jsx("h3",{className:"text-[9px] font-semibold text-[#005c75] uppercase tracking-wide text-center m-0",children:"Input Data"})}),e.jsx("div",{className:"flex-1 overflow-auto px-4 pb-0",children:e.jsx("pre",{className:"text-xs font-mono text-gray-800 whitespace-pre-wrap break-words m-0",children:JSON.stringify(b,null,2)})})]}),e.jsxs("div",{className:"flex-1 border border-gray-200 bg-white rounded flex flex-col ml-[-1px]",children:[e.jsx("div",{className:"px-4 pt-3.5 pb-2.5",children:e.jsx("h3",{className:"text-[9px] font-semibold text-[#005c75] uppercase tracking-wide text-center m-0",children:"Returned Data"})}),e.jsx("div",{className:"flex-1 overflow-auto px-4 pb-0",children:n?e.jsx("pre",{className:"text-xs font-mono text-gray-800 whitespace-pre-wrap break-words m-0",children:n.returnValue!==void 0?JSON.stringify(n.returnValue,null,2):"undefined"}):e.jsx("div",{className:"text-sm text-gray-500 italic",children:"No execution results yet"})})]}),e.jsxs("div",{className:"flex-1 border border-gray-200 bg-white rounded flex flex-col ml-[-1px]",children:[e.jsx("div",{className:"px-4 pt-3.5 pb-2.5",children:e.jsx("h3",{className:"text-[9px] font-semibold text-[#005c75] uppercase tracking-wide text-center m-0",children:"Side Effects"})}),e.jsx("div",{className:"flex-1 overflow-auto px-4 pb-4",children:e.jsx("p",{className:"text-sm text-gray-700 leading-[22px] m-0 whitespace-pre-wrap",children:v(n)})})]})]})}const W=10,le=1024;function ce({currentViewportWidth:r,currentPresetName:x,onDevicePresetClick:l,devicePresets:n}){const[b,v]=o.useState(null),u=o.useRef(null),t=o.useMemo(()=>[...n].sort((h,p)=>h.width-p.width),[n]),{fittingPresets:c,overflowPresets:a}=o.useMemo(()=>{const h=[],p=[];for(const f of t)f.width<=le?h.push(f):p.push(f);return p.sort((f,y)=>y.width-f.width),{fittingPresets:h,overflowPresets:p}},[t]),d=o.useCallback(h=>{if(!u.current)return null;const p=u.current.getBoundingClientRect(),f=h-p.left,y=p.width,S=y/2,A=(c.length>0?c[c.length-1].width:0)/2,M=S-A,E=S+A,D=a.length>0?(a.length-1)*W:0;if(a.length>0){if(f<M){if(f<=D){const C=Math.min(Math.floor(f/W),a.length-1);return a[C]}return a[a.length-1]}if(f>E){const C=y-f;if(C<=D){const $=Math.min(Math.floor(C/W),a.length-1);return a[$]}return a[a.length-1]}}const B=Math.abs(f-S);for(let C=c.length-1;C>=0;C--){const $=c[C],s=c[C-1],w=$.width/2,g=s?s.width/2:0;if(B<=w&&B>=g)return $}return c[0]||a[a.length-1]||null},[c,a]),m=o.useCallback(h=>{const p=d(h.clientX);v(p)},[d]),I=o.useCallback(()=>{v(null)},[]),k=o.useCallback(h=>{const p=d(h.clientX);p&&l(p)},[d,l]),N=b||{name:x,width:r};return e.jsxs("div",{ref:u,className:"relative h-6 bg-[#f6f9fc] shrink-0 overflow-hidden cursor-pointer",onMouseMove:m,onMouseLeave:I,onClick:k,children:[e.jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none",children:e.jsx("div",{className:"h-full transition-all duration-100 bg-[rgba(0,92,117,0.15)]",style:{width:`${r}px`}})}),e.jsx("div",{className:"absolute inset-0 pointer-events-none",children:c.map(h=>{const p=h.width===r,f=b?.name===h.name,y=h.width/2;return e.jsxs("div",{children:[e.jsx("div",{className:"absolute top-0 bottom-0",style:{left:`calc(50% - ${y}px)`},children:e.jsx("div",{className:`w-0.5 h-full transition-colors duration-75 ${p||f?"bg-[#005c75]":"bg-[rgba(0,92,117,0.25)]"}`})}),e.jsx("div",{className:"absolute top-0 bottom-0",style:{left:`calc(50% + ${y}px)`},children:e.jsx("div",{className:`w-0.5 h-full transition-colors duration-75 ${p||f?"bg-[#005c75]":"bg-[rgba(0,92,117,0.25)]"}`})})]},h.name)})}),e.jsx("div",{className:"absolute inset-0 pointer-events-none",children:a.map((h,p)=>{const f=p*W,y=h.width===r,S=b?.name===h.name;return e.jsxs("div",{children:[e.jsx("div",{className:"absolute top-0 bottom-0",style:{left:`${f}px`},children:e.jsx("div",{className:`w-0.5 h-full transition-colors duration-75 ${y||S?"bg-[#005c75]":"bg-[rgba(0,92,117,0.25)]"}`})}),e.jsx("div",{className:"absolute top-0 bottom-0",style:{right:`${f}px`},children:e.jsx("div",{className:`w-0.5 h-full transition-colors duration-75 ${y||S?"bg-[#005c75]":"bg-[rgba(0,92,117,0.25)]"}`})})]},h.name)})}),e.jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none",children:e.jsxs("div",{className:`text-[10px] px-2 py-0.5 rounded shadow-sm whitespace-nowrap transition-colors ${b?"bg-[#005c75] text-white":"bg-white/90 text-[#005c75] border border-[rgba(0,92,117,0.25)]"}`,children:[N.name," - ",N.width,"px"]})})]})}function de({width:r,height:x,onSave:l,onCancel:n}){const[b,v]=o.useState(""),[u,t]=o.useState(""),c=()=>{const d=b.trim();if(!d){t("Please enter a name for this custom size");return}l(d)},a=d=>{d.key==="Enter"&&b.trim()&&c(),d.key==="Escape"&&n()};return e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50",children:e.jsxs("div",{className:"bg-white rounded-lg max-w-md w-full p-6 shadow-xl",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:"Save Custom Size"}),e.jsx("button",{onClick:n,className:"text-gray-400 hover:text-gray-600 transition-colors","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg border border-gray-200",children:[e.jsx("div",{className:"text-sm text-gray-500 mb-1",children:"Dimensions"}),e.jsxs("div",{className:"text-lg font-medium text-gray-900",children:[r,"px × ",x,"px"]})]}),e.jsxs("div",{className:"mb-6",children:[e.jsx("label",{htmlFor:"custom-size-name",className:"block text-sm font-medium text-gray-700 mb-2",children:"Name"}),e.jsx("input",{id:"custom-size-name",type:"text",value:b,onChange:d=>{v(d.target.value),t("")},onKeyDown:a,placeholder:"e.g., iPhone 15 Pro",className:`w-full px-3 py-2 border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:border-[#005c75] ${u?"border-red-300":"border-gray-300"}`,autoFocus:!0}),u&&e.jsx("p",{className:"mt-1 text-sm text-red-600",children:u})]}),e.jsxs("div",{className:"flex gap-3 justify-end",children:[e.jsx("button",{onClick:n,className:"px-4 py-2 bg-gray-100 text-gray-700 text-sm font-medium rounded-md hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-gray-300 transition-colors",children:"Cancel"}),e.jsx("button",{onClick:c,disabled:!b.trim(),className:"px-4 py-2 bg-[#005c75] text-white text-sm font-medium rounded-md hover:bg-[#004a5c] focus:outline-none focus:ring-2 focus:ring-[#005c75] focus:ring-offset-1 transition-colors disabled:bg-gray-300 disabled:cursor-not-allowed",children:"Save"})]})]})})}function xe(r){const[x,l]=o.useState([]),n=r?`codeyam-custom-sizes-${r}`:null;o.useEffect(()=>{if(!n||typeof window>"u"){l([]);return}try{const t=localStorage.getItem(n);if(t){const c=JSON.parse(t);Array.isArray(c)&&l(c)}}catch(t){console.error("[useCustomSizes] Failed to load custom sizes:",t),l([])}},[n]);const b=o.useCallback(t=>{if(!(!n||typeof window>"u"))try{localStorage.setItem(n,JSON.stringify(t))}catch(c){console.error("[useCustomSizes] Failed to save custom sizes:",c)}},[n]),v=o.useCallback((t,c,a)=>{l(d=>{const m=d.findIndex(N=>N.name===t),I={name:t,width:c,height:a};let k;return m>=0?(k=[...d],k[m]=I):k=[...d,I],b(k),k})},[b]),u=o.useCallback(t=>{l(c=>{const a=c.filter(d=>d.name!==t);return b(a),a})},[b]);return{customSizes:x,addCustomSize:v,removeCustomSize:u}}const X=1440,_=[{name:"Mobile",width:375,height:667},{name:"Tablet",width:768,height:1024},{name:"Laptop",width:1024,height:768},{name:"Desktop",width:1440,height:900}];function ge({selectedScenario:r,analysis:x,entity:l,viewMode:n,cacheBuster:b,hasScenarios:v,isAnalyzing:u=!1,projectSlug:t,hasAnApiKey:c=!0}){const a=Z(),[d,m]=o.useState(!1),[I,k]=o.useState(!1),[N,h]=o.useState({name:"Desktop",width:X,height:900}),[p,f]=o.useState(X),[y,S]=o.useState(1),{customSizes:P,addCustomSize:A,removeCustomSize:M}=xe(t),E=o.useMemo(()=>[..._,...P],[P]),D=(i,j)=>{f(i);const O=E.find(z=>z.width===i&&z.height===j);h({name:O?.name||"Custom",width:i,height:j})},B=i=>{f(i.width),h({name:i.name,width:i.width,height:i.height})},C=i=>{A(i,N.width,N.height??900),k(!1),h(j=>({...j,name:i}))},$=(i,j)=>{f(i);const O=E.find(z=>z.width===i&&z.height===j);h(z=>({name:O?.name||"Custom",width:i,height:z.height}))},s=r?.metadata?.screenshotPaths?.[0],w=o.useMemo(()=>!r||!x?.status?.scenarios?null:x.status.scenarios.find(i=>i.name===r.name),[r,x?.status?.scenarios]),g=o.useMemo(()=>{const i=[];if(x?.status?.errors&&x.status.errors.length>0)for(const j of x.status.errors)i.push({source:`${j.phase} phase`,message:j.message,stack:j.stack});if(x?.status?.steps)for(const j of x.status.steps)j.error&&i.push({source:j.name,message:j.error,stack:j.errorStack});return i},[x?.status?.errors,x?.status?.steps]),L=w?.error||(r?.metadata?.error?"Error during capture":null),V=w?.errorStack,{interactiveServerUrl:K,isStarting:H,isLoading:J,showIframe:U,iframeKey:G,onIframeLoad:q}=se({analysisId:x?.id,scenarioId:r?.id,scenarioName:r?.name,projectSlug:t,enabled:n==="interactive"}),T=o.useMemo(()=>K||null,[K]),R=!u&&v&&r&&!r.metadata?.screenshotPaths?.[0]&&x?.status?.scenarios?.some(i=>i.name===r.name&&i.screenshotStartedAt&&!i.screenshotFinishedAt),{lastLine:F}=ne(t,u||n==="interactive"||R||!1);if(!r)return!v&&l?u?e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-12 text-center bg-[#f6f9fc]",children:e.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12 mb-2",children:e.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:e.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),e.jsx("h2",{className:"text-2xl font-semibold text-[#005c75] leading-[30px] m-0 font-['IBM_Plex_Sans']",children:R?"Capturing screenshots...":"Analyzing..."}),e.jsx("p",{className:"text-xs text-[#8e8e8e] text-center leading-5 m-0 font-['IBM_Plex_Mono']",children:"This may take a few minutes."}),F&&e.jsx("p",{className:"text-xs font-mono text-[#005c75] text-center leading-5 m-0 max-w-xl",children:F}),t&&e.jsx("button",{onClick:()=>m(!0),className:"w-[148px] px-2.5 py-[5px] bg-[#005c75] text-white border-none rounded-sm text-xs font-medium cursor-pointer transition-colors hover:bg-[#004a5c] font-['IBM_Plex_Sans']",children:"View full logs"})]})}):g.length>0?e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-6 bg-[#f6f9fc] overflow-auto",children:e.jsxs("div",{className:"bg-red-50 border-2 border-red-300 rounded-lg p-8 w-full max-w-4xl",children:[e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("span",{className:"text-red-500 text-4xl shrink-0",children:"⚠️"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-xl font-semibold text-red-800 m-0 mb-3",children:"Analysis Failed"}),e.jsx("p",{className:"text-sm text-red-700 m-0 mb-4",children:g.length===1?"An error occurred during analysis. No scenarios were generated.":`${g.length} errors occurred during analysis. No scenarios were generated.`}),g.map((i,j)=>e.jsxs("div",{className:"bg-white border border-red-200 rounded p-4 mb-4 last:mb-0",children:[e.jsx("h4",{className:"text-xs font-semibold text-red-800 m-0 mb-2 uppercase tracking-wide",children:i.source}),e.jsx("div",{className:"max-h-[200px] overflow-auto",children:e.jsx("p",{className:"text-sm text-red-900 m-0 font-mono whitespace-pre-wrap wrap-break-word",children:i.message})}),i.stack&&e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-red-700 cursor-pointer hover:text-red-900 font-semibold",children:"View stack trace"}),e.jsx("div",{className:"mt-2 bg-red-50 border border-red-200 rounded p-3 max-h-[200px] overflow-auto",children:e.jsx("pre",{className:"text-xs text-red-900 font-mono whitespace-pre-wrap wrap-break-word m-0",children:i.stack})})]})]},j))]})]}),l.filePath&&e.jsx("div",{className:"flex justify-center mt-4",children:e.jsx("button",{onClick:()=>{a.submit({entitySha:l.sha,filePath:l.filePath},{method:"post",action:"/api/analyze"})},disabled:a.state!=="idle",className:"h-[42px] px-6 py-2 bg-[#005c75] text-white border-none rounded-lg text-sm font-medium cursor-pointer transition-all hover:bg-[#004a5e] disabled:bg-gray-400 disabled:cursor-not-allowed",children:a.state!=="idle"?"Retrying...":"Retry Analysis"})})]})}):e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-6 text-center bg-[#f6f9fc]",children:e.jsxs("div",{className:"max-w-[600px]",children:[e.jsx("h2",{className:"text-[28px] font-semibold text-[#343434] mb-4 m-0 leading-10",children:"No simulations yet"}),e.jsx("p",{className:"text-base font-normal text-[#3e3e3e] mb-8 leading-6 m-0",children:"Analyze the code to create simulations and create test scenarios automatically."}),l.filePath&&e.jsx("button",{onClick:()=>{a.submit({entitySha:l.sha,filePath:l.filePath},{method:"post",action:"/api/analyze"})},disabled:a.state!=="idle",className:"h-[54px] w-[183px] px-2.5 py-[5px] bg-[#005c75] text-white border-none rounded-lg text-base font-medium cursor-pointer transition-all hover:bg-[#004a5e] disabled:bg-gray-400 disabled:cursor-not-allowed",children:a.state!=="idle"?"Analyzing...":"Analyze"})]})}):e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-6 text-center",children:e.jsx("p",{className:"text-base text-gray-500 m-0",children:"Select a scenario to view its screenshot"})});const Y=n==="screenshot"&&(s||L)||n==="interactive"&&(T||H)||n==="data",Q=(u||R)&&!s&&!L&&n==="screenshot";return e.jsxs(e.Fragment,{children:[e.jsx("main",{className:"flex-1 bg-[#f9f9f9] overflow-auto flex flex-col min-w-0",children:Q?e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-6 text-center bg-linear-to-br from-blue-50 to-indigo-50",children:e.jsxs("div",{className:"max-w-2xl w-full bg-white rounded-t-2xl shadow-xl p-8",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-24 h-24 bg-blue-100 rounded-full mb-6",children:e.jsx("span",{className:"text-5xl animate-spin",children:"⚙️"})}),e.jsx("h2",{className:"text-3xl font-bold text-gray-900 mb-4 m-0",children:R?`Capturing ${l?.name}`:`Analyzing ${l?.name}`}),e.jsx("p",{className:"text-base text-gray-600 leading-relaxed m-0 mb-2",children:R?`Taking screenshots for ${x?.scenarios?.length||0} scenario${x?.scenarios?.length!==1?"s":""}...`:`Generating simulations and scenarios for this ${l?.entityType} entity...`}),r&&e.jsxs("p",{className:"text-sm text-blue-600 font-semibold m-0",children:["Currently processing: ",r.name]})]}),F&&e.jsx("div",{className:"bg-[#f6f9fc] border-2 border-[#e1e1e1] rounded-lg p-6 mb-6",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-xl shrink-0",children:"📝"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-700 uppercase tracking-wide mb-2 m-0",children:"Current Progress"}),e.jsx("p",{className:"text-sm text-gray-900 font-mono wrap-break-word m-0",title:F,children:F})]})]})}),t&&e.jsx("button",{onClick:()=>m(!0),className:"px-6 py-3 bg-[#005c75] text-white border-none rounded-lg text-base font-semibold cursor-pointer transition-all hover:bg-[#004a5e] hover:shadow-lg",children:"📋 View Full Logs"}),e.jsx("p",{className:"text-xs text-gray-500 mt-8 m-0",children:"Screenshots will appear here as they are captured. This may take a few minutes."})]})}):Y?e.jsxs(e.Fragment,{children:[L&&!s&&e.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 mx-5 mt-4 p-4 rounded-r max-h-[400px] overflow-auto",role:"alert",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"text-red-500 text-xl shrink-0","aria-hidden":"true",children:"⚠️"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-sm font-semibold text-red-800 m-0 mb-2",children:"Capture Error"}),e.jsx("div",{className:"max-h-[200px] overflow-auto",children:e.jsx("p",{className:"text-sm text-red-700 m-0 mb-2 font-mono whitespace-pre-wrap wrap-break-word",children:L})}),V&&e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-red-600 cursor-pointer hover:text-red-800 font-medium",children:"View stack trace"}),e.jsx("div",{className:"mt-2 p-3 bg-red-100 rounded max-h-[300px] overflow-auto",children:e.jsx("pre",{className:"text-xs text-red-900 font-mono whitespace-pre-wrap wrap-break-word m-0",children:V})})]})]})]})}),n==="interactive"?e.jsxs("div",{className:"flex-1 flex flex-col min-h-0",children:[T&&e.jsx("div",{className:"bg-gray-50 border-b border-gray-200 px-6 py-3 shrink-0 flex justify-center",children:e.jsx(ie,{presets:[..._],customSizes:P,currentWidth:N.width,currentHeight:N.height??900,scale:y,onSizeChange:D,onSaveCustomSize:()=>k(!0),onRemoveCustomSize:M})}),T&&e.jsx("div",{className:"bg-[#f6f9fc] border-b border-[rgba(0,92,117,0.25)] flex justify-center",children:e.jsx("div",{style:{maxWidth:`${_[_.length-1].width}px`,width:"100%"},children:e.jsx(ce,{currentViewportWidth:p,currentPresetName:N.name,onDevicePresetClick:B,devicePresets:E})})}),e.jsx(te,{scenarioId:r.id,scenarioName:r.name,iframeUrl:T,isStarting:H,isLoading:J,showIframe:U,iframeKey:G,onIframeLoad:q,onScaleChange:S,onDimensionChange:$,projectSlug:t,defaultWidth:N.width,defaultHeight:N.height})]}):n==="data"?e.jsx("div",{className:"flex-1 min-h-0",children:e.jsx(oe,{scenario:r,analysis:x,entity:l})}):e.jsx("div",{className:"flex-1 flex flex-col",children:e.jsx("div",{className:"flex-1 p-6 flex items-center justify-center",children:e.jsx("div",{className:"transition-all duration-300",style:{maxWidth:`${p}px`},children:(s||!L)&&e.jsx(ae,{screenshotPath:s,cacheBuster:b,alt:r.name,className:"w-full rounded-lg shadow-[0_10px_25px_rgba(0,0,0,0.1)] bg-white"})})})})]}):e.jsx("div",{className:"flex-1 flex flex-col",children:e.jsx("div",{className:"flex-1 flex flex-col items-center justify-center p-6 overflow-auto w-full",children:u&&!s?e.jsx("div",{className:"w-full h-full flex items-center justify-center",children:e.jsx("div",{className:"bg-blue-50 border-2 border-blue-200 rounded-lg p-8",children:e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("span",{className:"animate-spin text-4xl shrink-0",children:"⚙️"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h3",{className:"text-xl font-semibold text-blue-900 m-0 mb-3",children:"Capturing Screenshot"}),e.jsxs("p",{className:"text-sm text-blue-800 m-0 mb-4",children:["Analysis is in progress for"," ",e.jsx("strong",{children:r.name}),". The screenshot will appear here once capture is complete."]}),F&&e.jsxs("div",{className:"bg-white border border-blue-200 rounded p-4 mt-4",children:[e.jsx("h4",{className:"text-xs font-semibold text-blue-800 m-0 mb-2 uppercase tracking-wide",children:"Current Progress"}),e.jsx("p",{className:"text-sm text-blue-900 m-0 font-mono wrap-break-word",children:F})]}),t&&e.jsx("button",{onClick:()=>m(!0),className:"mt-4 px-4 py-2 bg-[#005c75] text-white border-none rounded-md text-sm font-semibold cursor-pointer transition-colors hover:bg-[#004a5e]",children:"📋 View Full Logs"})]})]})})}):L?e.jsxs("div",{className:"w-full h-full flex flex-col items-center justify-center overflow-auto gap-6",children:[!c&&e.jsx("div",{className:"bg-blue-50 border-2 border-blue-300 rounded-lg p-8",children:e.jsxs("div",{className:"flex-1 flex flex-col gap-4 items-center justify-center",children:[e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"text-blue-600 text-2xl shrink-0",children:"🔑"}),e.jsx("h3",{className:"text-xl font-semibold text-blue-900 m-0 mb-3",children:"Improve Analysis Quality with an API Key"})]}),e.jsxs("div",{className:"bg-white border border-blue-200 rounded p-4",children:[e.jsx("h4",{className:"text-xs font-semibold text-blue-900 m-0 mb-2 uppercase tracking-wide",children:"CodeYam requires an AI API key for reliable analysis."}),e.jsxs("ul",{className:"text-sm text-blue-800 m-0 space-y-1 pl-5 list-disc",children:[e.jsx("li",{children:"You can use API keys for a variety of models"}),e.jsx("li",{children:"Faster analysis processing"}),e.jsx("li",{children:"Better handling of complex code structures"}),e.jsx("li",{children:"Improved scenario generation quality"})]})]}),e.jsx(ee,{to:"/settings",className:"inline-block px-4 py-2 bg-blue-600 text-white border-none rounded-md text-sm font-semibold cursor-pointer transition-colors hover:bg-blue-700",children:"🔐 Configure API Keys"})]})}),e.jsx("div",{className:"bg-red-50 border-2 border-red-300 rounded-lg p-8 w-full max-w-4xl my-auto",children:e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("span",{className:"text-red-500 text-4xl shrink-0",children:"⚠️"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-xl font-semibold text-red-800 m-0 mb-3",children:"Capture Failed"}),e.jsx("p",{className:"text-sm text-red-700 m-0 mb-4",children:"An error occurred while capturing this scenario. No screenshot is available."}),e.jsxs("div",{className:"bg-white border border-red-200 rounded p-4",children:[e.jsx("h4",{className:"text-xs font-semibold text-red-800 m-0 mb-2 uppercase tracking-wide",children:"Error Message"}),e.jsx("div",{className:"max-h-[300px] overflow-auto",children:e.jsx("p",{className:"text-sm text-red-900 m-0 font-mono whitespace-pre-wrap wrap-break-word",children:L})})]}),V&&e.jsxs("details",{className:"mt-4",children:[e.jsx("summary",{className:"text-sm text-red-700 cursor-pointer hover:text-red-900 font-semibold",children:"📋 View full stack trace"}),e.jsx("div",{className:"mt-3 bg-white border border-red-200 rounded p-4 max-h-[400px] overflow-auto",children:e.jsx("pre",{className:"text-xs text-red-900 font-mono whitespace-pre-wrap wrap-break-word m-0",children:V})})]})]})]})})]}):g.length>0?e.jsx("div",{className:"w-full h-full flex items-center justify-center overflow-auto",children:e.jsx("div",{className:"bg-red-50 border-2 border-red-300 rounded-lg p-8 w-full max-w-4xl my-auto",children:e.jsxs("div",{className:"flex items-start gap-4 mb-6",children:[e.jsx("span",{className:"text-red-500 text-4xl shrink-0",children:"⚠️"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-xl font-semibold text-red-800 m-0 mb-3",children:"Analysis Error"}),e.jsx("p",{className:"text-sm text-red-700 m-0 mb-4",children:g.length===1?"An error occurred during analysis. Screenshot capture was not completed.":`${g.length} errors occurred during analysis. Screenshot capture was not completed.`}),g.map((i,j)=>e.jsxs("div",{className:"bg-white border border-red-200 rounded p-4 mb-4 last:mb-0",children:[e.jsx("h4",{className:"text-xs font-semibold text-red-800 m-0 mb-2 uppercase tracking-wide",children:i.source}),e.jsx("div",{className:"max-h-[200px] overflow-auto",children:e.jsx("p",{className:"text-sm text-red-900 m-0 font-mono whitespace-pre-wrap wrap-break-word",children:i.message})}),i.stack&&e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-red-700 cursor-pointer hover:text-red-900 font-semibold",children:"View stack trace"}),e.jsx("div",{className:"mt-2 bg-red-50 border border-red-200 rounded p-3 max-h-[200px] overflow-auto",children:e.jsx("pre",{className:"text-xs text-red-900 font-mono whitespace-pre-wrap wrap-break-word m-0",children:i.stack})})]})]},j))]})]})})}):e.jsxs("div",{className:"flex flex-col items-center gap-4 text-center",children:[e.jsx("span",{className:"text-6xl text-gray-300",children:"📷"}),e.jsx("p",{className:"text-lg text-gray-500 m-0",children:"No screenshot available for this scenario"}),e.jsx("p",{className:"text-sm text-gray-400 m-0",children:"Try recapturing or debugging this scenario"})]})})})}),d&&t&&e.jsx(re,{projectSlug:t,onClose:()=>m(!1)}),I&&e.jsx(de,{width:N.width,height:N.height??900,onSave:C,onCancel:()=>k(!1)})]})}export{ge as S};
@@ -0,0 +1 @@
1
+ import{w as K,u as ee,b as se,d as te,r as d,j as e,L as m}from"./chunk-WWGJGFF6-De6i8FUT.js";import{u as le}from"./useLastLogLine-AlhS7g5F.js";import{u as ne,C as ae}from"./useToast-XY00p4rI.js";import{L as re}from"./LogViewer-CRcT5fOZ.js";import{C as V,E as ie}from"./EntityTypeIcon-BFRmw1TF.js";import{S as _}from"./SafeScreenshot-Bual6h18.js";import{c as H}from"./file-text-fb2mx25c.js";import{S as oe}from"./settings-C7G4GDvW.js";import{Z as ce}from"./zap-Dra7vum1.js";import{L as w}from"./loader-circle-DE3HAwpF.js";import"./chart-column-DOftqM9U.js";const de=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],xe=H("folder-open",de);const me=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],b=H("image",me),ke=()=>[{title:"Dashboard - CodeYam"},{name:"description",content:"CodeYam project dashboard"}],Se=K(function(){const{stats:j,uncommittedFiles:g,uncommittedEntitiesList:C,recentSimulations:h,visualEntitiesForSimulation:y,projectSlug:v,queueState:F,currentCommit:P}=ee(),i=se(),W=te(),{showToast:x}=ne(),[R,I]=d.useState(new Set),[o,T]=d.useState(null),[Z,A]=d.useState(!1),[L,k]=d.useState(!1),{lastLine:S,isCompleted:z,resetLogs:U}=le(v,!!o),{simulatingEntity:f,scenarios:N,scenarioStatuses:q,allScenariosCaptured:E}=d.useMemo(()=>{const s={simulatingEntity:null,scenarios:[],scenarioStatuses:[],allScenariosCaptured:!1};if(!o)return s;const t=y?.find(r=>r.sha===o);if(!t)return s;const l=t.analyses?.[0],a=l?.scenarios||[],n=l?.status?.scenarios||[],u=n.filter(r=>r.screenshotFinishedAt).length,p=a.length>0&&u===a.length;return{simulatingEntity:t,scenarios:a,scenarioStatuses:n,allScenariosCaptured:p}},[o,y]);d.useEffect(()=>{(z||E)&&T(null)},[z,E]);const Q=P?.metadata?.currentRun,$=new Set(Q?.currentEntityShas||[]),M=new Set(F.jobs.flatMap(s=>s.entityShas||[])),B=new Set(F.currentlyExecuting?.entityShas||[]),D=C.filter(s=>s.entityType==="visual"||s.entityType==="library"),c=D.filter(s=>!$.has(s.sha)&&!M.has(s.sha)&&!B.has(s.sha)),Y=()=>{if(c.length===0){x("All entities are already queued or analyzing","info",3e3);return}console.log("Analyzing uncommitted entities not yet queued:",c.length),console.log("Entity SHAs:",c.map(s=>s.sha)),k(!0),x(`Starting analysis for ${c.length} entities...`,"info",3e3),i.submit({entityShas:c.map(s=>s.sha).join(",")},{method:"post",action:"/api/analyze"})};d.useEffect(()=>{if(i.state==="idle"&&i.data){const s=i.data;s.success?(console.log("[Analyze All] Success:",s.message),x(`Analysis started for ${s.entityCount} entities in ${s.fileCount} files. Watch the logs for progress.`,"success",6e3),k(!1)):s.error&&(console.error("[Analyze All] Error:",s.error),x(`Error: ${s.error}`,"error",8e3),k(!1))}},[i.state,i.data,x]);const O=(s,t)=>{console.log("Simulating entity:",s);const l=y?.find(a=>a.sha===s);T(s),U(),x(`Starting analysis for ${l?.name||"entity"}...`,"info",3e3),i.submit({entitySha:s,filePath:t},{method:"post",action:"/api/analyze"})},G=s=>{I(t=>{const l=new Set(t);return l.has(s)?l.delete(s):l.add(s),l})},X=d.useMemo(()=>{const s=new Map;return h.forEach(t=>{const l=t.entitySha;s.has(l)||s.set(l,[]),s.get(l).push(t)}),Array.from(s.entries()).map(([t,l])=>({entitySha:t,entityName:l[0].entityName,scenarios:l}))},[h]),J=[{label:"Total Entities",value:j.totalEntities,iconType:"folder",link:"/files",color:"#F59E0B"},{label:"Analyzed Entities",value:j.entitiesWithAnalyses,iconType:"check",link:"/simulations",color:"#10B981"},{label:"Visual Components",value:j.visualEntities,iconType:"image",link:"/files?entityType=visual",color:"#8B5CF6"},{label:"Library Functions",value:j.libraryEntities,iconType:"code-xml",link:"/files?entityType=library",color:"#0DBFE9"}];return e.jsx("div",{className:"bg-cygray-10 min-h-screen",children:e.jsxs("div",{className:"py-6 px-12",children:[e.jsxs("header",{className:"mb-8 flex justify-between items-center",children:[e.jsx("div",{children:e.jsx("h1",{className:"text-3xl font-bold text-gray-900 m-0 mb-2",children:"CodeYam"})}),W.state==="loading"&&e.jsx("div",{className:"text-blue-600 text-sm font-medium animate-pulse",children:"🔄 Updating..."})]}),e.jsx("div",{className:"flex items-center justify-between gap-3",children:J.map((s,t)=>e.jsx(m,{to:s.link,className:"flex-1 bg-white rounded-xl border border-gray-200 overflow-hidden flex transition-all hover:shadow-lg hover:-translate-y-0.5 no-underline",style:{borderLeft:`4px solid ${s.color}`},children:e.jsxs("div",{className:"px-6 py-4 flex flex-col gap-3 flex-1",children:[e.jsxs("div",{className:"flex md:justify-between md:items-start md:flex-row flex-col",children:[e.jsx("div",{className:"text-xs text-gray-700 font-medium",children:s.label}),e.jsx("div",{className:"text-xs font-medium transition-colors flex items-center gap-1 hidden md:flex",style:{color:s.color},children:"View All →"})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"rounded-lg p-2 leading-none flex-shrink-0",style:{backgroundColor:`${s.color}15`},children:[s.iconType==="folder"&&e.jsx(xe,{size:20,style:{color:s.color}}),s.iconType==="check"&&e.jsx(ae,{size:20,style:{color:s.color}}),s.iconType==="image"&&e.jsx(b,{size:20,style:{color:s.color}}),s.iconType==="gear"&&e.jsx(oe,{size:20,style:{color:s.color}}),s.iconType==="code-xml"&&e.jsx(V,{size:20,style:{color:s.color}})]}),e.jsx("div",{className:"text-2xl font-bold text-gray-900 leading-none",children:s.value})]}),e.jsx("div",{className:"text-xs font-medium transition-colors flex items-center gap-1 md:hidden",style:{color:s.color},children:"View All →"})]})]})},t))}),e.jsxs("div",{className:"mt-12 grid gap-8 items-start",style:{gridTemplateColumns:"repeat(auto-fit, minmax(500px, 1fr))"},children:[e.jsxs("section",{id:"uncommitted",className:"bg-white border border-gray-200 rounded-xl p-6",children:[e.jsxs("div",{className:"flex justify-between items-start mb-5",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-[22px] font-semibold text-gray-900 m-0 mb-1",children:"Uncommitted Changes"}),e.jsx("p",{className:"text-sm text-gray-500 m-0",children:g.length>0?`${g.length} file${g.length!==1?"s":""} with ${C.length} uncommitted entit${C.length!==1?"ies":"y"}`:"No uncommitted changes detected"})]}),D.length>0&&e.jsx("button",{onClick:Y,disabled:i.state!=="idle"||L||c.length===0,className:"px-5 py-2.5 text-white border-none rounded-lg text-sm font-semibold cursor-pointer transition-all hover:-translate-y-px disabled:bg-gray-400 disabled:cursor-not-allowed disabled:translate-y-0",style:{backgroundColor:"#005C75"},onMouseEnter:s=>s.currentTarget.style.backgroundColor="#004560",onMouseLeave:s=>s.currentTarget.style.backgroundColor="#005C75",children:i.state!=="idle"||L?"Starting analysis...":c.length===0?"All Queued":`Analyze All (${c.length})`})]}),g.length>0?e.jsx("div",{className:"flex flex-col gap-3",children:g.map(([s,t])=>{const l=R.has(s),a=t.editedEntities||[];return e.jsxs("div",{className:"bg-white border border-gray-200 border-l-4 rounded-lg overflow-hidden",style:{borderLeftColor:"#306AFF"},children:[e.jsx("div",{className:"p-4 cursor-pointer select-none transition-colors hover:bg-gray-50",onClick:()=>G(s),role:"button",tabIndex:0,children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-gray-500 text-xs w-4 shrink-0",children:l?"▼":"▶"}),e.jsxs("svg",{width:"16",height:"20",viewBox:"0 0 12 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"shrink-0",children:[e.jsxs("g",{clipPath:"url(#clip0_784_10666)",children:[e.jsx("path",{d:"M0 2.55857C0 1.14551 1.14551 0 2.55857 0H8.73194L12 3.3616V13.4414C12 14.8545 10.8545 16 9.44143 16H2.55857C1.14551 16 0 14.8545 0 13.4414V2.55857Z",fill:"#DDDDFE"}),e.jsx("path",{d:"M8.72656 3.3307H11.9906L8.72656 0V3.3307Z",fill:"#306AFF"}),e.jsx("line",{x1:"1.8125",y1:"5.94825",x2:"10.0235",y2:"5.94825",stroke:"#306AFF",strokeWidth:"1.27929"}),e.jsx("line",{x1:"1.8125",y1:"8.82715",x2:"6.01207",y2:"8.82715",stroke:"#306AFF",strokeWidth:"1.27929"}),e.jsx("line",{x1:"1.8125",y1:"11.7061",x2:"10.0235",y2:"11.7061",stroke:"#306AFF",strokeWidth:"1.27929"})]}),e.jsx("defs",{children:e.jsx("clipPath",{id:"clip0_784_10666",children:e.jsx("rect",{width:"12",height:"16",fill:"white"})})})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"font-normal text-gray-900 text-sm block truncate",children:s}),e.jsxs("span",{className:"text-xs text-gray-500",children:[a.length," entit",a.length!==1?"ies":"y"]})]})]})}),l&&e.jsx("div",{className:"border-t border-gray-200 bg-gray-50 p-3 flex flex-col gap-2",children:a.length>0?a.map(n=>{const u=$.has(n.sha),p=M.has(n.sha)||B.has(n.sha);return e.jsxs(m,{to:`/entity/${n.sha}`,className:"flex items-center gap-4 p-4 bg-white border border-gray-200 rounded-lg no-underline transition-all hover:shadow-md hover:-translate-y-0.5",style:{borderColor:"inherit"},onMouseEnter:r=>r.currentTarget.style.borderColor="#005C75",onMouseLeave:r=>r.currentTarget.style.borderColor="inherit",children:[e.jsxs("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center",style:{backgroundColor:n.entityType==="visual"?"#8B5CF615":n.entityType==="library"?"#6366F1":"#EC4899"},children:[n.entityType==="visual"&&e.jsx(b,{size:16,style:{color:"#8B5CF6"}}),n.entityType==="library"&&e.jsx(V,{size:16,className:"text-white"}),n.entityType==="other"&&e.jsx(ce,{size:16,className:"text-white"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("div",{className:"font-semibold text-gray-900 text-sm",children:n.name}),n.entityType==="visual"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#8B5CF60D",color:"#8B5CF6"},children:"Visual"}),n.entityType==="library"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#0DBFE90D",color:"#0DBFE9"},children:"Library"}),n.entityType==="other"&&e.jsx("div",{className:"px-2 py-0.5 rounded-sm text-[10px] uppercase font-bold",style:{backgroundColor:"#EC48990D",color:"#EC4899"},children:"Other"})]}),n.description&&e.jsx("div",{className:"text-sm text-gray-500 mt-1 overflow-hidden text-ellipsis whitespace-nowrap",children:n.description})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[u&&e.jsxs("div",{className:"px-2 py-1 bg-pink-100 rounded text-xs text-pink-700 font-semibold flex items-center gap-1.5",children:[e.jsx(w,{size:14,className:"animate-spin"}),"Analyzing..."]}),!u&&p&&e.jsx("div",{className:"px-2 py-1 bg-purple-50 border border-purple-300 rounded text-xs text-purple-700 font-semibold",children:"⏳ Queued"}),!u&&!p&&e.jsx("button",{onClick:r=>{r.preventDefault(),r.stopPropagation(),x(`Starting analysis for ${n.name}...`,"info",3e3),i.submit({entityShas:n.sha},{method:"post",action:"/api/analyze"})},disabled:i.state!=="idle",className:"px-3 py-1.5 text-white border-none rounded text-xs font-medium cursor-pointer transition-all disabled:bg-gray-400 disabled:cursor-not-allowed",style:{backgroundColor:"#005C75"},onMouseEnter:r=>r.currentTarget.style.backgroundColor="#004560",onMouseLeave:r=>r.currentTarget.style.backgroundColor="#005C75",children:"Analyze"})]})]},n.sha)}):e.jsx("div",{className:"text-sm text-gray-500 italic p-2",children:"No entity changes detected in this file"})})]},s)})}):e.jsxs("div",{className:"py-12 px-6 text-center flex flex-col items-center bg-gray-50 rounded-lg min-h-[200px] justify-center",children:[e.jsxs("svg",{width:"52",height:"68",viewBox:"0 0 26 34",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"mb-4 opacity-40",children:[e.jsxs("g",{clipPath:"url(#clip0_784_10631)",children:[e.jsx("path",{d:"M0 2.55857C0 1.14551 1.14551 0 2.55857 0H18.9423L26.0318 7.14651V31.4562C26.0318 32.8693 24.8863 34.0148 23.4732 34.0148H2.55857C1.14551 34.0148 0 32.8693 0 31.4562V2.55857Z",fill:"#D9D9D9"}),e.jsx("path",{d:"M18.9453 7.08081H26.0261L18.9453 0V7.08081Z",fill:"#646464"}),e.jsx("line",{x1:"3.92188",y1:"13.3633",x2:"21.7341",y2:"13.3633",stroke:"#646464",strokeWidth:"1.27929"}),e.jsx("line",{x1:"3.92188",y1:"19.4863",x2:"13.0321",y2:"19.4863",stroke:"#646464",strokeWidth:"1.27929"}),e.jsx("line",{x1:"3.92188",y1:"25.6016",x2:"21.7341",y2:"25.6016",stroke:"#646464",strokeWidth:"1.27929"})]}),e.jsx("defs",{children:e.jsx("clipPath",{id:"clip0_784_10631",children:e.jsx("rect",{width:"26",height:"34",fill:"white"})})})]}),e.jsx("p",{className:"text-sm font-medium text-gray-400 m-0 mb-2",children:"No Uncommitted Changes."})]})]}),e.jsxs("section",{className:"bg-white border border-gray-200 rounded-xl p-6",children:[e.jsx("div",{className:"flex justify-between items-start mb-5",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-[22px] font-semibold text-gray-900 m-0 mb-1",children:"Recent Simulations"}),e.jsx("p",{className:"text-sm text-gray-500 m-0",children:h.length>0?`Latest ${h.length} captured screenshot${h.length!==1?"s":""}`:"No simulations captured yet"})]})}),h.length>0&&!o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-6 mb-5",children:X.map(s=>e.jsxs("div",{children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center bg-purple-100",children:e.jsx(b,{size:16,style:{color:"#8B5CF6"}})}),e.jsx(m,{to:`/entity/${s.entitySha}`,className:"text-sm font-semibold text-gray-900 no-underline hover:text-gray-700 transition-colors",children:s.entityName})]}),e.jsx("div",{className:"grid grid-cols-4 gap-3",children:s.scenarios.map((t,l)=>e.jsx(m,{to:t.scenarioId?`/entity/${t.entitySha}/scenarios/${t.scenarioId}`:`/entity/${t.entitySha}`,className:"aspect-4/3 border border-gray-200 rounded-lg overflow-hidden bg-gray-50 transition-all flex items-center justify-center hover:scale-105",onMouseEnter:a=>{a.currentTarget.style.borderColor="#005C75",a.currentTarget.style.boxShadow="0 4px 12px rgba(0, 92, 117, 0.2)"},onMouseLeave:a=>{a.currentTarget.style.borderColor="#E5E7EB",a.currentTarget.style.boxShadow="none"},title:`${t.scenarioName}`,children:e.jsx(_,{screenshotPath:t.screenshotPath,alt:t.scenarioName,className:"max-w-full max-h-full object-contain object-center"})},l))})]},s.entitySha))}),e.jsx(m,{to:"/simulations",className:"block text-center p-3 rounded-lg no-underline font-semibold text-sm transition-all",style:{color:"#005C75",backgroundColor:"#F6F9FC"},onMouseEnter:s=>s.currentTarget.style.backgroundColor="#EEF4F8",onMouseLeave:s=>s.currentTarget.style.backgroundColor="#F6F9FC",children:"View All Recent Simulations →"})]}):o?e.jsxs("div",{className:"p-0 bg-white rounded-lg flex flex-col gap-0",children:[f&&e.jsx("div",{className:"p-4 rounded-t-lg",style:{backgroundColor:"#F0F5F8",borderBottom:"2px solid #005C75"},children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-[32px] leading-none",children:e.jsx(ie,{type:"visual"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"text-base font-bold mb-1",style:{color:"#005C75"},children:["Generating Simulations for ",f.name]}),e.jsx("div",{className:"text-[13px] text-gray-500 font-mono overflow-hidden text-ellipsis whitespace-nowrap",children:f.filePath})]})]})}),E?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-emerald-600 font-medium p-4 bg-emerald-50",children:[e.jsx("span",{className:"text-lg",children:"✅"}),e.jsxs("span",{children:["Complete (",N.length," scenario",N.length!==1?"s":"",")"]})]}):S?e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap font-mono text-xs",title:S,children:S}),v&&e.jsx("button",{onClick:()=>A(!0),className:"px-2 py-1.5 bg-gray-500 text-white border-none rounded-md text-[13px] font-medium cursor-pointer transition-all whitespace-nowrap self-start hover:bg-gray-600 hover:-translate-y-px",title:"View analysis logs",children:"📋 Logs"})]}):i.state!=="idle"?e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap",children:"Initializing analysis..."})]}):e.jsxs("div",{className:"flex items-center justify-between gap-1.5 text-sm font-medium p-4 bg-gray-50",style:{color:"#005C75"},children:[e.jsx(w,{size:18,className:"animate-spin shrink-0"}),e.jsx("span",{className:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap",children:"Starting analysis..."})]}),N.length>0&&e.jsx("div",{className:"flex gap-2 flex-wrap p-4 bg-white border-t border-gray-200",children:N.slice(0,8).map((s,t)=>{const l=s.metadata?.screenshotPaths?.[0],a=q.find(p=>p.name===s.name),n=a?.screenshotStartedAt&&!a?.screenshotFinishedAt;return l?e.jsx(m,{to:`/entity/${o}`,className:"w-20 h-15 border-2 border-gray-200 rounded overflow-hidden bg-gray-50 cursor-pointer transition-all flex items-center justify-center no-underline hover:border-blue-600 hover:scale-105 hover:shadow-md",children:e.jsx(_,{screenshotPath:l,alt:s.name,title:s.name,className:"max-w-full max-h-full object-contain object-center"})},t):e.jsx("div",{className:"w-20 h-15 border-2 border-dashed border-gray-300 rounded bg-gray-50 flex items-center justify-center text-2xl",title:`Capturing ${s.name}...`,children:e.jsx("span",{className:n?"animate-pulse":"text-gray-400",children:n?"⋯":"⏹️"})},t)})})]}):e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsxs("div",{className:"py-12 px-6 text-center bg-gray-50 rounded-lg w-full flex flex-col items-center justify-center min-h-[200px]",children:[e.jsx("div",{className:"mb-4 bg-[#efefef] rounded-lg p-3",children:e.jsx(b,{size:28,style:{color:"#999999"},strokeWidth:1.5})}),e.jsx("p",{className:"text-gray-700 m-0 font-semibold",children:"Start by analyzing your first component below."})]}),(y?.length??0)>0?e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-col gap-3 mt-6 w-full",children:(o&&f?[f]:y||[]).map(s=>e.jsx("div",{className:"flex flex-col gap-3",children:e.jsxs("div",{className:"flex items-center gap-4 p-4 bg-white border border-gray-200 rounded-lg transition-colors",style:{borderLeft:"4px solid #8B5CF6"},onMouseEnter:t=>{t.currentTarget.style.backgroundColor="#F9FAFB"},onMouseLeave:t=>{t.currentTarget.style.backgroundColor="white"},children:[e.jsxs(m,{to:`/entity/${s.sha}`,className:"flex items-center gap-4 flex-1 min-w-0 no-underline",children:[e.jsx("div",{className:"shrink-0 rounded-lg p-1.5 flex items-center justify-center bg-purple-100",children:e.jsx(b,{size:16,style:{color:"#8B5CF6"}})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-semibold text-gray-900 text-sm mb-1",children:s.name}),e.jsx("div",{className:"text-xs text-gray-500 font-mono overflow-hidden text-ellipsis whitespace-nowrap",children:s.filePath})]})]}),e.jsx("button",{onClick:()=>O(s.sha,s.filePath||""),disabled:i.state!=="idle"||o!==null,className:"px-4 py-2 text-white border-none rounded text-sm font-medium cursor-pointer transition-all whitespace-nowrap shrink-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:translate-y-0",style:{backgroundColor:"#005C75"},onMouseEnter:t=>t.currentTarget.style.backgroundColor="#004560",onMouseLeave:t=>t.currentTarget.style.backgroundColor="#005C75",title:o?"Please wait for current analysis to complete":"Analyze this entity",children:"Analyze"})]})},s.sha))})}):e.jsx("p",{className:"text-base text-gray-600 m-0 mb-6 leading-relaxed mt-6",children:"Run analysis on your visual components to create simulations and capture screenshots"})]})]})]}),Z&&v&&e.jsx(re,{projectSlug:v,onClose:()=>A(!1)})]})})});export{Se as default,ke as meta};