forgebook 0.3.3 → 0.4.1

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 (713) hide show
  1. package/README.md +994 -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 +182 -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 +62 -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 +95 -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 +204 -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 +323 -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 +148 -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 +69 -185
  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 +83 -0
  211. package/dist/src/componentDocs.js +20 -3
  212. package/dist/src/controlCode.d.ts +27 -0
  213. package/dist/src/controlCode.js +41 -0
  214. package/dist/src/frame/callValues.d.ts +19 -0
  215. package/dist/src/frame/callValues.js +58 -0
  216. package/dist/src/frame/canvasScheme.d.ts +33 -0
  217. package/dist/src/frame/canvasScheme.js +67 -0
  218. package/dist/src/frame/controlValues.d.ts +39 -0
  219. package/dist/src/frame/controlValues.js +143 -0
  220. package/dist/src/frame/frame.css +36 -3
  221. package/dist/src/frame/frameStatus.d.ts +16 -1
  222. package/dist/src/frame/frameStatus.js +16 -1
  223. package/dist/src/frame/frameView.js +4 -3
  224. package/dist/src/frame/mountFrame.d.ts +10 -1
  225. package/dist/src/frame/mountFrame.js +160 -55
  226. package/dist/src/frame/panelControls.d.ts +67 -0
  227. package/dist/src/frame/panelControls.js +110 -0
  228. package/dist/src/frame/panelValues.d.ts +35 -0
  229. package/dist/src/frame/panelValues.js +127 -0
  230. package/dist/src/frame/playActions.d.ts +39 -0
  231. package/dist/src/frame/playActions.js +98 -0
  232. package/dist/src/frame/playStepper.d.ts +28 -0
  233. package/dist/src/frame/playStepper.js +38 -0
  234. package/dist/src/frame/playStory.d.ts +9 -1
  235. package/dist/src/frame/playStory.js +49 -3
  236. package/dist/src/frame/renderer.d.ts +34 -1
  237. package/dist/src/frame/renderer.js +24 -0
  238. package/dist/src/frame/shellChannel.d.ts +1 -1
  239. package/dist/src/frame/shellChannel.js +1 -1
  240. package/dist/src/frame/shellCheck.d.ts +17 -0
  241. package/dist/src/frame/shellCheck.js +25 -0
  242. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  243. package/dist/src/frame/shellMessageCheck.js +53 -0
  244. package/dist/src/frame/storyContent.d.ts +50 -0
  245. package/dist/src/frame/storyContent.js +73 -0
  246. package/dist/src/frame/storyModule.d.ts +9 -0
  247. package/dist/src/frame/storyModule.js +20 -2
  248. package/dist/src/frame/storyRun.d.ts +15 -7
  249. package/dist/src/frame/storyRun.js +64 -15
  250. package/dist/src/frame/valueSheets.d.ts +35 -0
  251. package/dist/src/frame/valueSheets.js +99 -0
  252. package/dist/src/hotModules.d.ts +20 -0
  253. package/dist/src/hotModules.js +23 -0
  254. package/dist/src/jsxCode.d.ts +1 -14
  255. package/dist/src/jsxCode.js +46 -10
  256. package/dist/src/liveErrors.d.ts +30 -4
  257. package/dist/src/liveErrors.js +18 -3
  258. package/dist/src/messages.d.ts +77 -27
  259. package/dist/src/messages.js +58 -100
  260. package/dist/src/namedValues.d.ts +2 -26
  261. package/dist/src/namedValues.js +0 -47
  262. package/dist/src/pageConfig.d.ts +2 -0
  263. package/dist/src/playTrace.d.ts +19 -2
  264. package/dist/src/playTrace.js +10 -5
  265. package/dist/src/plugin.d.ts +10 -3
  266. package/dist/src/previewRelay.js +9 -1
  267. package/dist/src/printable.d.ts +12 -0
  268. package/dist/src/printable.js +22 -0
  269. package/dist/src/propsSignature.d.ts +37 -0
  270. package/dist/src/propsSignature.js +40 -0
  271. package/dist/src/search.d.ts +41 -5
  272. package/dist/src/search.js +93 -23
  273. package/dist/src/searchMatch.d.ts +4 -1
  274. package/dist/src/searchMatch.js +26 -5
  275. package/dist/src/searchTypos.d.ts +88 -0
  276. package/dist/src/searchTypos.js +178 -0
  277. package/dist/src/shapeValues.d.ts +86 -0
  278. package/dist/src/shapeValues.js +295 -0
  279. package/dist/src/shell/ApiReference.js +6 -3
  280. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  281. package/dist/src/shell/ApiTableBox.js +11 -0
  282. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  283. package/dist/src/shell/AppearanceMenu.js +9 -6
  284. package/dist/src/shell/AuthoredHome.js +3 -1
  285. package/dist/src/shell/CodeTab.d.ts +12 -6
  286. package/dist/src/shell/CodeTab.js +47 -3
  287. package/dist/src/shell/CodeText.d.ts +1 -1
  288. package/dist/src/shell/CodeText.js +2 -3
  289. package/dist/src/shell/CompareGrid.js +1 -1
  290. package/dist/src/shell/ComponentPage.d.ts +6 -6
  291. package/dist/src/shell/ComponentPage.js +8 -2
  292. package/dist/src/shell/CustomControl.d.ts +34 -0
  293. package/dist/src/shell/CustomControl.js +125 -0
  294. package/dist/src/shell/DocContainers.js +1 -1
  295. package/dist/src/shell/DocPage.js +2 -2
  296. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  297. package/dist/src/shell/DroppedArgsList.js +1 -1
  298. package/dist/src/shell/EmbedPage.js +30 -12
  299. package/dist/src/shell/Example.d.ts +5 -1
  300. package/dist/src/shell/Example.js +16 -8
  301. package/dist/src/shell/FrameView.d.ts +6 -3
  302. package/dist/src/shell/FrameView.js +2 -2
  303. package/dist/src/shell/HomePage.d.ts +3 -1
  304. package/dist/src/shell/HomePage.js +18 -6
  305. package/dist/src/shell/InfoTip.js +2 -2
  306. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  307. package/dist/src/shell/InteractionsTab.js +18 -2
  308. package/dist/src/shell/LazyPage.js +1 -1
  309. package/dist/src/shell/PackageHtml.js +3 -1
  310. package/dist/src/shell/PageWidth.d.ts +29 -0
  311. package/dist/src/shell/PageWidth.js +18 -0
  312. package/dist/src/shell/PinnedControl.js +14 -62
  313. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  314. package/dist/src/shell/PinnedControlMenu.js +72 -0
  315. package/dist/src/shell/PropFields.d.ts +3 -1
  316. package/dist/src/shell/PropFields.js +9 -6
  317. package/dist/src/shell/PropRows.d.ts +22 -11
  318. package/dist/src/shell/PropRows.js +62 -24
  319. package/dist/src/shell/PropsTab.d.ts +12 -5
  320. package/dist/src/shell/PropsTab.js +9 -22
  321. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  322. package/dist/src/shell/RefStoryPage.js +123 -0
  323. package/dist/src/shell/SearchPanel.js +51 -24
  324. package/dist/src/shell/Shell.d.ts +18 -0
  325. package/dist/src/shell/Shell.js +141 -23
  326. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  327. package/dist/src/shell/ShortcutHelp.js +66 -0
  328. package/dist/src/shell/Sidebar.d.ts +17 -4
  329. package/dist/src/shell/Sidebar.js +92 -41
  330. package/dist/src/shell/SidebarDocs.js +2 -2
  331. package/dist/src/shell/SidebarEntries.js +5 -3
  332. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  333. package/dist/src/shell/SidebarHandle.js +4 -4
  334. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  335. package/dist/src/shell/SidebarRefs.js +99 -0
  336. package/dist/src/shell/SidebarSearch.js +37 -9
  337. package/dist/src/shell/SignatureReference.js +3 -1
  338. package/dist/src/shell/Stage.d.ts +10 -2
  339. package/dist/src/shell/Stage.js +29 -49
  340. package/dist/src/shell/StatusBadges.d.ts +54 -0
  341. package/dist/src/shell/StatusBadges.js +77 -0
  342. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  343. package/dist/src/shell/StoryCodeBlock.js +7 -6
  344. package/dist/src/shell/StoryPicker.d.ts +4 -2
  345. package/dist/src/shell/StoryPicker.js +3 -3
  346. package/dist/src/shell/Switch.d.ts +29 -0
  347. package/dist/src/shell/Switch.js +11 -0
  348. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  349. package/dist/src/shell/SwitchGallery.js +17 -0
  350. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  351. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  352. package/dist/src/shell/TagFilter.d.ts +24 -0
  353. package/dist/src/shell/TagFilter.js +45 -0
  354. package/dist/src/shell/TagViews.d.ts +39 -0
  355. package/dist/src/shell/TagViews.js +20 -0
  356. package/dist/src/shell/Toolbar.d.ts +4 -1
  357. package/dist/src/shell/Toolbar.js +17 -7
  358. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  359. package/dist/src/shell/ToolbarControl.js +23 -6
  360. package/dist/src/shell/ViewMenuPanel.js +6 -1
  361. package/dist/src/shell/argChecks.d.ts +22 -0
  362. package/dist/src/shell/argChecks.js +20 -0
  363. package/dist/src/shell/asideStory.js +7 -2
  364. package/dist/src/shell/audienceSections.css +9 -9
  365. package/dist/src/shell/catalogueContext.d.ts +1 -1
  366. package/dist/src/shell/catalogueContext.js +6 -1
  367. package/dist/src/shell/codeSpans.d.ts +27 -0
  368. package/dist/src/shell/codeSpans.js +76 -0
  369. package/dist/src/shell/compareVariants.d.ts +4 -2
  370. package/dist/src/shell/compareVariants.js +16 -8
  371. package/dist/src/shell/composition.d.ts +23 -0
  372. package/dist/src/shell/composition.js +26 -0
  373. package/dist/src/shell/controlCycle.d.ts +1 -1
  374. package/dist/src/shell/controlCycle.js +3 -2
  375. package/dist/src/shell/customControls.d.ts +62 -0
  376. package/dist/src/shell/customControls.js +81 -0
  377. package/dist/src/shell/docPage.css +22 -22
  378. package/dist/src/shell/dockTabs.d.ts +19 -3
  379. package/dist/src/shell/dockTabs.js +29 -20
  380. package/dist/src/shell/embed.css +7 -7
  381. package/dist/src/shell/frameOrder.d.ts +35 -0
  382. package/dist/src/shell/frameOrder.js +45 -0
  383. package/dist/src/shell/framesOrigin.d.ts +7 -0
  384. package/dist/src/shell/framesOrigin.js +1 -1
  385. package/dist/src/shell/galleryPlace.d.ts +20 -0
  386. package/dist/src/shell/galleryPlace.js +26 -0
  387. package/dist/src/shell/icons.d.ts +1 -0
  388. package/dist/src/shell/icons.js +1 -0
  389. package/dist/src/shell/keyboard.d.ts +14 -12
  390. package/dist/src/shell/keyboard.js +21 -6
  391. package/dist/src/shell/laterStrings.d.ts +30 -0
  392. package/dist/src/shell/laterStrings.js +43 -3
  393. package/dist/src/shell/mountShell.js +3 -0
  394. package/dist/src/shell/pageStrings.d.ts +4 -0
  395. package/dist/src/shell/pageStrings.js +4 -0
  396. package/dist/src/shell/pageTagView.d.ts +18 -0
  397. package/dist/src/shell/pageTagView.js +10 -0
  398. package/dist/src/shell/playMemory.d.ts +14 -0
  399. package/dist/src/shell/playMemory.js +8 -0
  400. package/dist/src/shell/propNotes.d.ts +23 -0
  401. package/dist/src/shell/propNotes.js +37 -0
  402. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  403. package/dist/src/shell/refIndexLoad.js +38 -0
  404. package/dist/src/shell/refParts.d.ts +34 -0
  405. package/dist/src/shell/refParts.js +9 -0
  406. package/dist/src/shell/refStory.css +21 -0
  407. package/dist/src/shell/refStrings.d.ts +13 -0
  408. package/dist/src/shell/refStrings.js +21 -0
  409. package/dist/src/shell/search.css +11 -11
  410. package/dist/src/shell/shell.css +376 -169
  411. package/dist/src/shell/shellScheme.js +2 -2
  412. package/dist/src/shell/shortcutHelp.css +64 -0
  413. package/dist/src/shell/stageArgs.d.ts +53 -0
  414. package/dist/src/shell/stageArgs.js +64 -0
  415. package/dist/src/shell/statusBadges.css +51 -0
  416. package/dist/src/shell/strings.d.ts +7 -16
  417. package/dist/src/shell/strings.js +12 -17
  418. package/dist/src/shell/switchGallery.css +104 -0
  419. package/dist/src/shell/tagFilter.css +46 -0
  420. package/dist/src/shell/tagView.d.ts +20 -0
  421. package/dist/src/shell/tagView.js +10 -0
  422. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  423. package/dist/src/shell/useAddressArgs.js +56 -11
  424. package/dist/src/shell/useControlKeys.js +2 -2
  425. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  426. package/dist/src/shell/useEditedProblems.js +40 -0
  427. package/dist/src/shell/useFrameMessages.js +3 -0
  428. package/dist/src/shell/useFrameQueue.d.ts +8 -3
  429. package/dist/src/shell/useFrameQueue.js +42 -12
  430. package/dist/src/shell/useListedTree.d.ts +13 -0
  431. package/dist/src/shell/useListedTree.js +32 -0
  432. package/dist/src/shell/usePageFrames.js +2 -2
  433. package/dist/src/shell/usePopover.d.ts +5 -0
  434. package/dist/src/shell/usePopover.js +7 -1
  435. package/dist/src/shell/useRefIndex.d.ts +22 -0
  436. package/dist/src/shell/useRefIndex.js +36 -0
  437. package/dist/src/shell/useScrollSettled.d.ts +18 -0
  438. package/dist/src/shell/useScrollSettled.js +56 -0
  439. package/dist/src/shell/useScrollStops.d.ts +20 -0
  440. package/dist/src/shell/useScrollStops.js +41 -0
  441. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  442. package/dist/src/shell/useShortcutHelp.js +32 -0
  443. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  444. package/dist/src/shell/useSidebarOverlay.js +12 -4
  445. package/dist/src/shell/useStoryCode.d.ts +2 -1
  446. package/dist/src/shell/useStoryCode.js +12 -7
  447. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  448. package/dist/src/shell/useToolbarLayout.js +2 -2
  449. package/dist/src/shell/useWorstCase.d.ts +8 -2
  450. package/dist/src/shell/useWorstCase.js +2 -2
  451. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  452. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  453. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  454. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  455. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  456. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  457. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  458. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  459. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  460. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  461. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  462. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  463. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  464. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  465. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  466. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  467. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  468. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  469. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  470. package/dist/src/shell/valueEditors/ValueField.js +148 -0
  471. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  472. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  473. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  474. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  475. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  476. package/dist/src/shell/worstArgs.d.ts +8 -5
  477. package/dist/src/shell/worstArgs.js +14 -7
  478. package/dist/src/shellTheme.d.ts +1 -1
  479. package/dist/src/shellTheme.js +15 -1
  480. package/dist/src/shellTheme.types.d.ts +4 -0
  481. package/dist/src/shellWord.d.ts +12 -0
  482. package/dist/src/shellWord.js +15 -0
  483. package/dist/src/sourceFiles.js +2 -1
  484. package/dist/src/storyArgTypes.d.ts +57 -0
  485. package/dist/src/storyArgTypes.js +195 -0
  486. package/dist/src/storyBackground.js +14 -3
  487. package/dist/src/storyCheck.d.ts +99 -3
  488. package/dist/src/storyCheck.js +39 -1
  489. package/dist/src/storyCodeText.d.ts +52 -0
  490. package/dist/src/storyCodeText.js +30 -0
  491. package/dist/src/storyControls.d.ts +103 -0
  492. package/dist/src/storyControls.js +100 -0
  493. package/dist/src/storyStatuses.d.ts +55 -0
  494. package/dist/src/storyStatuses.js +104 -0
  495. package/dist/src/storyTagNames.d.ts +25 -0
  496. package/dist/src/storyTagNames.js +25 -0
  497. package/dist/src/storyTags.d.ts +29 -0
  498. package/dist/src/storyTags.js +85 -0
  499. package/dist/src/storyTree.d.ts +13 -0
  500. package/dist/src/storyTree.js +24 -4
  501. package/dist/src/storybookArgs.d.ts +24 -0
  502. package/dist/src/storybookArgs.js +185 -0
  503. package/dist/src/switches.d.ts +66 -3
  504. package/dist/src/switches.js +42 -1
  505. package/dist/src/valueSchema.d.ts +28 -0
  506. package/dist/src/valueSchema.js +196 -0
  507. package/dist/src/valueShape.d.ts +94 -0
  508. package/dist/src/valueShape.js +25 -0
  509. package/dist/src/viewState.d.ts +8 -3
  510. package/dist/src/viewState.js +27 -10
  511. package/dist/src/vite/adapter.d.ts +40 -2
  512. package/dist/src/vite/adapter.js +1 -0
  513. package/dist/src/vite/agent.types.d.ts +354 -7
  514. package/dist/src/vite/agentApi.d.ts +23 -0
  515. package/dist/src/vite/agentApi.js +90 -17
  516. package/dist/src/vite/agentIndex.d.ts +0 -2
  517. package/dist/src/vite/agentIndex.js +5 -6
  518. package/dist/src/vite/agentRoutes.d.ts +20 -1
  519. package/dist/src/vite/agentRoutes.js +135 -66
  520. package/dist/src/vite/agentStatuses.d.ts +42 -0
  521. package/dist/src/vite/agentStatuses.js +67 -0
  522. package/dist/src/vite/agentStoryCode.d.ts +51 -0
  523. package/dist/src/vite/agentStoryCode.js +44 -0
  524. package/dist/src/vite/agentVisibility.d.ts +47 -0
  525. package/dist/src/vite/agentVisibility.js +174 -0
  526. package/dist/src/vite/appAudit.d.ts +134 -0
  527. package/dist/src/vite/appAudit.js +333 -0
  528. package/dist/src/vite/appBuildOption.d.ts +53 -0
  529. package/dist/src/vite/appBuildOption.js +55 -0
  530. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  531. package/dist/src/vite/appTokenFiles.js +433 -0
  532. package/dist/src/vite/appTokens.d.ts +23 -0
  533. package/dist/src/vite/appTokens.js +275 -0
  534. package/dist/src/vite/argControlsConfig.d.ts +30 -0
  535. package/dist/src/vite/argControlsConfig.js +176 -0
  536. package/dist/src/vite/builtTexts.d.ts +10 -0
  537. package/dist/src/vite/builtTexts.js +59 -22
  538. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  539. package/dist/src/vite/catalogueConfig.js +21 -4
  540. package/dist/src/vite/changeCoverage.d.ts +74 -0
  541. package/dist/src/vite/changeCoverage.js +120 -0
  542. package/dist/src/vite/changedRoute.d.ts +30 -0
  543. package/dist/src/vite/changedRoute.js +197 -0
  544. package/dist/src/vite/checkCode.d.ts +105 -3
  545. package/dist/src/vite/checkCode.js +323 -36
  546. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  547. package/dist/src/vite/checkoutWatch.js +287 -0
  548. package/dist/src/vite/closeWatch.d.ts +8 -0
  549. package/dist/src/vite/closeWatch.js +1 -1
  550. package/dist/src/vite/componentCache.d.ts +8 -0
  551. package/dist/src/vite/componentCache.js +66 -0
  552. package/dist/src/vite/componentGraph.d.ts +71 -0
  553. package/dist/src/vite/componentGraph.js +133 -0
  554. package/dist/src/vite/componentRules.d.ts +33 -0
  555. package/dist/src/vite/componentRules.js +105 -0
  556. package/dist/src/vite/componentScan.d.ts +69 -0
  557. package/dist/src/vite/componentScan.js +418 -0
  558. package/dist/src/vite/compositionCheck.d.ts +15 -0
  559. package/dist/src/vite/compositionCheck.js +243 -0
  560. package/dist/src/vite/config.d.ts +67 -1
  561. package/dist/src/vite/configFile.d.ts +15 -2
  562. package/dist/src/vite/configFile.js +109 -40
  563. package/dist/src/vite/configKeys.d.ts +15 -0
  564. package/dist/src/vite/configKeys.js +172 -0
  565. package/dist/src/vite/configLoadError.d.ts +23 -0
  566. package/dist/src/vite/configLoadError.js +71 -0
  567. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  568. package/dist/src/vite/cssDeclarations.js +290 -0
  569. package/dist/src/vite/cssImports.d.ts +14 -0
  570. package/dist/src/vite/cssImports.js +48 -0
  571. package/dist/src/vite/cssReferences.d.ts +54 -0
  572. package/dist/src/vite/cssReferences.js +157 -0
  573. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  574. package/dist/src/vite/cssTokenValues.js +233 -0
  575. package/dist/src/vite/designTokens.d.ts +24 -0
  576. package/dist/src/vite/designTokens.js +5 -1
  577. package/dist/src/vite/docsExtractor.d.ts +9 -3
  578. package/dist/src/vite/docsExtractor.js +11 -3
  579. package/dist/src/vite/docsProgram.d.ts +17 -4
  580. package/dist/src/vite/docsProgram.js +52 -11
  581. package/dist/src/vite/docsWorker.js +7 -2
  582. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  583. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  584. package/dist/src/vite/fileImports.d.ts +17 -0
  585. package/dist/src/vite/fileImports.js +57 -0
  586. package/dist/src/vite/findComponent.d.ts +10 -2
  587. package/dist/src/vite/findComponent.js +27 -22
  588. package/dist/src/vite/findRoute.js +3 -2
  589. package/dist/src/vite/forcedStates.d.ts +9 -2
  590. package/dist/src/vite/forcedStates.js +12 -3
  591. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  592. package/dist/src/vite/forgebookPlugin.js +55 -73
  593. package/dist/src/vite/frameErrors.d.ts +19 -0
  594. package/dist/src/vite/frameErrors.js +70 -0
  595. package/dist/src/vite/framesServer.d.ts +12 -0
  596. package/dist/src/vite/framesServer.js +21 -4
  597. package/dist/src/vite/functionComponentDocs.js +81 -12
  598. package/dist/src/vite/generatedModules.js +4 -2
  599. package/dist/src/vite/gitChange.d.ts +38 -5
  600. package/dist/src/vite/gitChange.js +71 -11
  601. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  602. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  603. package/dist/src/vite/hotSnippets.d.ts +38 -14
  604. package/dist/src/vite/hotSnippets.js +137 -39
  605. package/dist/src/vite/importedNames.d.ts +37 -0
  606. package/dist/src/vite/importedNames.js +138 -0
  607. package/dist/src/vite/indexFields.d.ts +6 -0
  608. package/dist/src/vite/indexFields.js +21 -0
  609. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  610. package/dist/src/vite/indexStoryFile.js +22 -157
  611. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  612. package/dist/src/vite/jsxCallSites.js +200 -0
  613. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  614. package/dist/src/vite/jsxInScripts.js +138 -0
  615. package/dist/src/vite/jsxTree.d.ts +20 -0
  616. package/dist/src/vite/jsxTree.js +163 -0
  617. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  618. package/dist/src/vite/lineAndColumn.js +18 -0
  619. package/dist/src/vite/lookAlikes.d.ts +65 -0
  620. package/dist/src/vite/lookAlikes.js +228 -0
  621. package/dist/src/vite/nearestToken.d.ts +17 -0
  622. package/dist/src/vite/nearestToken.js +9 -2
  623. package/dist/src/vite/packageEntries.d.ts +42 -0
  624. package/dist/src/vite/packageEntries.js +127 -0
  625. package/dist/src/vite/pages.d.ts +9 -1
  626. package/dist/src/vite/pages.js +119 -4
  627. package/dist/src/vite/pluginConfig.js +4 -0
  628. package/dist/src/vite/pluginIds.d.ts +2 -0
  629. package/dist/src/vite/pluginIds.js +5 -1
  630. package/dist/src/vite/pluginModules.d.ts +81 -11
  631. package/dist/src/vite/pluginModules.js +109 -21
  632. package/dist/src/vite/prebundled.d.ts +57 -15
  633. package/dist/src/vite/prebundled.js +80 -0
  634. package/dist/src/vite/previewTags.d.ts +25 -0
  635. package/dist/src/vite/previewTags.js +56 -0
  636. package/dist/src/vite/projectFiles.d.ts +54 -0
  637. package/dist/src/vite/projectFiles.js +116 -0
  638. package/dist/src/vite/projectPostcss.d.ts +70 -0
  639. package/dist/src/vite/projectPostcss.js +250 -0
  640. package/dist/src/vite/propDocs.d.ts +12 -0
  641. package/dist/src/vite/propDocs.js +187 -60
  642. package/dist/src/vite/propKind.d.ts +40 -0
  643. package/dist/src/vite/propKind.js +71 -0
  644. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  645. package/dist/src/vite/propTypeNotes.js +51 -0
  646. package/dist/src/vite/publishedExports.d.ts +27 -0
  647. package/dist/src/vite/publishedExports.js +298 -0
  648. package/dist/src/vite/realFolder.d.ts +6 -0
  649. package/dist/src/vite/realFolder.js +25 -0
  650. package/dist/src/vite/refsConfig.d.ts +39 -0
  651. package/dist/src/vite/refsConfig.js +54 -0
  652. package/dist/src/vite/reuseCheck.d.ts +45 -0
  653. package/dist/src/vite/reuseCheck.js +260 -0
  654. package/dist/src/vite/runningVersions.d.ts +33 -0
  655. package/dist/src/vite/runningVersions.js +25 -0
  656. package/dist/src/vite/scriptProblems.d.ts +60 -0
  657. package/dist/src/vite/scriptProblems.js +155 -0
  658. package/dist/src/vite/searchModule.js +3 -2
  659. package/dist/src/vite/searchRoute.js +4 -2
  660. package/dist/src/vite/shapeDocs.d.ts +36 -0
  661. package/dist/src/vite/shapeDocs.js +177 -0
  662. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  663. package/dist/src/vite/singleFileComponent.js +83 -0
  664. package/dist/src/vite/sourceText.d.ts +34 -0
  665. package/dist/src/vite/sourceText.js +72 -0
  666. package/dist/src/vite/sourceTokens.d.ts +7 -0
  667. package/dist/src/vite/sourceTokens.js +7 -2
  668. package/dist/src/vite/stackLines.d.ts +49 -0
  669. package/dist/src/vite/stackLines.js +96 -0
  670. package/dist/src/vite/storyCode.d.ts +22 -7
  671. package/dist/src/vite/storyCode.js +263 -37
  672. package/dist/src/vite/storyCoverage.d.ts +48 -0
  673. package/dist/src/vite/storyCoverage.js +179 -0
  674. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  675. package/dist/src/vite/storyFilesModule.js +105 -15
  676. package/dist/src/vite/storyPatterns.d.ts +31 -0
  677. package/dist/src/vite/storyPatterns.js +140 -5
  678. package/dist/src/vite/storyReach.d.ts +10 -2
  679. package/dist/src/vite/storyReach.js +15 -11
  680. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  681. package/dist/src/vite/storyTopLevel.js +146 -0
  682. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  683. package/dist/src/vite/storylessRoutes.js +210 -19
  684. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  685. package/dist/src/vite/switchValuesCheck.js +164 -0
  686. package/dist/src/vite/switchesDocument.d.ts +15 -0
  687. package/dist/src/vite/switchesDocument.js +47 -0
  688. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  689. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  690. package/dist/src/vite/textImports.d.ts +15 -0
  691. package/dist/src/vite/textImports.js +58 -0
  692. package/dist/src/vite/textModules.d.ts +6 -5
  693. package/dist/src/vite/textModules.js +13 -8
  694. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  695. package/dist/src/vite/tokenAnswers.js +11 -7
  696. package/dist/src/vite/typeParameters.d.ts +83 -0
  697. package/dist/src/vite/typeParameters.js +270 -0
  698. package/dist/src/vite/typedControls.d.ts +31 -0
  699. package/dist/src/vite/typedControls.js +66 -0
  700. package/dist/src/vite/unionProps.d.ts +37 -0
  701. package/dist/src/vite/unionProps.js +121 -0
  702. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  703. package/dist/src/vite/unresolvedTokens.js +193 -0
  704. package/dist/src/vite/usageGraph.js +10 -52
  705. package/dist/src/vite/usageGuidance.d.ts +9 -2
  706. package/dist/src/vite/usageGuidance.js +36 -8
  707. package/dist/src/vite/usageImports.d.ts +35 -0
  708. package/dist/src/vite/usageImports.js +280 -0
  709. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  710. package/dist/src/vite/visibilityRoute.js +320 -0
  711. package/dist/src/worstCase.d.ts +2 -0
  712. package/dist/src/worstCase.js +2 -0
  713. package/package.json +28 -8
