forgebook 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) hide show
  1. package/README.md +914 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +30 -12
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PropFields.d.ts +3 -1
  307. package/dist/src/shell/PropFields.js +9 -6
  308. package/dist/src/shell/PropRows.d.ts +23 -2
  309. package/dist/src/shell/PropRows.js +58 -19
  310. package/dist/src/shell/PropsTab.d.ts +12 -5
  311. package/dist/src/shell/PropsTab.js +9 -21
  312. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  313. package/dist/src/shell/RefStoryPage.js +123 -0
  314. package/dist/src/shell/SearchPanel.js +51 -24
  315. package/dist/src/shell/Shell.d.ts +18 -0
  316. package/dist/src/shell/Shell.js +137 -22
  317. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  318. package/dist/src/shell/ShortcutHelp.js +66 -0
  319. package/dist/src/shell/Sidebar.d.ts +17 -4
  320. package/dist/src/shell/Sidebar.js +92 -41
  321. package/dist/src/shell/SidebarDocs.js +2 -2
  322. package/dist/src/shell/SidebarEntries.js +5 -3
  323. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  324. package/dist/src/shell/SidebarHandle.js +4 -4
  325. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  326. package/dist/src/shell/SidebarRefs.js +99 -0
  327. package/dist/src/shell/SidebarSearch.js +37 -9
  328. package/dist/src/shell/SignatureReference.js +3 -1
  329. package/dist/src/shell/Stage.d.ts +10 -2
  330. package/dist/src/shell/Stage.js +29 -49
  331. package/dist/src/shell/StatusBadges.d.ts +54 -0
  332. package/dist/src/shell/StatusBadges.js +77 -0
  333. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  334. package/dist/src/shell/StoryCodeBlock.js +7 -6
  335. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  336. package/dist/src/shell/SwitchGallery.js +17 -0
  337. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  338. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  339. package/dist/src/shell/TagFilter.d.ts +24 -0
  340. package/dist/src/shell/TagFilter.js +45 -0
  341. package/dist/src/shell/TagViews.d.ts +39 -0
  342. package/dist/src/shell/TagViews.js +20 -0
  343. package/dist/src/shell/Toolbar.d.ts +4 -1
  344. package/dist/src/shell/Toolbar.js +17 -7
  345. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  346. package/dist/src/shell/ToolbarControl.js +23 -6
  347. package/dist/src/shell/ViewMenuPanel.js +6 -1
  348. package/dist/src/shell/argChecks.d.ts +22 -0
  349. package/dist/src/shell/argChecks.js +20 -0
  350. package/dist/src/shell/asideStory.js +7 -2
  351. package/dist/src/shell/audienceSections.css +9 -9
  352. package/dist/src/shell/catalogueContext.d.ts +1 -1
  353. package/dist/src/shell/catalogueContext.js +6 -1
  354. package/dist/src/shell/codeSpans.d.ts +27 -0
  355. package/dist/src/shell/codeSpans.js +76 -0
  356. package/dist/src/shell/compareVariants.d.ts +4 -2
  357. package/dist/src/shell/compareVariants.js +16 -8
  358. package/dist/src/shell/composition.d.ts +23 -0
  359. package/dist/src/shell/composition.js +26 -0
  360. package/dist/src/shell/controlCycle.d.ts +1 -1
  361. package/dist/src/shell/controlCycle.js +3 -2
  362. package/dist/src/shell/customControls.d.ts +55 -0
  363. package/dist/src/shell/customControls.js +70 -0
  364. package/dist/src/shell/docPage.css +22 -22
  365. package/dist/src/shell/dockTabs.d.ts +19 -3
  366. package/dist/src/shell/dockTabs.js +28 -20
  367. package/dist/src/shell/embed.css +7 -7
  368. package/dist/src/shell/framesOrigin.d.ts +7 -0
  369. package/dist/src/shell/framesOrigin.js +1 -1
  370. package/dist/src/shell/galleryPlace.d.ts +20 -0
  371. package/dist/src/shell/galleryPlace.js +26 -0
  372. package/dist/src/shell/icons.d.ts +1 -0
  373. package/dist/src/shell/icons.js +1 -0
  374. package/dist/src/shell/keyboard.d.ts +14 -12
  375. package/dist/src/shell/keyboard.js +21 -6
  376. package/dist/src/shell/laterStrings.d.ts +29 -0
  377. package/dist/src/shell/laterStrings.js +42 -3
  378. package/dist/src/shell/mountShell.js +3 -0
  379. package/dist/src/shell/pageStrings.d.ts +4 -0
  380. package/dist/src/shell/pageStrings.js +4 -0
  381. package/dist/src/shell/pageTagView.d.ts +18 -0
  382. package/dist/src/shell/pageTagView.js +10 -0
  383. package/dist/src/shell/playMemory.d.ts +14 -0
  384. package/dist/src/shell/playMemory.js +8 -0
  385. package/dist/src/shell/propNotes.d.ts +23 -0
  386. package/dist/src/shell/propNotes.js +37 -0
  387. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  388. package/dist/src/shell/refIndexLoad.js +38 -0
  389. package/dist/src/shell/refParts.d.ts +34 -0
  390. package/dist/src/shell/refParts.js +9 -0
  391. package/dist/src/shell/refStory.css +21 -0
  392. package/dist/src/shell/refStrings.d.ts +13 -0
  393. package/dist/src/shell/refStrings.js +21 -0
  394. package/dist/src/shell/search.css +11 -11
  395. package/dist/src/shell/shell.css +348 -168
  396. package/dist/src/shell/shellScheme.js +2 -2
  397. package/dist/src/shell/shortcutHelp.css +64 -0
  398. package/dist/src/shell/stageArgs.d.ts +53 -0
  399. package/dist/src/shell/stageArgs.js +64 -0
  400. package/dist/src/shell/statusBadges.css +51 -0
  401. package/dist/src/shell/strings.d.ts +7 -16
  402. package/dist/src/shell/strings.js +12 -17
  403. package/dist/src/shell/switchGallery.css +104 -0
  404. package/dist/src/shell/tagFilter.css +46 -0
  405. package/dist/src/shell/tagView.d.ts +20 -0
  406. package/dist/src/shell/tagView.js +10 -0
  407. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  408. package/dist/src/shell/useAddressArgs.js +56 -11
  409. package/dist/src/shell/useControlKeys.js +2 -2
  410. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  411. package/dist/src/shell/useEditedProblems.js +40 -0
  412. package/dist/src/shell/useFrameMessages.js +3 -0
  413. package/dist/src/shell/useListedTree.d.ts +13 -0
  414. package/dist/src/shell/useListedTree.js +32 -0
  415. package/dist/src/shell/usePageFrames.js +2 -2
  416. package/dist/src/shell/usePopover.d.ts +5 -0
  417. package/dist/src/shell/usePopover.js +7 -1
  418. package/dist/src/shell/useRefIndex.d.ts +22 -0
  419. package/dist/src/shell/useRefIndex.js +36 -0
  420. package/dist/src/shell/useScrollStops.d.ts +20 -0
  421. package/dist/src/shell/useScrollStops.js +41 -0
  422. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  423. package/dist/src/shell/useShortcutHelp.js +32 -0
  424. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  425. package/dist/src/shell/useSidebarOverlay.js +12 -4
  426. package/dist/src/shell/useStoryCode.d.ts +2 -1
  427. package/dist/src/shell/useStoryCode.js +12 -7
  428. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  429. package/dist/src/shell/useToolbarLayout.js +2 -2
  430. package/dist/src/shell/useWorstCase.d.ts +8 -2
  431. package/dist/src/shell/useWorstCase.js +2 -2
  432. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  433. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  434. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  435. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  436. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  437. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  438. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  439. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  440. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  441. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  442. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  443. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  444. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  445. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  446. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  447. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  448. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  449. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  450. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  451. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  452. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  453. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  454. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  455. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  456. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  457. package/dist/src/shell/worstArgs.d.ts +8 -5
  458. package/dist/src/shell/worstArgs.js +14 -7
  459. package/dist/src/shellTheme.d.ts +1 -1
  460. package/dist/src/shellTheme.js +15 -1
  461. package/dist/src/shellTheme.types.d.ts +4 -0
  462. package/dist/src/shellWord.d.ts +12 -0
  463. package/dist/src/shellWord.js +15 -0
  464. package/dist/src/sourceFiles.js +2 -1
  465. package/dist/src/storyArgTypes.d.ts +57 -0
  466. package/dist/src/storyArgTypes.js +195 -0
  467. package/dist/src/storyBackground.js +14 -3
  468. package/dist/src/storyCheck.d.ts +85 -3
  469. package/dist/src/storyCheck.js +23 -1
  470. package/dist/src/storyCodeText.d.ts +46 -0
  471. package/dist/src/storyCodeText.js +27 -0
  472. package/dist/src/storyControls.d.ts +100 -0
  473. package/dist/src/storyControls.js +100 -0
  474. package/dist/src/storyStatuses.d.ts +55 -0
  475. package/dist/src/storyStatuses.js +104 -0
  476. package/dist/src/storyTagNames.d.ts +25 -0
  477. package/dist/src/storyTagNames.js +25 -0
  478. package/dist/src/storyTags.d.ts +29 -0
  479. package/dist/src/storyTags.js +85 -0
  480. package/dist/src/storyTree.d.ts +13 -0
  481. package/dist/src/storyTree.js +24 -4
  482. package/dist/src/storybookArgs.d.ts +24 -0
  483. package/dist/src/storybookArgs.js +185 -0
  484. package/dist/src/switches.d.ts +66 -3
  485. package/dist/src/switches.js +42 -1
  486. package/dist/src/valueSchema.d.ts +28 -0
  487. package/dist/src/valueSchema.js +196 -0
  488. package/dist/src/valueShape.d.ts +94 -0
  489. package/dist/src/valueShape.js +25 -0
  490. package/dist/src/viewState.d.ts +8 -3
  491. package/dist/src/viewState.js +27 -10
  492. package/dist/src/vite/adapter.d.ts +40 -2
  493. package/dist/src/vite/adapter.js +1 -0
  494. package/dist/src/vite/agent.types.d.ts +347 -7
  495. package/dist/src/vite/agentApi.d.ts +23 -0
  496. package/dist/src/vite/agentApi.js +90 -17
  497. package/dist/src/vite/agentIndex.d.ts +0 -2
  498. package/dist/src/vite/agentIndex.js +5 -6
  499. package/dist/src/vite/agentRoutes.d.ts +20 -1
  500. package/dist/src/vite/agentRoutes.js +106 -65
  501. package/dist/src/vite/agentStatuses.d.ts +42 -0
  502. package/dist/src/vite/agentStatuses.js +67 -0
  503. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  504. package/dist/src/vite/agentStoryCode.js +38 -0
  505. package/dist/src/vite/agentVisibility.d.ts +47 -0
  506. package/dist/src/vite/agentVisibility.js +174 -0
  507. package/dist/src/vite/appAudit.d.ts +134 -0
  508. package/dist/src/vite/appAudit.js +333 -0
  509. package/dist/src/vite/appBuildOption.d.ts +53 -0
  510. package/dist/src/vite/appBuildOption.js +55 -0
  511. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  512. package/dist/src/vite/appTokenFiles.js +433 -0
  513. package/dist/src/vite/appTokens.d.ts +23 -0
  514. package/dist/src/vite/appTokens.js +275 -0
  515. package/dist/src/vite/builtTexts.d.ts +10 -0
  516. package/dist/src/vite/builtTexts.js +59 -22
  517. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  518. package/dist/src/vite/catalogueConfig.js +15 -3
  519. package/dist/src/vite/changeCoverage.d.ts +74 -0
  520. package/dist/src/vite/changeCoverage.js +120 -0
  521. package/dist/src/vite/changedRoute.d.ts +30 -0
  522. package/dist/src/vite/changedRoute.js +197 -0
  523. package/dist/src/vite/checkCode.d.ts +105 -3
  524. package/dist/src/vite/checkCode.js +323 -36
  525. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  526. package/dist/src/vite/checkoutWatch.js +287 -0
  527. package/dist/src/vite/closeWatch.d.ts +8 -0
  528. package/dist/src/vite/closeWatch.js +1 -1
  529. package/dist/src/vite/componentCache.d.ts +8 -0
  530. package/dist/src/vite/componentCache.js +66 -0
  531. package/dist/src/vite/componentGraph.d.ts +71 -0
  532. package/dist/src/vite/componentGraph.js +133 -0
  533. package/dist/src/vite/componentRules.d.ts +33 -0
  534. package/dist/src/vite/componentRules.js +105 -0
  535. package/dist/src/vite/componentScan.d.ts +69 -0
  536. package/dist/src/vite/componentScan.js +418 -0
  537. package/dist/src/vite/compositionCheck.d.ts +15 -0
  538. package/dist/src/vite/compositionCheck.js +243 -0
  539. package/dist/src/vite/config.d.ts +32 -1
  540. package/dist/src/vite/configFile.d.ts +14 -2
  541. package/dist/src/vite/configFile.js +124 -40
  542. package/dist/src/vite/configKeys.d.ts +15 -0
  543. package/dist/src/vite/configKeys.js +171 -0
  544. package/dist/src/vite/configLoadError.d.ts +23 -0
  545. package/dist/src/vite/configLoadError.js +71 -0
  546. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  547. package/dist/src/vite/cssDeclarations.js +290 -0
  548. package/dist/src/vite/cssImports.d.ts +14 -0
  549. package/dist/src/vite/cssImports.js +48 -0
  550. package/dist/src/vite/cssReferences.d.ts +54 -0
  551. package/dist/src/vite/cssReferences.js +157 -0
  552. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  553. package/dist/src/vite/cssTokenValues.js +233 -0
  554. package/dist/src/vite/designTokens.d.ts +24 -0
  555. package/dist/src/vite/designTokens.js +5 -1
  556. package/dist/src/vite/docsExtractor.d.ts +9 -3
  557. package/dist/src/vite/docsExtractor.js +11 -3
  558. package/dist/src/vite/docsProgram.d.ts +17 -4
  559. package/dist/src/vite/docsProgram.js +52 -11
  560. package/dist/src/vite/docsWorker.js +7 -2
  561. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  562. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  563. package/dist/src/vite/fileImports.d.ts +17 -0
  564. package/dist/src/vite/fileImports.js +57 -0
  565. package/dist/src/vite/findComponent.d.ts +10 -2
  566. package/dist/src/vite/findComponent.js +27 -22
  567. package/dist/src/vite/findRoute.js +3 -2
  568. package/dist/src/vite/forcedStates.d.ts +9 -2
  569. package/dist/src/vite/forcedStates.js +12 -3
  570. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  571. package/dist/src/vite/forgebookPlugin.js +52 -72
  572. package/dist/src/vite/frameErrors.d.ts +19 -0
  573. package/dist/src/vite/frameErrors.js +70 -0
  574. package/dist/src/vite/framesServer.d.ts +12 -0
  575. package/dist/src/vite/framesServer.js +21 -4
  576. package/dist/src/vite/functionComponentDocs.js +81 -12
  577. package/dist/src/vite/generatedModules.js +4 -2
  578. package/dist/src/vite/gitChange.d.ts +38 -5
  579. package/dist/src/vite/gitChange.js +71 -11
  580. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  581. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  582. package/dist/src/vite/hotSnippets.d.ts +38 -14
  583. package/dist/src/vite/hotSnippets.js +137 -39
  584. package/dist/src/vite/importedNames.d.ts +37 -0
  585. package/dist/src/vite/importedNames.js +138 -0
  586. package/dist/src/vite/indexFields.d.ts +6 -0
  587. package/dist/src/vite/indexFields.js +21 -0
  588. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  589. package/dist/src/vite/indexStoryFile.js +22 -157
  590. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  591. package/dist/src/vite/jsxCallSites.js +200 -0
  592. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  593. package/dist/src/vite/jsxInScripts.js +138 -0
  594. package/dist/src/vite/jsxTree.d.ts +20 -0
  595. package/dist/src/vite/jsxTree.js +163 -0
  596. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  597. package/dist/src/vite/lineAndColumn.js +18 -0
  598. package/dist/src/vite/lookAlikes.d.ts +65 -0
  599. package/dist/src/vite/lookAlikes.js +228 -0
  600. package/dist/src/vite/nearestToken.d.ts +17 -0
  601. package/dist/src/vite/nearestToken.js +9 -2
  602. package/dist/src/vite/packageEntries.d.ts +42 -0
  603. package/dist/src/vite/packageEntries.js +127 -0
  604. package/dist/src/vite/pages.d.ts +9 -1
  605. package/dist/src/vite/pages.js +108 -4
  606. package/dist/src/vite/pluginConfig.js +4 -0
  607. package/dist/src/vite/pluginIds.d.ts +2 -0
  608. package/dist/src/vite/pluginIds.js +5 -1
  609. package/dist/src/vite/pluginModules.d.ts +81 -11
  610. package/dist/src/vite/pluginModules.js +109 -21
  611. package/dist/src/vite/prebundled.d.ts +57 -15
  612. package/dist/src/vite/prebundled.js +80 -0
  613. package/dist/src/vite/previewTags.d.ts +25 -0
  614. package/dist/src/vite/previewTags.js +56 -0
  615. package/dist/src/vite/projectFiles.d.ts +54 -0
  616. package/dist/src/vite/projectFiles.js +116 -0
  617. package/dist/src/vite/projectPostcss.d.ts +70 -0
  618. package/dist/src/vite/projectPostcss.js +250 -0
  619. package/dist/src/vite/propDocs.d.ts +12 -0
  620. package/dist/src/vite/propDocs.js +130 -58
  621. package/dist/src/vite/propKind.d.ts +40 -0
  622. package/dist/src/vite/propKind.js +71 -0
  623. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  624. package/dist/src/vite/propTypeNotes.js +51 -0
  625. package/dist/src/vite/publishedExports.d.ts +27 -0
  626. package/dist/src/vite/publishedExports.js +298 -0
  627. package/dist/src/vite/realFolder.d.ts +6 -0
  628. package/dist/src/vite/realFolder.js +25 -0
  629. package/dist/src/vite/refsConfig.d.ts +39 -0
  630. package/dist/src/vite/refsConfig.js +54 -0
  631. package/dist/src/vite/reuseCheck.d.ts +45 -0
  632. package/dist/src/vite/reuseCheck.js +260 -0
  633. package/dist/src/vite/runningVersions.d.ts +33 -0
  634. package/dist/src/vite/runningVersions.js +25 -0
  635. package/dist/src/vite/scriptProblems.d.ts +60 -0
  636. package/dist/src/vite/scriptProblems.js +155 -0
  637. package/dist/src/vite/searchModule.js +3 -2
  638. package/dist/src/vite/searchRoute.js +4 -2
  639. package/dist/src/vite/shapeDocs.d.ts +36 -0
  640. package/dist/src/vite/shapeDocs.js +177 -0
  641. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  642. package/dist/src/vite/singleFileComponent.js +83 -0
  643. package/dist/src/vite/sourceText.d.ts +34 -0
  644. package/dist/src/vite/sourceText.js +72 -0
  645. package/dist/src/vite/sourceTokens.d.ts +7 -0
  646. package/dist/src/vite/sourceTokens.js +7 -2
  647. package/dist/src/vite/stackLines.d.ts +49 -0
  648. package/dist/src/vite/stackLines.js +96 -0
  649. package/dist/src/vite/storyCode.d.ts +22 -7
  650. package/dist/src/vite/storyCode.js +263 -37
  651. package/dist/src/vite/storyCoverage.d.ts +48 -0
  652. package/dist/src/vite/storyCoverage.js +179 -0
  653. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  654. package/dist/src/vite/storyFilesModule.js +105 -15
  655. package/dist/src/vite/storyPatterns.d.ts +31 -0
  656. package/dist/src/vite/storyPatterns.js +140 -5
  657. package/dist/src/vite/storyReach.d.ts +10 -2
  658. package/dist/src/vite/storyReach.js +15 -11
  659. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  660. package/dist/src/vite/storyTopLevel.js +146 -0
  661. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  662. package/dist/src/vite/storylessRoutes.js +210 -19
  663. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  664. package/dist/src/vite/switchValuesCheck.js +164 -0
  665. package/dist/src/vite/switchesDocument.d.ts +15 -0
  666. package/dist/src/vite/switchesDocument.js +47 -0
  667. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  668. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  669. package/dist/src/vite/textImports.d.ts +15 -0
  670. package/dist/src/vite/textImports.js +58 -0
  671. package/dist/src/vite/textModules.d.ts +6 -5
  672. package/dist/src/vite/textModules.js +13 -8
  673. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  674. package/dist/src/vite/tokenAnswers.js +11 -7
  675. package/dist/src/vite/typeParameters.d.ts +83 -0
  676. package/dist/src/vite/typeParameters.js +270 -0
  677. package/dist/src/vite/unionProps.d.ts +37 -0
  678. package/dist/src/vite/unionProps.js +121 -0
  679. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  680. package/dist/src/vite/unresolvedTokens.js +193 -0
  681. package/dist/src/vite/usageGraph.js +10 -52
  682. package/dist/src/vite/usageGuidance.d.ts +9 -2
  683. package/dist/src/vite/usageGuidance.js +36 -8
  684. package/dist/src/vite/usageImports.d.ts +35 -0
  685. package/dist/src/vite/usageImports.js +280 -0
  686. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  687. package/dist/src/vite/visibilityRoute.js +320 -0
  688. package/dist/src/worstCase.d.ts +2 -0
  689. package/dist/src/worstCase.js +2 -0
  690. package/package.json +28 -8
@@ -0,0 +1,50 @@
1
+ /**
2
+ * How a story run waits for what its framework says the story loads, and how the story ended: what a play starts from and
3
+ * what the frame's status says.
4
+ *
5
+ * @remarks
6
+ * The frame only asks (`MountedStory.settled`); reading what is pending is the framework's. A framework with nothing to
7
+ * say costs nothing here, and its stories are ready once drawn.
8
+ *
9
+ * @module
10
+ */
11
+ import type { ContentState, MountedStory } from "./renderer.ts";
12
+ import type { LoadedStory } from "./storyModule.ts";
13
+ /** How a story's first drawing ended: what the frame's status says. */
14
+ export type StoryOutcome =
15
+ /** It is shown, with everything it waits for, and its play is over. */
16
+ {
17
+ readonly status: "ready";
18
+ }
19
+ /** It threw meanwhile, and shows its error. */
20
+ | {
21
+ readonly status: "error";
22
+ }
23
+ /** The wait ended with something still loading, or the framework cannot tell: this says which. */
24
+ | {
25
+ readonly status: "pending";
26
+ readonly reason: string;
27
+ };
28
+ /**
29
+ * Waits for what a story loads, as it says it should be waited for.
30
+ *
31
+ * @param mounted - the story, drawn.
32
+ * @param story - its settings.
33
+ * @param timeout - the most to wait, in milliseconds; the story's bound by default.
34
+ */
35
+ export declare const contentOf: (mounted: MountedStory, { suspense }: LoadedStory, timeout?: number) => Promise<ContentState>;
36
+ /**
37
+ * Waits for a story's first drawing and for what it loads, which share one bound, as what a play starts from.
38
+ *
39
+ * @param mounted - the story.
40
+ * @param story - its settings.
41
+ */
42
+ export declare const contentBeforePlay: (mounted: MountedStory, story: LoadedStory) => Promise<ContentState>;
43
+ /**
44
+ * How a story ended, by what it waited for and whether it shows an error.
45
+ *
46
+ * @param content - the last look at what it loads.
47
+ * @param isFailed - whether it shows an error now.
48
+ * @param timeout - how long the frame waited, in milliseconds.
49
+ */
50
+ export declare const outcomeOf: (content: ContentState, isFailed: boolean, timeout: number) => StoryOutcome;
@@ -0,0 +1,73 @@
1
+ /** What a story that waits for nothing has to say. */
2
+ const SETTLED = { state: "settled" };
3
+ /**
4
+ * Waits for what a story loads, as it says it should be waited for.
5
+ *
6
+ * @param mounted - the story, drawn.
7
+ * @param story - its settings.
8
+ * @param timeout - the most to wait, in milliseconds; the story's bound by default.
9
+ */
10
+ export const contentOf = async (mounted, { suspense }, timeout = suspense.timeout) => {
11
+ if (suspense.isExpected || mounted.settled === undefined)
12
+ return SETTLED;
13
+ try {
14
+ return await mounted.settled(timeout);
15
+ }
16
+ catch (error) {
17
+ // an adapter that fails while it looks has not looked: never read as nothing pending, and a frame still answers
18
+ return { state: "unknown", reason: error instanceof Error ? error.message : String(error) };
19
+ }
20
+ };
21
+ /**
22
+ * Waits for a story's first drawing, within its bound, for a framework that has a wait to bound: a part that suspends
23
+ * with no boundary around it holds React's first commit, and that must end as a frame's answer, not as its silence. A
24
+ * framework with no wait keeps the frame waiting as long as it draws (a compiler loading on first use).
25
+ *
26
+ * @param mounted - the story.
27
+ * @param story - its settings.
28
+ * @returns what it still waits for, none once drawn.
29
+ */
30
+ const drawnWithin = async (mounted, { suspense }) => {
31
+ if (suspense.isExpected || mounted.settled === undefined) {
32
+ await mounted.drawn;
33
+ return SETTLED;
34
+ }
35
+ let timer;
36
+ const late = new Promise((resolve) => {
37
+ timer = setTimeout(() => resolve({ state: "waiting", reason: "The story's first drawing still waits for what it loads" }), suspense.timeout);
38
+ });
39
+ const drawn = mounted.drawn.then(() => SETTLED);
40
+ return Promise.race([drawn, late]).finally(() => clearTimeout(timer));
41
+ };
42
+ /**
43
+ * Waits for a story's first drawing and for what it loads, which share one bound, as what a play starts from.
44
+ *
45
+ * @param mounted - the story.
46
+ * @param story - its settings.
47
+ */
48
+ export const contentBeforePlay = async (mounted, story) => {
49
+ const start = performance.now();
50
+ const first = await drawnWithin(mounted, story);
51
+ if (first.state !== "settled")
52
+ return first;
53
+ return contentOf(mounted, story, Math.max(0, story.suspense.timeout - (performance.now() - start)));
54
+ };
55
+ /**
56
+ * How a story ended, by what it waited for and whether it shows an error.
57
+ *
58
+ * @param content - the last look at what it loads.
59
+ * @param isFailed - whether it shows an error now.
60
+ * @param timeout - how long the frame waited, in milliseconds.
61
+ */
62
+ export const outcomeOf = (content, isFailed, timeout) => {
63
+ if (isFailed)
64
+ return { status: "error" };
65
+ if (content.state === "settled")
66
+ return { status: "ready" };
67
+ if (content.state === "unknown")
68
+ return { status: "pending", reason: content.reason };
69
+ return {
70
+ status: "pending",
71
+ reason: `${content.reason} after ${timeout} ms. A story meant to stay there sets parameters.suspense.expected; parameters.suspense.timeout waits longer`
72
+ };
73
+ };
@@ -58,6 +58,15 @@ export type LoadedStory = {
58
58
  readonly layout: NonNullable<StoryParameters["layout"]>;
59
59
  /** A Live story's clock start, in ms since the Unix epoch (`parameters.clock`); none for a still. */
60
60
  readonly clockStart: number | undefined;
61
+ /** How the frame waits for a loading state (`parameters.suspense`). */
62
+ readonly suspense: StorySuspense;
63
+ };
64
+ /** How the frame waits for what a story loads before it says the story is ready. */
65
+ export type StorySuspense = {
66
+ /** Whether the story is meant to stay in a loading state: the frame does not wait, and it is simply ready. */
67
+ readonly isExpected: boolean;
68
+ /** The most to wait, in milliseconds. */
69
+ readonly timeout: number;
61
70
  };