@@ -5,7 +5,7 @@
5
5
  * @remarks
6
6
  * One document per story: the style sheets of the Styles setting, the switches on the root and anything the
7
7
  * story mounts on `body` stay in this document. The tests open the same address and wait for `data-forgebook-status`
8
- * on the root (`ready` or `error`), never for a delay. A Live story's clock runs from its start, or stays held there when
8
+ * on the root (`ready`, `error` or `pending`), never for a delay. A Live story's clock runs from its start, or stays held there when
9
9
  * the address says so (`clock=held`, what the tests open). The framework is the renderer the framework package
10
10
  * passes (`renderer.ts`); nothing here depends on one.
11
11
  *
@@ -13,28 +13,32 @@
13
13
  */
14
14
  import "./frame.css";
15
15
  import { storyTextOf } from "@forgebook/story-format/texts";
16
- import { actionNames, excludedControls, panelArgTypesOf } from "../argTypes.js";
16
+ import { bundlerErrorLines } from "../bundlerErrors.js";
17
17
  import { catalogueSettings } from "../catalogue.js";
18
18
  import { SAME_ORIGIN } from "../frameOrigins.js";
19
19
  import { PREVIEWS_EVENT, previewsRenewalOf, STORY_FILE_EVENT, successionOf } from "../hotModules.js";