62
71
  /**
63
72
  * The meta and one story of a loaded module, merged.
@@ -14,7 +14,12 @@
14
14
  *
15
15
  * @module
16
16
  */
17
- import { controlsOfParameter, mergedArgTypes } from "../argTypes.js";
17
+ import { controlsOfParameter, mergedArgTypes } from "../storyArgTypes.js";
18
+ /**
19
+ * How long a frame waits by default, in milliseconds: a lazy module on a dev server still preparing its dependencies
20
+ * takes seconds, and `forgebook check` stops listening to a silent frame at 30.
21
+ */
22
+ const SUSPENSE_TIMEOUT = 10_000;
18
23
  /** Whether a value is a plain object. */
19
24
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20
25
  /**
@@ -98,6 +103,18 @@ const ownOrMeta = (story, meta, name) => {
98
103
  const fromMeta = meta[name];
99
104
  return isFunction(fromMeta) ? fromMeta : undefined;
100
105
  };
106
+ /**
107
+ * How the frame waits for a story, from its parameter; a timeout that is no time at all is the default's.
108
+ *
109
+ * @param setting - `parameters.suspense`.
110
+ */
111
+ const suspenseOf = (setting) => {
112
+ const timeout = isRecord(setting) ? setting["timeout"] : undefined;
113
+ return {
114
+ isExpected: isRecord(setting) && setting["expected"] === true,
115
+ timeout: typeof timeout === "number" && timeout > 0 && Number.isFinite(timeout) ? timeout : SUSPENSE_TIMEOUT
116
+ };
117
+ };
101
118
  /**
102
119
  * The meta and one story of a loaded module, merged.
103
120
  *
@@ -146,7 +163,8 @@ export const readStory = (module, exportName, preview = NO_PREVIEW) => {
146
163
  ...(isRecord(story["globals"]) ? story["globals"] : {})
147
164
  },
148
165
  layout: layout === "centered" || layout === "fullscreen" ? layout : "padded",
149
- clockStart: clockStartOf(parameters["clock"])
166
+ clockStart: clockStartOf(parameters["clock"]),
167
+ suspense: suspenseOf(parameters["suspense"])
150
168
  };
151
169
  };
152
170
  /** The preview of a catalogue that has none. */