20
20
  import { shownLanguage } from "../languages.js";
21
- import { LIVE_ERROR_EVENT } from "../liveErrors.js";
22
- import { detailOf, previewValue } from "../messages.js";
23
- import { panelArgsOf, storyArgsOf } from "../namedValues.js";
21
+ import { isMappedStackAnswer, LIVE_ERROR_EVENT, MAPPED_STACK_EVENT } from "../liveErrors.js";
24
22
  import { applySafeArea } from "../safeAreaParameter.js";
25
23
  import { sourceFiles } from "../sourceFiles.js";
24
+ import { actionNames, excludedControls, panelArgTypesOf } from "../storyArgTypes.js";
26
25
  import { isClockHeldIn } from "../storyClock.js";
27
26
  import { fixedViewOf, NOT_FIXED, withFixed } from "../storyGlobals.js";
28
27
  import { shownTexts, storyTextKeysOf, withStoryTexts } from "../storyTexts.js";
29
28
  import { findStory, storyTree } from "../storyTree.js";
30
29
  import { catalogueSwitches } from "../switches.js";
31
30
  import { codeGlobalsOf, frameAddress, isSameLiveView, languageOf, liveView, parseView } from "../viewState.js";
31
+ import { detailOf, previewValue } from "./callValues.js";
32
+ import { followCanvasScheme } from "./canvasScheme.js";
32
33
  import { followTouch } from "./followTouch.js";
33
34
  import { storyFrameClock } from "./frameClock.js";
34
- import { FRAME_STARTED_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
35
+ import { ERROR_MESSAGE_CLASS, ERROR_STACK_CLASS, FRAME_STARTED_ATTRIBUTE, NOT_AWAITED_ATTRIBUTE, PENDING_REASON_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
35
36
  import { applyView, loadSheets, viewSheets } from "./frameView.js";
37
+ import { panelControls } from "./panelControls.js";
38
+ import { panelArgsOf, storyArgsOf } from "./panelValues.js";
36
39
  import { startPluginFrames } from "./pluginFrames.js";
37
40
  import { shellChannel } from "./shellChannel.js";
41
+ import { checkForShell } from "./shellCheck.js";
38
42
  import { spillOutline } from "./spillOutline.js";
39
43
  import { clearRetry, isStaleModuleError, markRetry, sessionStorageOf } from "./staleModule.js";
40
44
  import { mergedPreviews, readPreview, readStory, startingGlobals } from "./storyModule.js";
@@ -48,54 +52,125 @@ import { runStory } from "./storyRun.js";
48
52
  const tellDevServer = (report) => {
49
53
  import.meta.hot?.send(LIVE_ERROR_EVENT, report);
50
54
  };
51
- // a story that threw is gone from its frame, so a hot update has nothing to update: the fix shows only in a new page
55
+ // the browser writes a stack in the lines of the code Vite served, and the dev server answers with the lines as written
56
+ import.meta.hot?.on(MAPPED_STACK_EVENT, (answer) => {
57
+ if (!isMappedStackAnswer(answer))
58
+ return;
59
+ for (const shown of document.querySelectorAll(`.${ERROR_STACK_CLASS}`))
60
+ if (shown.textContent === answer.sent)
61
+ shown.textContent = answer.stack;
62
+ });
63
+ // a story that threw is gone from its frame, so a hot update has nothing to update: the fix shows only in a new page; a
64
+ // story the frame gave up on keeps saying so until a new page waits for it again
52
65
  import.meta.hot?.on("vite:afterUpdate", () => {
53
- if (document.documentElement.getAttribute(STATUS_ATTRIBUTE) === "error")
66
+ const status = document.documentElement.getAttribute(STATUS_ATTRIBUTE);
67
+ if (status === "error" || status === "pending")
54
68
  window.location.reload();
55
69
  });
70
+ /**
71
+ * Why the dev server last failed to serve a module, and what to do when it says so: of a module it failed to serve, a
72
+ * browser says only that the import failed, and the reason reaches the page on the dev server's own channel.
73
+ */
74
+ let servedError;
75
+ let followServedError;
76
+ import.meta.hot?.on("vite:error", ({ err }) => {
77
+ // the first since this page loaded: what its own import asked for, not what another frame's asked for later
78
+ servedError ??= bundlerErrorLines(err.message, err)[0];
79
+ followServedError?.();
80
+ followServedError = undefined;
81
+ });
82
+ /**
83
+ * What shows the sheets of a frame's values; none for a catalogue with none, which so loads no code for them.
84
+ *
85
+ * @param valueSheets - each value's sheet, when the catalogue has any.
86
+ * @param sheets - the frame's Styles setting.
87
+ * @param switches - the catalogue's switches.
88
+ * @param onFailed - told a sheet that did not load: the story is drawn without it.
89
+ */
90
+ const valueSheetsShower = async (valueSheets, sheets, switches, onFailed) => {
91
+ if (valueSheets === undefined)
92
+ return undefined;
93
+ const { valueSheetUrls, valueSheetsIn } = await import("./valueSheets.js");
94
+ const show = valueSheetsIn(document, onFailed);
95
+ return (values) => show(valueSheetUrls(values, sheets, valueSheets, switches));
96
+ };
97
+ /**
98
+ * Fails a frame whose story did not load, with the dev server's reason when the import only says it failed, as soon as
99
+ * the reason arrives: it may come after the failed import.
100
+ *
101
+ * @param message - the error's message.
102
+ * @param fail - shows a reason in the frame.
103
+ */
104
+ const failedToLoad = (message, fail) => {
105
+ if (isStaleModuleError(message))
106
+ followServedError = () => fail(servedError ?? message);
107
+ fail(isStaleModuleError(message) ? (servedError ?? message) : message);
108
+ };
56
109
  /**
57
110
  * Does what a message of the shell asks of the rendered story; the view's live part is applied apart, before the story
58
- * loads.
111
+ * loads, and so are the panel's values (`panelControls.ts`).
59
112
  *
60
113
  * @param message - the message.
61
114
  * @param controls - the rendered story's controls.
62
115
  * @param storyId - the story's id, for the answers.
116
+ * @param pendingReason - why the story was not seen in its final state, if so: a check of what it shows now would pass
117
+ * on a fallback, so it answers this instead.
63
118
  * @param rules - the catalogue's accessibility rules, for a check; none when it checks no accessibility.
64
119
  * @param axeUrl - the address of axe's script, for a check.
65
120
  * @param tellShell - tells the shell the check's result.
66
121
  */
67
- const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
122
+ const answerShell = (message, controls, storyId, pendingReason, rules, axeUrl, tellShell) => {
68
123
  if (message.type === "forgebook:replay")
69
124
  void controls.replay();
70
- else if (message.type === "forgebook:args")
71
- controls.setPanelArgs(message.args);
72
125
  else if (message.type === "forgebook:events")
73
126
  controls.setEvents(message.names);
74
127
  else if (message.type === "forgebook:matrix")
75
128
  controls.setMatrix(message.matrix ?? undefined);
76
- else if (message.type === "forgebook:play-again")
77
- controls.playAgain();
129
+ else if (message.type === "forgebook:play-step")
130
+ controls.stepPlay(message.command);
78
131
  else if (message.type === "forgebook:clock")
79
132
  controls.setClock(message.state);
80
133
  else if (message.type === "forgebook:clock-restart")
81
134
  controls.restartClock();
82
- else if (message.type === "forgebook:check") {
83
- // loaded on the first check: a frame that is never checked, or one of a catalogue that checks nothing, never
84
- // fetches the code that loads axe
85
- const checked = rules === undefined
86
- ? Promise.reject(new Error("The catalogue checks no accessibility (a11y: false)"))
87
- : import("./checkStory.js").then((module) => module.checkStory(document, rules, axeUrl));
88
- checked
89
- .then((violations) => tellShell({ type: "forgebook:checked", storyId, violations }))
90
- .catch((error) => tellShell({
91
- type: "forgebook:check-error",
92
- storyId,
93
- message: error instanceof Error ? error.message : String(error)
94
- }));
95
- }
135
+ else if (message.type === "forgebook:check")
136
+ checkForShell(storyId, pendingReason, rules, axeUrl, tellShell);
96
137
  };
97
- /** The play tools a project installed, for a story that uses them. */
98
- const playToolsOf = ({ playTools }) => playTools === undefined ? {} : { playTools };
138
+ /**
139
+ * Says on the page that the frame gave up on what the story loads: a person looking at the story, or at its picture,
140
+ * must not take the fallback for the story. Out of the story's own element, so the story is laid out as it was.
141
+ *
142
+ * @param reason - why.
143
+ */
144
+ const showPending = (reason) => {
145
+ const notice = document.createElement("p");
146
+ notice.className = "forgebook-frame-pending";
147
+ notice.setAttribute("role", "status");
148
+ notice.textContent = `Not verified: ${reason}`;
149
+ document.body.prepend(notice);
150
+ };
151
+ /**
152
+ * Says how a story ended on the frame's root and on its page.
153
+ *
154
+ * @param outcome - how it ended; an error that came during the wait stands, and this leaves it there.
155
+ * @param storyId - the story's id, for the dev server.
156
+ * @param isNotAwaited - whether the story said not to wait for what it loads, which a check reports.
157
+ * @returns why it was not seen in its final state, if so.
158
+ */
159
+ const showOutcome = (outcome, storyId, isNotAwaited) => {
160
+ if (outcome.status === "error")
161
+ return undefined;
162
+ if (isNotAwaited)
163
+ document.documentElement.setAttribute(NOT_AWAITED_ATTRIBUTE, "");
164
+ document.documentElement.setAttribute(STATUS_ATTRIBUTE, outcome.status);
165
+ if (outcome.status === "ready")
166
+ return undefined;
167
+ document.documentElement.setAttribute(PENDING_REASON_ATTRIBUTE, outcome.reason);
168
+ showPending(outcome.reason);
169
+ tellDevServer({ kind: "render", storyId, view: window.location.search, message: outcome.reason });
170
+ return outcome.reason;
171
+ };
172
+ /** The play tools a project installed, and whether the frame's address lets its story play when it opens. */
173
+ const playOptions = ({ playTools }, playsOnOpen) => playTools === undefined ? { playsOnOpen } : { playTools, playsOnOpen };
99
174
  /**
100
175
  * Shows the story the address names in the given element.
101
176
  *
@@ -113,7 +188,9 @@ export const mountFrame = async (container, config) => {
113
188
  // the previews' modules: an edit of one (or of what it imports) brings its successor
114
189
  let previews = config.previews ?? [];
115
190
  let preview = mergedPreviews(previews.map(readPreview));
116
- const view = parseView(window.location.search, catalogue);
191
+ // a frame runs its play unless its own address says otherwise, whatever the catalogue's readers start with: tests and
192
+ // tools open frames with no word, and a new address written below must not add one
193
+ const view = parseView(window.location.search, { ...catalogue, readerPlay: "on" });
117
194
  const shell = shellChannel(config.frames ?? SAME_ORIGIN, window);
118
195
  const tellShell = shell.tell;
119
196
  applyView(document.documentElement, view, catalogue);
@@ -136,17 +213,19 @@ export const mountFrame = async (container, config) => {
136
213
  tellShell({ type: "forgebook:size", storyId, height });
137
214
  };
138
215
  new ResizeObserver(reportSize).observe(document.body);
139
- const reportError = (message) => {
216
+ const reportScheme = followCanvasScheme(document, window, storyId, tellShell);
217
+ const reportError = (message, stack) => {
140
218
  document.documentElement.setAttribute(STATUS_ATTRIBUTE, "error");
141
219
  tellShell({ type: "forgebook:error", storyId, message });
142
- tellDevServer({ kind: "render", storyId, view: window.location.search, message });
220
+ const report = { kind: "render", storyId, view: window.location.search, message };
221
+ tellDevServer(stack === undefined ? report : { ...report, stack });
143
222
  };
144
223
  const fail = (message) => {
145
224
  const box = document.createElement("div");
146
225
  box.className = "forgebook-frame-error";
147
226
  box.setAttribute("role", "alert");
148
227
  const text = document.createElement("p");
149
- text.className = "forgebook-frame-error__message";
228
+ text.className = ERROR_MESSAGE_CLASS;
150
229
  text.textContent = message;
151
230
  box.append(text);
152
231
  container.replaceChildren(box);
@@ -165,6 +244,11 @@ export const mountFrame = async (container, config) => {
165
244
  .then(({ applyTools }) => applyTools(document, latestTools, catalogue.gridStep))
166
245
  .catch((error) => reportError(error instanceof Error ? error.message : String(error)));
167
246
  };
247
+ // what shows the sheets of the values drawn, for a catalogue with any; set once the source's are placed
248
+ let showValueSheets;
249
+ // the view asked for while its sheets load: the next message is compared with it, or going back would stop short of
250
+ // overtaking it, and the sheets would then draw a view the reader already left
251
+ let askedView;
168
252
  shell.listen((message) => {
169
253
  if (message.type === "forgebook:tools")
170
254
  showTools(message.tools);
@@ -174,15 +258,29 @@ export const mountFrame = async (container, config) => {
174
258
  return;
175
259
  const shown = withFixed(message.view, fixed);
176
260
  // the same view again draws nothing: a story's state, and the time its draw takes, are not the shell's to spend
177
- if (changeShown !== undefined &&
178
- shownView !== undefined &&
179
- isSameLiveView(withFixed(shownView, fixed), shown))
261
+ const latest = askedView ?? shownView;
262
+ if (changeShown !== undefined && latest !== undefined && isSameLiveView(withFixed(latest, fixed), shown))
180
263
  return;
181
- applyView(document.documentElement, shown, catalogue);
182
- changeShown?.(message.view);
183
- shownView = changeShown === undefined ? undefined : message.view;
184
- const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
185
- window.history.replaceState(null, "", address);
264
+ askedView = message.view;
265
+ const showLive = () => {
266
+ applyView(document.documentElement, shown, catalogue);
267
+ changeShown?.(message.view);
268
+ shownView = changeShown === undefined ? undefined : message.view;
269
+ askedView = undefined;
270
+ const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
271
+ window.history.replaceState(null, "", address);
272
+ };
273
+ // the root changes with the sheet that draws it; a later view overtakes this one
274
+ if (showValueSheets === undefined)
275
+ showLive();
276
+ else {
277
+ showValueSheets(shown.switches)
278
+ .then((isLast) => {
279
+ if (isLast)
280
+ showLive();
281
+ })
282
+ .catch((error) => reportError(error instanceof Error ? error.message : String(error)));
283
+ }
186
284
  });
187
285
  // until the story runs, or when it cannot, an edit of a file the frame loaded loads the page again: there is no story
188
286
  // drawn to renew in place, and a story file that failed to load keeps no other way to show its fix
@@ -210,6 +308,8 @@ export const mountFrame = async (container, config) => {
210
308
  await source.setup?.();
211
309
  await preview.setup?.();
212
310
  await loadSheets(document, viewSheets(source.sheets, view));
311
+ showValueSheets = await valueSheetsShower(config.valueSheets, view.sheets, switches, reportError);
312
+ await showValueSheets?.(view.switches);
213
313
  // the story file's exports: an edit of the file hands them on with its successor's
214
314
  let shownFile = await load();
215
315
  const first = readStory(shownFile, location.story.exportName, preview);
@@ -220,13 +320,15 @@ export const mountFrame = async (container, config) => {
220
320
  const plugins = startPluginFrames(config.plugins, storyId, tellShell);
221
321
  let story = first;
222
322
  fixed = fixedViewOf(story.globals, story.parameters, catalogue);
323
+ await showValueSheets?.(withFixed(view, fixed).switches);
223
324
  applyView(document.documentElement, withFixed(view, fixed), catalogue);
224
325
  let controls;
326
+ // why the story was not seen in its final state: a check of what it shows would pass on a fallback
327
+ let pendingReason;
225
328
  const clock = storyFrameClock(story.clockStart, isClockHeldIn(window.location.search));
226
- shell.listen((message) => {
227
- if (controls !== undefined)
228
- answerShell(message, controls, storyId, catalogue.a11y, config.axeUrl, tellShell);
229
- });
329
+ // the controls with a frame module, which turn the panel's values first; their docs name those given by type
330
+ const typed = panelControls(config.argControls, source, location.story.file, reportError);
331
+ shell.listen((message) => typed.take(message, { story, controls, tellReady }, (drawn) => answerShell(message, drawn, storyId, pendingReason, catalogue.a11y, config.axeUrl, tellShell)));
230
332
  // the language's texts, and the switches the story reads (the language's provider reads its id among them); a
231
333
  // language the source gives as a loader is loaded as it is shown
232
334
  const shownFor = async (live) => {
@@ -249,7 +351,7 @@ export const mountFrame = async (container, config) => {
249
351
  storyId,
250
352
  canReplay: story.replay !== undefined,
251
353
  hasClock: story.clockStart !== undefined,
252
- args,
354
+ args: typed.withOwn(args),
253
355
  textKeys: storyTextKeysOf(story.args),
254
356
  argTypes: panelArgTypesOf(story.argTypes, excludedControls(story.parameters["controls"])),
255
357
  controls: story.controls,
@@ -262,22 +364,25 @@ export const mountFrame = async (container, config) => {
262
364
  container,
263
365
  story,
264
366
  identity: { id: storyId, name: location.story.name, title: location.component.title },
265
- ...playToolsOf(config),
367
+ ...playOptions(config, view.play === "on"),
266
368
  pluginSetups: plugins.setups,
267
369
  renderer: config.renderer,
268
370
  clock,
269
371
  // the first of the list is the innermost
270
372
  decorators: [...preview.decorators, ...plugins.decorators],
271
373
  ...shown,
272
- resolveArgs: (args) => storyArgsOf(args, source.namedValues),
273
- onControlsReady: (next) => {
374
+ resolveArgs: (args) => typed.storyArgs(storyArgsOf(args, source.namedValues)),
375
+ onControlsReady: (next, outcome) => {
274
376
  controls = next;
275
377
  clearRetry(sessionStorageOf(window), window.location.href);
276
378
  // the height first: the shell sizes the frame to the drawn story before anything reads it as ready, instead of
277
379
  // waiting on the resize observer, which may report after the ready status
278
380
  reportSize();
279
- document.documentElement.setAttribute(STATUS_ATTRIBUTE, "ready");
280
- tellReady();
381
+ reportScheme();
382
+ pendingReason = showOutcome(outcome, storyId, story.suspense.isExpected);
383
+ // the shell keeps an error it was told, and would read this as the story being fine again
384
+ if (outcome.status !== "error")
385
+ tellReady();
281
386
  changeShown = (live) => {
282
387
  shownCount += 1;
283
388
  const count = shownCount;
@@ -296,7 +401,7 @@ export const mountFrame = async (container, config) => {
296
401
  });
297
402
  };
298
403
  },
299
- onError: reportError,
404
+ onError: (message, stack) => reportError(message, stack),
300
405
  onTrace: (trace) => {
301
406
  tellShell({ type: "forgebook:play", storyId, trace });
302
407
  if (trace.status === "failed")
@@ -314,7 +419,7 @@ export const mountFrame = async (container, config) => {
314
419
  values: values.map(previewValue),
315
420
  details: values.map(detailOf)
316
421
  }),
317
- panelArgsOf: (values) => panelArgsOf(values, source.namedValues),
422
+ panelArgsOf: (values) => typed.panelArgs(values, panelArgsOf(values, source.namedValues)),
318
423
  onArgsChange: (args) => tellShell({ type: "forgebook:story-args", storyId, args })
319
424
  });
320
425
  // an edit of the story file, or of a file it re-exports stories from, draws the story anew in place: the reader keeps
@@ -370,6 +475,6 @@ export const mountFrame = async (container, config) => {
370
475
  window.location.reload();
371
476
  return;
372
477
  }
373
- fail(message);
478
+ failedToLoad(message, fail);
374
479
  }
375
480
  };
@@ -0,0 +1,67 @@
1
+ /**
2
+ * What a frame keeps of the custom controls with a frame module: the panel's latest values as their modules turned them,
3
+ * and the story's own values they named. The turning itself (`controlValues.ts`) loads when the shell first gives values.
4
+ *
5
+ * @remarks
6
+ * Turning values takes a load, so the shell's other messages wait for the values before them: a Replay or a matrix
7
+ * right after a change draws the changed values, as without any frame module.
8
+ *
9
+ * @module
10
+ */
11
+ import type { StorySource } from "@forgebook/story-format/source";
12
+ import type { PanelArgs, ShellMessage } from "../messages.ts";
13
+ import type { ControlStory } from "./controlValues.ts";
14
+ import type { StoryControls } from "./storyRun.ts";
15
+ /** The custom controls' frame modules, by control: how to load each. */
16
+ export type ControlFrameLoaders = Readonly<Record<string, () => Promise<unknown>>>;
17
+ /** The story a message is for, as `take` reads it. */
18
+ export type TakenStory<TControls> = {
19
+ /** The story as it is now. */
20
+ readonly story: Omit<ControlStory, "loadDocs">;
21
+ /** Its controls once drawn; none before, when nothing is answered. */
22
+ readonly controls: TControls | undefined;
23
+ /** Tells the shell the story's own values again. */
24
+ readonly tellReady: () => void;
25
+ };
26
+ /** A frame's custom controls with a frame module; with none, it hands the shell's messages on as they come. */
27
+ export type PanelControls = {
28
+ /**
29
+ * Answers a message of the shell: the panel's values turned first, then given to the story; any other message after
30
+ * the values before it. A later change of values overtakes one still turning.
31
+ *
32
+ * @param message - the message.
33
+ * @param story - the story as it is now, and its controls once drawn; none before, when nothing is answered.
34
+ * @param answer - answers any other message.
35
+ */
36
+ readonly take: <TControls extends Pick<StoryControls, "setPanelArgs">>(message: ShellMessage, story: TakenStory<TControls>, answer: (controls: TControls) => void) => void;
37
+ /**
38
+ * The story's values with the turned ones over them; an arg whose control failed is left out, so the story keeps its
39
+ * own: its JSON is not what the story takes.
40
+ *
41
+ * @param resolved - the panel's values as the story would take them without the modules.
42
+ */
43
+ readonly storyArgs: (resolved: Readonly<Record<string, unknown>>) => Readonly<Record<string, unknown>>;
44
+ /**
45
+ * The story's own values for the panel, with those the modules named over them.
46
+ *
47
+ * @param own - the story's own values, as plain data gives them.
48
+ */
49
+ readonly withOwn: (own: PanelArgs) => PanelArgs;
50
+ /**
51
+ * The panel's values of a story that changed its own args: a value a module made is given back as the panel's JSON it
52
+ * came from, which plain data cannot hold, so the panel keeps the reader's choice.
53
+ *
54
+ * @param values - the story's values.
55
+ * @param shown - the same as plain data gives them.
56
+ */
57
+ readonly panelArgs: (values: Readonly<Record<string, unknown>>, shown: PanelArgs) => PanelArgs;
58
+ };
59
+ /**
60
+ * A frame's custom controls with a frame module.
61
+ *
62
+ * @param loaders - the frame modules, by control; none hands every message on as it comes.
63
+ * @param source - the story's source, whose docs name the controls given by type.
64
+ * @param file - the story's file, the key of its docs.
65
+ * @param report - says what went wrong.
66
+ */
67
+ export declare const panelControls: (loaders: ControlFrameLoaders | undefined, source: StorySource, file: string, report: (message: string) => void) => PanelControls;
@@ -0,0 +1,110 @@
1
+ import { sourceFiles } from "../sourceFiles.js";
2
+ import { panelArgTypesOf } from "../storyArgTypes.js";
3
+ import { STATUS_ATTRIBUTE } from "./frameStatus.js";
4
+ import { panelArgsOf } from "./panelValues.js";
5
+ /**
6
+ * Whether a frame module may have something to do for the story, so its docs are worth loading: the panel gives a
7
+ * value (any prop may be one a control takes by type), the story's `argTypes` name a control with a frame module, or
8
+ * the story gives itself a value plain data cannot show (an icon a module could name). A story with none of these, most
9
+ * of a page's frames, loads neither the turning code nor its docs.
10
+ *
11
+ * @param args - the panel's values.
12
+ * @param story - the story.
13
+ * @param loaders - the frame modules, by control.
14
+ * @param source - the story's source, whose named values show some values plainly.
15
+ */
16
+ const mayTurn = (args, story, loaders, source) => {
17
+ if (Object.keys(args).length > 0)
18
+ return true;
19
+ const named = Object.values(panelArgTypesOf(story.argTypes, [])).some((argType) => argType.customControl !== undefined && Object.hasOwn(loaders, argType.customControl));
20
+ const shown = panelArgsOf(story.args, source.namedValues);
21
+ // an event's handler is no value a control sets: a type's control never takes an event
22
+ return (named ||
23
+ Object.entries(story.args).some(([name, value]) => value !== undefined && !Object.hasOwn(shown, name) && !/^on[A-Z]/.test(name)));
24
+ };
25
+ /**
26
+ * A frame's custom controls with a frame module.
27
+ *
28
+ * @param loaders - the frame modules, by control; none hands every message on as it comes.
29
+ * @param source - the story's source, whose docs name the controls given by type.
30
+ * @param file - the story's file, the key of its docs.
31
+ * @param report - says what went wrong.
32
+ */
33
+ export const panelControls = (loaders, source, file, report) => {
34
+ const loadDocs = sourceFiles(source).docs[file];
35
+ let made;
36
+ // the panel's values last given, as JSON: what the made values came from
37
+ let given = {};
38
+ let count = 0;
39
+ // the values still turning, which the other messages wait for
40
+ let turning = Promise.resolve();
41
+ const reportError = (error) => report(error instanceof Error ? error.message : String(error));
42
+ return {
43
+ take: (message, { story, controls, tellReady }, answer) => {
44
+ if (controls === undefined)
45
+ return;
46
+ if (message.type !== "forgebook:args") {
47
+ if (loaders === undefined)
48
+ answer(controls);
49
+ else
50
+ turning = turning.then(() => answer(controls));
51
+ }
52
+ else if (loaders === undefined)
53
+ controls.setPanelArgs(message.args);
54
+ else if (!mayTurn(message.args, story, loaders, source)) {
55
+ // nothing a module could turn or name: no module, and no docs, load for this story
56
+ const hadOwn = Object.keys(made?.own ?? {}).length > 0;
57
+ count += 1;
58
+ made = undefined;
59
+ turning = turning.then(() => {
60
+ controls.setPanelArgs(message.args);
61
+ if (hadOwn)
62
+ tellReady();
63
+ });
64
+ }
65
+ else {
66
+ count += 1;
67
+ const asked = count;
68
+ turning = import("./controlValues.js")
69
+ .then(({ controlValuesOf }) => controlValuesOf(message.args, loaders, { ...story, loadDocs }))
70
+ .then((next) => {
71
+ // values the reader changed again meanwhile are the next call's to draw
72
+ if (asked !== count)
73
+ return;
74
+ const isOwnNew = JSON.stringify(next.own) !== JSON.stringify(made?.own ?? {});
75
+ made = next;
76
+ given = message.args;
77
+ controls.setPanelArgs(message.args);
78
+ for (const problem of next.problems)
79
+ report(problem);
80
+ // the panel shows the story's own value a module names, told once known; a story in error stays one
81
+ const isError = document.documentElement.getAttribute(STATUS_ATTRIBUTE) === "error";
82
+ if (isOwnNew && !isError)
83
+ tellReady();
84
+ })
85
+ .catch((error) => {
86
+ reportError(error);
87
+ // without the modules the story still takes the values plain data can give
88
+ if (asked !== count)
89
+ return;
90
+ made = undefined;
91
+ controls.setPanelArgs(message.args);
92
+ });
93
+ }
94
+ },
95
+ storyArgs: (resolved) => {
96
+ const dropped = made?.dropped ?? [];
97
+ return Object.fromEntries(Object.entries({ ...resolved, ...made?.values }).filter(([name]) => !dropped.includes(name)));
98
+ },
99
+ withOwn: (own) => ({ ...own, ...made?.own }),
100
+ panelArgs: (values, shown) => {
101
+ const kept = Object.entries(made?.values ?? {}).flatMap(([name, value]) => {
102
+ const json = given[name];
103
+ return json !== undefined && Object.hasOwn(values, name) && values[name] === value
104
+ ? [[name, json]]
105
+ : [];
106
+ });
107
+ return { ...shown, ...Object.fromEntries(kept) };
108
+ }
109
+ };
110
+ };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A story's values as they cross to the panel, and back: its own value found by name among the source's named values, and
3
+ * a name the panel sent turned back into the value for the story. Read in the frame.
4
+ *
5
+ * @remarks
6
+ * A component or a function cannot cross between the shell and a frame; its name can, and each side holds the same source.
7
+ * Pure.
8
+ *
9
+ * @module
10
+ */
11
+ import { type NamedArg, type PanelArgs } from "../messages.ts";
12
+ import { type NamedValues } from "../namedValues.ts";
13
+ /**
14
+ * The name of a value among the named ones, when it is one of them.
15
+ *
16
+ * @param value - a story's own arg.
17
+ * @param namedValues - the source's named values.
18
+ */
19
+ export declare const nameOf: (value: unknown, namedValues: NamedValues) => NamedArg | undefined;
20
+ /**
21
+ * A story's own args as the panel can show them: plain data as it is, a named value by its name at any depth; an arg
22
+ * with anything else in it (an element, a function, a date) is left out whole.
23
+ *
24
+ * @param args - the story's args.
25
+ * @param namedValues - the source's named values; none by default.
26
+ */
27
+ export declare const panelArgsOf: (args: Readonly<Record<string, unknown>>, namedValues?: NamedValues) => PanelArgs;
28
+ /**
29
+ * The panel's values as the story takes them: a name turned back into its value, a name the source no longer offers
30
+ * left out so the story keeps its own, and the panel's "no value" as `undefined` over the story's own.
31
+ *
32
+ * @param args - the panel's values.
33
+ * @param namedValues - the source's named values; none by default.
34
+ */
35
+ export declare const storyArgsOf: (args: PanelArgs, namedValues?: NamedValues) => Readonly<Record<string, unknown>>;