@@ -13,12 +13,14 @@
13
13
  */
14
14
  import { type StoryTextTable } from "@forgebook/story-format/texts";
15
15
  import type { Matrix } from "../matrix.ts";
16
- import type { PanelArgs } from "../messages.ts";
16
+ import type { PlayStepCommand } from "../messages.ts";
17
+ import { type PanelArgs } from "../messages.ts";
17
18
  import type { PlayTrace } from "../playTrace.ts";
18
19
  import type { ClockState } from "../storyClock.ts";
19
20
  import type { FrameClock } from "./frameClock.ts";
20
- import { type PlayToolsLoader } from "./playStory.ts";
21
+ import type { PlayToolsLoader } from "./playStory.ts";
21
22
  import type { FrameRenderer, StoryDrawing, StoryIdentity } from "./renderer.ts";
23
+ import { type StoryOutcome } from "./storyContent.ts";
22
24
  import type { LoadedBeforeEach, LoadedStory } from "./storyModule.ts";
23
25
  /** What the shell can do to a running story. */
24
26
  export type StoryControls = {
@@ -32,6 +34,8 @@ export type StoryControls = {
32
34
  readonly setMatrix: (matrix: Matrix | undefined) => void;
33
35
  /** Mounts the story again, so its play function runs again. */
34
36
  readonly playAgain: () => void;
37
+ /** Runs the play again on a fresh mount, or steps through it: from the start, to its next action, or on to its end. */
38
+ readonly stepPlay: (command: PlayStepCommand) => void;
35
39
  /** Sets whether the story clock runs, and how fast. */
36
40
  readonly setClock: (state: ClockState) => void;
37
41
  /**
@@ -50,6 +54,8 @@ export type StoryRunOptions = {
50
54
  readonly identity: StoryIdentity;
51
55
  /** Loads the play tools the project installed, for the first play; none without them. */
52
56
  readonly playTools?: PlayToolsLoader;
57
+ /** Whether a mount runs the play by itself: off (the address's `play=off`), only "run it" does. `true` by default. */
58
+ readonly playsOnOpen?: boolean;
53
59
  /** What the plugins prepare before every mount, ahead of the story's loaders. */
54
60
  readonly pluginSetups: readonly LoadedBeforeEach[];
55
61
  /** The framework that draws it. */
@@ -65,10 +71,10 @@ export type StoryRunOptions = {
65
71
  /** The panel's values as the story takes them (a named value turned back into the value). */
66
72
  readonly resolveArgs: (args: PanelArgs) => Readonly<Record<string, unknown>>;
67
73
  /**
68
- * Called once with the controls, when the story is first drawn and its play function is over (the frame's ready
69
- * status waits for it, so no check reads a half-played story).
74
+ * Called once with the controls and how the story ended, when the story is first drawn, what it loads came and its
75
+ * play function is over (the frame's status waits for it, so no check reads a half-played or half-loaded story).
70
76
  */
71
- readonly onControlsReady: (controls: StoryControls) => void;
77
+ readonly onControlsReady: (controls: StoryControls, outcome: StoryOutcome) => void;
72
78
  /** Called on every call of a recorded event, with its arguments. */
73
79
  readonly onEvent: (name: string, values: readonly unknown[]) => void;
74
80
  /** What the panel can show of values: those it cannot (a function, an object) stay the frame's alone. */
@@ -78,8 +84,10 @@ export type StoryRunOptions = {
78
84
  * makes, so the panel shows them.
79
85
  */
80
86
  readonly onArgsChange: (args: PanelArgs) => void;
81
- /** Called with the message when the story throws while it is drawn; the frame shows the error instead. */
82
- readonly onError: (message: string) => void;
87
+ /**
88
+ * Called with the message and the stack when the story throws while it is drawn; the frame shows the error instead.
89
+ */
90
+ readonly onError: (message: string, stack: string | undefined) => void;
83
91
  /** Called with the play function's trace after every change. */
84
92
  readonly onTrace: (trace: PlayTrace) => void;
85
93
  };
@@ -12,12 +12,15 @@
12
12
  * @module
13
13
  */
14
14
  import { storyTextOf } from "@forgebook/story-format/texts";
15
- import { actionNames, mappedArgs } from "../argTypes.js";
15
+ import { UNSET_ARG } from "../messages.js";
16
+ import { actionNames, mappedArgs } from "../storyArgTypes.js";
16
17
  import { withStoryTexts } from "../storyTexts.js";
18
+ import { ERROR_MESSAGE_CLASS, ERROR_STACK_CLASS } from "./frameStatus.js";
17
19
  import { matrixLayout } from "./matrixLayout.js";
18
- import { playStory } from "./playStory.js";
20
+ import { heldStepper, runPlay } from "./playStepper.js";
19
21
  import { animationsSettled } from "./settle.js";
20
22
  import { storyCanvas } from "./storyCanvas.js";
23
+ import { contentBeforePlay, contentOf, outcomeOf } from "./storyContent.js";
21
24
  import { prepareStory } from "./storyHooks.js";
22
25
  /**
23
26
  * The error shown in place of a story that threw: its message and its stack.
@@ -30,12 +33,12 @@ const errorElement = (document, error) => {
30
33
  box.className = "forgebook-frame-error";
31
34
  box.setAttribute("role", "alert");
32
35
  const message = document.createElement("p");
33
- message.className = "forgebook-frame-error__message";
36
+ message.className = ERROR_MESSAGE_CLASS;
34
37
  message.textContent = error.message;
35
38
  box.append(message);
36
39
  if (error.stack !== undefined) {
37
40
  const stack = document.createElement("pre");
38
- stack.className = "forgebook-frame-error__stack";
41
+ stack.className = ERROR_STACK_CLASS;
39
42
  stack.textContent = error.stack;
40
43
  box.append(stack);
41
44
  }
@@ -105,6 +108,12 @@ export const runStory = (options) => {
105
108
  let shownError;
106
109
  let mountCount = 0;
107
110
  let hasPlayed = false;
111
+ // what the next mount does with the play: "run it" asks for one, whatever the switch says
112
+ let playsNext = options.playsOnOpen !== false;
113
+ // what the next mount is stepped with, and what the shell's commands reach: each belongs to one mount, so a Replay, a
114
+ // file's edit or a play gone stale neither pauses unasked nor takes a command meant for the one running
115
+ let nextStepper;
116
+ let stepper;
108
117
  let prepared = NOT_PREPARED;
109
118
  let preparing = Promise.resolve();
110
119
  // the story's actions are recorded whatever the shell names: a spy, an `argTypes` action
@@ -169,7 +178,12 @@ export const runStory = (options) => {
169
178
  };
170
179
  args = { ...story.args, ...ownValues, ...panelValues };
171
180
  redraw();
172
- options.onArgsChange(options.panelArgsOf(panelValues));
181
+ // a value the story took away is the panel's "no value": the shell answers with these, over the story's own
182
+ const unset = Object.keys(panelValues).filter((name) => panelValues[name] === undefined);
183
+ options.onArgsChange({
184
+ ...Object.fromEntries(unset.map((name) => [name, UNSET_ARG])),
185
+ ...options.panelArgsOf(panelValues)
186
+ });
173
187
  };
174
188
  const clearError = () => {
175
189
  shownError?.remove();
@@ -185,7 +199,7 @@ export const runStory = (options) => {
185
199
  child.hidden = true;
186
200
  shownError = errorElement(document, error);
187
201
  container.append(shownError);
188
- options.onError(error.message);
202
+ options.onError(error.message, error.stack);
189
203
  };
190
204
  const unmountAll = () => {
191
205
  for (const { story: each } of mounted)
@@ -194,6 +208,18 @@ export const runStory = (options) => {
194
208
  clearError();
195
209
  container.replaceChildren();
196
210
  };
211
+ // run again or stepped through, a play asked for by name plays whatever the switch says
212
+ const stepPlay = (command) => {
213
+ if (command === "next")
214
+ stepper?.next();
215
+ else if (command === "continue")
216
+ stepper?.release();
217
+ else {
218
+ playsNext = true;
219
+ nextStepper = command === "start" ? heldStepper() : undefined;
220
+ mountStory();
221
+ }
222
+ };
197
223
  const controls = {
198
224
  replay: async () => {
199
225
  const mode = story.replay;
@@ -230,7 +256,8 @@ export const runStory = (options) => {
230
256
  matrix = next;
231
257
  mountStory();
232
258
  },
233
- playAgain: () => mountStory(),
259
+ playAgain: () => stepPlay("again"),
260
+ stepPlay,
234
261
  setClock: clock.setState,
235
262
  restartClock: () => {
236
263
  clock.restart();
@@ -253,19 +280,32 @@ export const runStory = (options) => {
253
280
  };
254
281
  const mountAlone = () => {
255
282
  const count = mountCount;
283
+ stepper = nextStepper;
284
+ nextStepper = undefined;
256
285
  const canvas = storyCanvas(document, story);
257
286
  container.append(canvas);
258
287
  const alone = renderer.mount(canvas, drawing({}), showError);
259
288
  mounted = [{ story: alone, values: {} }];
260
- void alone.drawn.then(async () => {
289
+ // a play drives the story, not its fallback; one that shows only the fallback has nothing for it to find
290
+ void contentBeforePlay(alone, story).then(async (loaded) => {
261
291
  // a later mount (Replay, the matrix) replaced this one before it was drawn: its play would drive a gone story
262
292
  if (count !== mountCount)
263
293
  return;
264
- const tools = await playTools();
294
+ const isStuck = loaded.state === "waiting" || shownError !== undefined;
295
+ const play = isStuck ? undefined : playOfMount();
296
+ const tools = play === undefined ? undefined : await playTools();
265
297
  if (count !== mountCount || tools instanceof Error)
266
298
  return;
299
+ const finish = (content) => {
300
+ // a later mount took over meanwhile: it says how the story ended
301
+ if (hasPlayed || count !== mountCount)
302
+ return;
303
+ hasPlayed = true;
304
+ const outcome = outcomeOf(content, shownError !== undefined, story.suspense.timeout);
305
+ options.onControlsReady(controls, outcome);
306
+ };
267
307
  // a failed play still ends the wait; its rejection reaches the page as an error the tests record
268
- void playStory(story.play, {
308
+ void runPlay(play, {
269
309
  ...options.identity,
270
310
  args: shownArgs(),
271
311
  canvasElement: canvas,
@@ -275,13 +315,22 @@ export const runStory = (options) => {
275
315
  loaded: prepared.loaded,
276
316
  parameters: story.parameters
277
317
  }, () => {
278
- if (hasPlayed)
279
- return;
280
- hasPlayed = true;
281
- options.onControlsReady(controls);
282
- }, options.onTrace, tools);
318
+ // what a play did may load something in turn (a tab it opened), which its checks must see too
319
+ if (play === undefined || loaded.state === "unknown")
320
+ finish(loaded);
321
+ else
322
+ void contentOf(alone, story).then(finish);
323
+ }, options.onTrace, tools, stepper);
283
324
  });
284
325
  };
326
+ // what this mount plays: none when the switch keeps the play from running, which the shell is told so it can offer it
327
+ const playOfMount = () => {
328
+ const isWanted = playsNext;
329
+ playsNext = options.playsOnOpen !== false;
330
+ if (!isWanted && story.play !== undefined)
331
+ options.onTrace({ status: "off", steps: [] });
332
+ return isWanted ? story.play : undefined;
333
+ };
285
334
  // the play tools the project installed, loaded for a story with a play; a failure to load them is shown as the
286
335
  // story's error
287
336
  const playTools = async () => {
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The style sheets of the switches' values (`sheet` on a value): the sheets of the values drawn, placed after the
3
+ * source's, the switches' in the order they are declared.
4
+ *
5
+ * @remarks
6
+ * Loaded only by a frame of a catalogue that has any (`mountFrame.ts`). A change keeps the old sheet in the document until
7
+ * the new one has loaded, and says when, so the frame moves the root's attributes at the same moment and the story is
8
+ * never drawn with neither. The reader's next choice overtakes one still loading: only the last one takes the old
9
+ * sheets away.
10
+ *
11
+ * @module
12
+ */
13
+ import { type ViewSwitch } from "../switches.ts";
14
+ import type { SheetsChoice } from "../viewState.ts";
15
+ /** The address of each value's sheet, by `<switch id>=<value>`, as the generated frame gives them. */
16
+ export type ValueSheets = Readonly<Record<string, string>>;
17
+ /**
18
+ * The addresses a view's values draw with, in order; only Styles › Full has them, since Structure and Restyled leave
19
+ * out a theme's look.
20
+ *
21
+ * @param values - the switches' values, the story's fixed ones among them.
22
+ * @param sheets - the Styles setting.
23
+ * @param valueSheets - each value's sheet.
24
+ * @param switches - the catalogue's switches.
25
+ */
26
+ export declare const valueSheetUrls: (values: Readonly<Record<string, string>>, sheets: SheetsChoice, valueSheets: ValueSheets, switches: readonly ViewSwitch[]) => string[];
27
+ /**
28
+ * Shows the sheets of a frame's values, from now on after what the document's head holds.
29
+ *
30
+ * @param document - the frame's document: the source's sheets are already placed.
31
+ * @param onFailed - told a sheet that did not load, with what to say. The frame goes on without it, and choosing the value
32
+ * again tries again.
33
+ * @returns what shows a list of sheets, and answers once they have settled whether it is still the last one asked.
34
+ */
35
+ export declare const valueSheetsIn: (document: Document, onFailed: (message: string) => void) => ((urls: readonly string[]) => Promise<boolean>);
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The style sheets of the switches' values (`sheet` on a value): the sheets of the values drawn, placed after the
3
+ * source's, the switches' in the order they are declared.
4
+ *
5
+ * @remarks
6
+ * Loaded only by a frame of a catalogue that has any (`mountFrame.ts`). A change keeps the old sheet in the document until
7
+ * the new one has loaded, and says when, so the frame moves the root's attributes at the same moment and the story is
8
+ * never drawn with neither. The reader's next choice overtakes one still loading: only the last one takes the old
9
+ * sheets away.
10
+ *
11
+ * @module
12
+ */
13
+ import { shownSwitches } from "../switches.js";
14
+ /**
15
+ * The addresses a view's values draw with, in order; only Styles › Full has them, since Structure and Restyled leave
16
+ * out a theme's look.
17
+ *
18
+ * @param values - the switches' values, the story's fixed ones among them.
19
+ * @param sheets - the Styles setting.
20
+ * @param valueSheets - each value's sheet.
21
+ * @param switches - the catalogue's switches.
22
+ */
23
+ export const valueSheetUrls = (values, sheets, valueSheets, switches) => {
24
+ if (sheets !== "full")
25
+ return [];
26
+ const shown = shownSwitches(values, switches);
27
+ return switches.flatMap((each) => valueSheets[`${each.id}=${shown[each.id] ?? each.default}`] ?? []);
28
+ };
29
+ /**
30
+ * Puts sheets back in their order: an overtaken choice of two switches at once can leave a kept sheet on the wrong side of a
31
+ * new one. A sheet already in place is not touched, since moving a link loads it again.
32
+ *
33
+ * @param head - the document's head.
34
+ * @param end - what the sheets end before.
35
+ * @param links - the sheets, in order.
36
+ */
37
+ const keepOrder = (head, end, links) => {
38
+ let next = end;
39
+ for (const link of links.toReversed()) {
40
+ if (link.nextSibling !== next)
41
+ head.insertBefore(link, next);
42
+ next = link;
43
+ }
44
+ };
45
+ /**
46
+ * Shows the sheets of a frame's values, from now on after what the document's head holds.
47
+ *
48
+ * @param document - the frame's document: the source's sheets are already placed.
49
+ * @param onFailed - told a sheet that did not load, with what to say. The frame goes on without it, and choosing the value
50
+ * again tries again.
51
+ * @returns what shows a list of sheets, and answers once they have settled whether it is still the last one asked.
52
+ */
53
+ export const valueSheetsIn = (document, onFailed) => {
54
+ const { head } = document;
55
+ // what keeps the values' sheets together, whatever the frame adds to the head after them
56
+ const end = document.createComment(" the switches' values' sheets end here ");
57
+ head.append(end);
58
+ const placed = new Map();
59
+ let lastAsked = 0;
60
+ const place = (url, before) => {
61
+ const link = document.createElement("link");
62
+ link.rel = "stylesheet";
63
+ link.href = url;
64
+ const isLoaded = new Promise((resolve) => {
65
+ link.addEventListener("load", () => resolve(true));
66
+ link.addEventListener("error", () => {
67
+ // forgotten, so that choosing the value again asks the server again
68
+ placed.delete(url);
69
+ link.remove();
70
+ onFailed(`The style sheet ${url} did not load`);
71
+ resolve(false);
72
+ });
73
+ });
74
+ head.insertBefore(link, before);
75
+ return { link, isLoaded };
76
+ };
77
+ return async (urls) => {
78
+ lastAsked += 1;
79
+ const asked = lastAsked;
80
+ let before = end;
81
+ // last to first, each new one before the next: a sheet kept where it is keeps the switches' order
82
+ for (const url of urls.toReversed()) {
83
+ const each = placed.get(url) ?? place(url, before);
84
+ placed.set(url, each);
85
+ before = each.link;
86
+ }
87
+ await Promise.all(urls.map((url) => placed.get(url)?.isLoaded));
88
+ if (asked !== lastAsked)
89
+ return false;
90
+ for (const [url, { link }] of placed) {
91
+ if (urls.includes(url))
92
+ continue;
93
+ link.remove();
94
+ placed.delete(url);
95
+ }
96
+ keepOrder(head, end, urls.flatMap((url) => placed.get(url)?.link ?? []));
97
+ return true;
98
+ };
99
+ };
@@ -22,6 +22,26 @@ export declare const RENEWED_MODULE_EVENT = "forgebook:module-renewed";
22
22
  * by their place in the list, in a `CustomEvent` whose detail is `PreviewsRenewal`.
23
23
  */
24
24
  export declare const PREVIEWS_EVENT = "forgebook:previews";
25
+ /**
26
+ * The event an edit of a story file sends when it changes whether the file can be read, and an edit of any other of the
27
+ * project's scripts when it changes whether it parses: from the dev server to the group's module, which hands it on to
28
+ * the page in a `CustomEvent` whose detail is `StoryFileRead`, for the shell to name the file at once. The file stays in the list a page read: its frame keeps what it drew, and its fix draws in
29
+ * place.
30
+ */
31
+ export declare const STORY_FILE_READ_EVENT = "forgebook:story-file-read";
32
+ /** Whether an edited story file can be read now, or another script parses. */
33
+ export type StoryFileRead = {
34
+ /** The file, absolute in Vite's form. */
35
+ readonly file: string;
36
+ /** Why it cannot, naming it with its line and column when they are known; none when it can. */
37
+ readonly problem?: string;
38
+ };
39
+ /**
40
+ * What an event says of an edited story file, when it is that event.
41
+ *
42
+ * @param event - the event.
43
+ */
44
+ export declare const storyFileReadOf: (event: Event) => StoryFileRead | undefined;
25
45
  /** The previews an edit renewed: each one's new module, or `undefined` for one it did not change. */
26
46
  export type PreviewsRenewal = {
27
47
  /** The previews' modules, in the catalogue's order. */
@@ -22,6 +22,29 @@ export const RENEWED_MODULE_EVENT = "forgebook:module-renewed";
22
22
  * by their place in the list, in a `CustomEvent` whose detail is `PreviewsRenewal`.
23
23
  */
24
24
  export const PREVIEWS_EVENT = "forgebook:previews";
25
+ /**
26
+ * The event an edit of a story file sends when it changes whether the file can be read, and an edit of any other of the
27
+ * project's scripts when it changes whether it parses: from the dev server to the group's module, which hands it on to
28
+ * the page in a `CustomEvent` whose detail is `StoryFileRead`, for the shell to name the file at once. The file stays in the list a page read: its frame keeps what it drew, and its fix draws in
29
+ * place.
30
+ */
31
+ export const STORY_FILE_READ_EVENT = "forgebook:story-file-read";
32
+ /**
33
+ * What an event says of an edited story file, when it is that event.
34
+ *
35
+ * @param event - the event.
36
+ */
37
+ export const storyFileReadOf = (event) => {
38
+ if (!(event instanceof CustomEvent))
39
+ return undefined;
40
+ const detail = event.detail;
41
+ if (typeof detail !== "object" || detail === null || !("file" in detail))
42
+ return undefined;
43
+ if (typeof detail.file !== "string")
44
+ return undefined;
45
+ const problem = "problem" in detail && typeof detail.problem === "string" ? detail.problem : undefined;
46
+ return { file: detail.file, ...(problem === undefined ? {} : { problem }) };
47
+ };
25
48
  /**
26
49
  * The previews an event carries, when it is the previews' event.
27
50
  *
@@ -1,22 +1,9 @@
1
- /**
2
- * The JSX of a story drawn from its args: the component with the values the story and the props panel set, as a
3
- * developer would write it, for the Code card. The code writer of every framework written in JSX (React, Preact,
4
- * Solid): each one's `./code` module hands it to the shell.
5
- *
6
- * @remarks
7
- * A text is an attribute in quotes (in braces when it holds a quote), a number or `null` in braces, `true` the bare
8
- * name, `false` in braces, a named value by its name (`icon={IconFolder}`), a list as an array literal
9
- * (`options={["weekly", "monthly"]}`); `children` goes between the tags. Only the values that cross from the frame are
10
- * known (texts, numbers, booleans, `null`, lists of texts and numbers, named values): a function or an element the
11
- * story passes is left out. Pure.
12
- *
13
- * @module
14
- */
15
1
  import type { StoryCodeWriter } from "./frame/renderer.ts";
16
2
  /**
17
3
  * A component's JSX with these args.
18
4
  *
19
5
  * @param component - the component's name (`IconTile`).
20
6
  * @param args - the values, in the order they are written.
7
+ * @param written - the args the story file writes as code, each as written; after the values in the order.
21
8
  */
22
9
  export declare const jsxCode: StoryCodeWriter;