forgebook 0.3.2 → 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 (693) hide show
  1. package/README.md +917 -74
  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 +54 -6
  187. package/dist/src/addressArgs.js +72 -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 +58 -14
  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/PluginBlockHost.js +2 -1
  307. package/dist/src/shell/PluginTabHost.js +19 -2
  308. package/dist/src/shell/PropFields.d.ts +3 -1
  309. package/dist/src/shell/PropFields.js +9 -6
  310. package/dist/src/shell/PropRows.d.ts +23 -2
  311. package/dist/src/shell/PropRows.js +58 -19
  312. package/dist/src/shell/PropsTab.d.ts +12 -5
  313. package/dist/src/shell/PropsTab.js +9 -21
  314. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  315. package/dist/src/shell/RefStoryPage.js +123 -0
  316. package/dist/src/shell/SearchPanel.js +51 -24
  317. package/dist/src/shell/Shell.d.ts +18 -0
  318. package/dist/src/shell/Shell.js +137 -22
  319. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  320. package/dist/src/shell/ShortcutHelp.js +66 -0
  321. package/dist/src/shell/Sidebar.d.ts +17 -4
  322. package/dist/src/shell/Sidebar.js +92 -41
  323. package/dist/src/shell/SidebarDocs.js +2 -2
  324. package/dist/src/shell/SidebarEntries.js +5 -3
  325. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  326. package/dist/src/shell/SidebarHandle.js +4 -4
  327. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  328. package/dist/src/shell/SidebarRefs.js +99 -0
  329. package/dist/src/shell/SidebarSearch.js +37 -9
  330. package/dist/src/shell/SignatureReference.js +3 -1
  331. package/dist/src/shell/Stage.d.ts +10 -2
  332. package/dist/src/shell/Stage.js +35 -60
  333. package/dist/src/shell/StatusBadges.d.ts +54 -0
  334. package/dist/src/shell/StatusBadges.js +77 -0
  335. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  336. package/dist/src/shell/StoryCodeBlock.js +7 -6
  337. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  338. package/dist/src/shell/SwitchGallery.js +17 -0
  339. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  340. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  341. package/dist/src/shell/TagFilter.d.ts +24 -0
  342. package/dist/src/shell/TagFilter.js +45 -0
  343. package/dist/src/shell/TagViews.d.ts +39 -0
  344. package/dist/src/shell/TagViews.js +20 -0
  345. package/dist/src/shell/Toolbar.d.ts +4 -1
  346. package/dist/src/shell/Toolbar.js +17 -7
  347. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  348. package/dist/src/shell/ToolbarControl.js +23 -6
  349. package/dist/src/shell/ViewMenuPanel.js +6 -1
  350. package/dist/src/shell/argChecks.d.ts +22 -0
  351. package/dist/src/shell/argChecks.js +20 -0
  352. package/dist/src/shell/asideStory.d.ts +17 -4
  353. package/dist/src/shell/asideStory.js +21 -4
  354. package/dist/src/shell/audienceSections.css +9 -9
  355. package/dist/src/shell/catalogueContext.d.ts +1 -1
  356. package/dist/src/shell/catalogueContext.js +6 -1
  357. package/dist/src/shell/codeSpans.d.ts +27 -0
  358. package/dist/src/shell/codeSpans.js +76 -0
  359. package/dist/src/shell/compareVariants.d.ts +4 -2
  360. package/dist/src/shell/compareVariants.js +16 -8
  361. package/dist/src/shell/composition.d.ts +23 -0
  362. package/dist/src/shell/composition.js +26 -0
  363. package/dist/src/shell/controlCycle.d.ts +1 -1
  364. package/dist/src/shell/controlCycle.js +3 -2
  365. package/dist/src/shell/customControls.d.ts +55 -0
  366. package/dist/src/shell/customControls.js +70 -0
  367. package/dist/src/shell/docPage.css +22 -22
  368. package/dist/src/shell/dockTabs.d.ts +19 -3
  369. package/dist/src/shell/dockTabs.js +28 -20
  370. package/dist/src/shell/embed.css +7 -7
  371. package/dist/src/shell/framesOrigin.d.ts +7 -0
  372. package/dist/src/shell/framesOrigin.js +1 -1
  373. package/dist/src/shell/galleryPlace.d.ts +20 -0
  374. package/dist/src/shell/galleryPlace.js +26 -0
  375. package/dist/src/shell/icons.d.ts +1 -0
  376. package/dist/src/shell/icons.js +1 -0
  377. package/dist/src/shell/keyboard.d.ts +14 -12
  378. package/dist/src/shell/keyboard.js +21 -6
  379. package/dist/src/shell/laterStrings.d.ts +29 -0
  380. package/dist/src/shell/laterStrings.js +42 -3
  381. package/dist/src/shell/mountShell.js +3 -0
  382. package/dist/src/shell/pageStrings.d.ts +4 -0
  383. package/dist/src/shell/pageStrings.js +4 -0
  384. package/dist/src/shell/pageTagView.d.ts +18 -0
  385. package/dist/src/shell/pageTagView.js +10 -0
  386. package/dist/src/shell/playMemory.d.ts +14 -0
  387. package/dist/src/shell/playMemory.js +8 -0
  388. package/dist/src/shell/propNotes.d.ts +23 -0
  389. package/dist/src/shell/propNotes.js +37 -0
  390. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  391. package/dist/src/shell/refIndexLoad.js +38 -0
  392. package/dist/src/shell/refParts.d.ts +34 -0
  393. package/dist/src/shell/refParts.js +9 -0
  394. package/dist/src/shell/refStory.css +21 -0
  395. package/dist/src/shell/refStrings.d.ts +13 -0
  396. package/dist/src/shell/refStrings.js +21 -0
  397. package/dist/src/shell/search.css +11 -11
  398. package/dist/src/shell/shell.css +348 -168
  399. package/dist/src/shell/shellScheme.js +2 -2
  400. package/dist/src/shell/shortcutHelp.css +64 -0
  401. package/dist/src/shell/stageArgs.d.ts +53 -0
  402. package/dist/src/shell/stageArgs.js +64 -0
  403. package/dist/src/shell/statusBadges.css +51 -0
  404. package/dist/src/shell/strings.d.ts +7 -16
  405. package/dist/src/shell/strings.js +12 -17
  406. package/dist/src/shell/switchGallery.css +104 -0
  407. package/dist/src/shell/tagFilter.css +46 -0
  408. package/dist/src/shell/tagView.d.ts +20 -0
  409. package/dist/src/shell/tagView.js +10 -0
  410. package/dist/src/shell/useAddressArgs.d.ts +27 -2
  411. package/dist/src/shell/useAddressArgs.js +71 -14
  412. package/dist/src/shell/useControlKeys.js +2 -2
  413. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  414. package/dist/src/shell/useEditedProblems.js +40 -0
  415. package/dist/src/shell/useFrameMessages.js +3 -0
  416. package/dist/src/shell/useListedTree.d.ts +13 -0
  417. package/dist/src/shell/useListedTree.js +32 -0
  418. package/dist/src/shell/usePageFrames.js +2 -2
  419. package/dist/src/shell/usePopover.d.ts +5 -0
  420. package/dist/src/shell/usePopover.js +7 -1
  421. package/dist/src/shell/useRefIndex.d.ts +22 -0
  422. package/dist/src/shell/useRefIndex.js +36 -0
  423. package/dist/src/shell/useScrollStops.d.ts +20 -0
  424. package/dist/src/shell/useScrollStops.js +41 -0
  425. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  426. package/dist/src/shell/useShortcutHelp.js +32 -0
  427. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  428. package/dist/src/shell/useSidebarOverlay.js +12 -4
  429. package/dist/src/shell/useStoryCode.d.ts +2 -1
  430. package/dist/src/shell/useStoryCode.js +12 -7
  431. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  432. package/dist/src/shell/useToolbarLayout.js +2 -2
  433. package/dist/src/shell/useWorstCase.d.ts +8 -2
  434. package/dist/src/shell/useWorstCase.js +2 -2
  435. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  436. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  437. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  438. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  439. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  440. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  441. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  442. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  443. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  444. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  445. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  446. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  447. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  448. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  449. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  450. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  451. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  452. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  453. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  454. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  455. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  456. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  457. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  458. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  459. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  460. package/dist/src/shell/worstArgs.d.ts +8 -5
  461. package/dist/src/shell/worstArgs.js +14 -7
  462. package/dist/src/shellTheme.d.ts +1 -1
  463. package/dist/src/shellTheme.js +15 -1
  464. package/dist/src/shellTheme.types.d.ts +4 -0
  465. package/dist/src/shellWord.d.ts +12 -0
  466. package/dist/src/shellWord.js +15 -0
  467. package/dist/src/sourceFiles.js +2 -1
  468. package/dist/src/storyArgTypes.d.ts +57 -0
  469. package/dist/src/storyArgTypes.js +195 -0
  470. package/dist/src/storyBackground.js +14 -3
  471. package/dist/src/storyCheck.d.ts +85 -3
  472. package/dist/src/storyCheck.js +23 -1
  473. package/dist/src/storyCodeText.d.ts +46 -0
  474. package/dist/src/storyCodeText.js +27 -0
  475. package/dist/src/storyControls.d.ts +100 -0
  476. package/dist/src/storyControls.js +100 -0
  477. package/dist/src/storyStatuses.d.ts +55 -0
  478. package/dist/src/storyStatuses.js +104 -0
  479. package/dist/src/storyTagNames.d.ts +25 -0
  480. package/dist/src/storyTagNames.js +25 -0
  481. package/dist/src/storyTags.d.ts +29 -0
  482. package/dist/src/storyTags.js +85 -0
  483. package/dist/src/storyTree.d.ts +13 -0
  484. package/dist/src/storyTree.js +24 -4
  485. package/dist/src/storybookArgs.d.ts +24 -0
  486. package/dist/src/storybookArgs.js +185 -0
  487. package/dist/src/switches.d.ts +66 -3
  488. package/dist/src/switches.js +42 -1
  489. package/dist/src/valueSchema.d.ts +28 -0
  490. package/dist/src/valueSchema.js +196 -0
  491. package/dist/src/valueShape.d.ts +94 -0
  492. package/dist/src/valueShape.js +25 -0
  493. package/dist/src/viewState.d.ts +8 -3
  494. package/dist/src/viewState.js +27 -10
  495. package/dist/src/vite/adapter.d.ts +40 -2
  496. package/dist/src/vite/adapter.js +1 -0
  497. package/dist/src/vite/agent.types.d.ts +347 -7
  498. package/dist/src/vite/agentApi.d.ts +23 -0
  499. package/dist/src/vite/agentApi.js +90 -17
  500. package/dist/src/vite/agentIndex.d.ts +0 -2
  501. package/dist/src/vite/agentIndex.js +5 -6
  502. package/dist/src/vite/agentRoutes.d.ts +20 -1
  503. package/dist/src/vite/agentRoutes.js +106 -65
  504. package/dist/src/vite/agentStatuses.d.ts +42 -0
  505. package/dist/src/vite/agentStatuses.js +67 -0
  506. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  507. package/dist/src/vite/agentStoryCode.js +38 -0
  508. package/dist/src/vite/agentVisibility.d.ts +47 -0
  509. package/dist/src/vite/agentVisibility.js +174 -0
  510. package/dist/src/vite/appAudit.d.ts +134 -0
  511. package/dist/src/vite/appAudit.js +333 -0
  512. package/dist/src/vite/appBuildOption.d.ts +53 -0
  513. package/dist/src/vite/appBuildOption.js +55 -0
  514. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  515. package/dist/src/vite/appTokenFiles.js +433 -0
  516. package/dist/src/vite/appTokens.d.ts +23 -0
  517. package/dist/src/vite/appTokens.js +275 -0
  518. package/dist/src/vite/builtTexts.d.ts +10 -0
  519. package/dist/src/vite/builtTexts.js +59 -22
  520. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  521. package/dist/src/vite/catalogueConfig.js +15 -3
  522. package/dist/src/vite/changeCoverage.d.ts +74 -0
  523. package/dist/src/vite/changeCoverage.js +120 -0
  524. package/dist/src/vite/changedRoute.d.ts +30 -0
  525. package/dist/src/vite/changedRoute.js +197 -0
  526. package/dist/src/vite/checkCode.d.ts +105 -3
  527. package/dist/src/vite/checkCode.js +323 -36
  528. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  529. package/dist/src/vite/checkoutWatch.js +287 -0
  530. package/dist/src/vite/closeWatch.d.ts +8 -0
  531. package/dist/src/vite/closeWatch.js +1 -1
  532. package/dist/src/vite/componentCache.d.ts +8 -0
  533. package/dist/src/vite/componentCache.js +66 -0
  534. package/dist/src/vite/componentGraph.d.ts +71 -0
  535. package/dist/src/vite/componentGraph.js +133 -0
  536. package/dist/src/vite/componentRules.d.ts +33 -0
  537. package/dist/src/vite/componentRules.js +105 -0
  538. package/dist/src/vite/componentScan.d.ts +69 -0
  539. package/dist/src/vite/componentScan.js +418 -0
  540. package/dist/src/vite/compositionCheck.d.ts +15 -0
  541. package/dist/src/vite/compositionCheck.js +243 -0
  542. package/dist/src/vite/config.d.ts +32 -1
  543. package/dist/src/vite/configFile.d.ts +14 -2
  544. package/dist/src/vite/configFile.js +124 -40
  545. package/dist/src/vite/configKeys.d.ts +15 -0
  546. package/dist/src/vite/configKeys.js +171 -0
  547. package/dist/src/vite/configLoadError.d.ts +23 -0
  548. package/dist/src/vite/configLoadError.js +71 -0
  549. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  550. package/dist/src/vite/cssDeclarations.js +290 -0
  551. package/dist/src/vite/cssImports.d.ts +14 -0
  552. package/dist/src/vite/cssImports.js +48 -0
  553. package/dist/src/vite/cssReferences.d.ts +54 -0
  554. package/dist/src/vite/cssReferences.js +157 -0
  555. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  556. package/dist/src/vite/cssTokenValues.js +233 -0
  557. package/dist/src/vite/designTokens.d.ts +24 -0
  558. package/dist/src/vite/designTokens.js +5 -1
  559. package/dist/src/vite/docsExtractor.d.ts +9 -3
  560. package/dist/src/vite/docsExtractor.js +11 -3
  561. package/dist/src/vite/docsProgram.d.ts +17 -4
  562. package/dist/src/vite/docsProgram.js +52 -11
  563. package/dist/src/vite/docsWorker.js +7 -2
  564. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  565. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  566. package/dist/src/vite/fileImports.d.ts +17 -0
  567. package/dist/src/vite/fileImports.js +57 -0
  568. package/dist/src/vite/findComponent.d.ts +10 -2
  569. package/dist/src/vite/findComponent.js +27 -22
  570. package/dist/src/vite/findRoute.js +3 -2
  571. package/dist/src/vite/forcedStates.d.ts +9 -2
  572. package/dist/src/vite/forcedStates.js +12 -3
  573. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  574. package/dist/src/vite/forgebookPlugin.js +52 -72
  575. package/dist/src/vite/frameErrors.d.ts +19 -0
  576. package/dist/src/vite/frameErrors.js +70 -0
  577. package/dist/src/vite/framesServer.d.ts +12 -0
  578. package/dist/src/vite/framesServer.js +21 -4
  579. package/dist/src/vite/functionComponentDocs.js +81 -12
  580. package/dist/src/vite/generatedModules.js +4 -2
  581. package/dist/src/vite/gitChange.d.ts +38 -5
  582. package/dist/src/vite/gitChange.js +71 -11
  583. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  584. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  585. package/dist/src/vite/hotSnippets.d.ts +38 -14
  586. package/dist/src/vite/hotSnippets.js +137 -39
  587. package/dist/src/vite/importedNames.d.ts +37 -0
  588. package/dist/src/vite/importedNames.js +138 -0
  589. package/dist/src/vite/indexFields.d.ts +6 -0
  590. package/dist/src/vite/indexFields.js +21 -0
  591. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  592. package/dist/src/vite/indexStoryFile.js +22 -157
  593. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  594. package/dist/src/vite/jsxCallSites.js +200 -0
  595. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  596. package/dist/src/vite/jsxInScripts.js +138 -0
  597. package/dist/src/vite/jsxTree.d.ts +20 -0
  598. package/dist/src/vite/jsxTree.js +163 -0
  599. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  600. package/dist/src/vite/lineAndColumn.js +18 -0
  601. package/dist/src/vite/lookAlikes.d.ts +65 -0
  602. package/dist/src/vite/lookAlikes.js +228 -0
  603. package/dist/src/vite/nearestToken.d.ts +17 -0
  604. package/dist/src/vite/nearestToken.js +9 -2
  605. package/dist/src/vite/packageEntries.d.ts +42 -0
  606. package/dist/src/vite/packageEntries.js +127 -0
  607. package/dist/src/vite/pages.d.ts +9 -1
  608. package/dist/src/vite/pages.js +108 -4
  609. package/dist/src/vite/pluginConfig.js +4 -0
  610. package/dist/src/vite/pluginIds.d.ts +2 -0
  611. package/dist/src/vite/pluginIds.js +5 -1
  612. package/dist/src/vite/pluginModules.d.ts +81 -11
  613. package/dist/src/vite/pluginModules.js +109 -21
  614. package/dist/src/vite/prebundled.d.ts +57 -15
  615. package/dist/src/vite/prebundled.js +80 -0
  616. package/dist/src/vite/previewTags.d.ts +25 -0
  617. package/dist/src/vite/previewTags.js +56 -0
  618. package/dist/src/vite/projectFiles.d.ts +54 -0
  619. package/dist/src/vite/projectFiles.js +116 -0
  620. package/dist/src/vite/projectPostcss.d.ts +70 -0
  621. package/dist/src/vite/projectPostcss.js +250 -0
  622. package/dist/src/vite/propDocs.d.ts +12 -0
  623. package/dist/src/vite/propDocs.js +130 -58
  624. package/dist/src/vite/propKind.d.ts +40 -0
  625. package/dist/src/vite/propKind.js +71 -0
  626. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  627. package/dist/src/vite/propTypeNotes.js +51 -0
  628. package/dist/src/vite/publishedExports.d.ts +27 -0
  629. package/dist/src/vite/publishedExports.js +298 -0
  630. package/dist/src/vite/realFolder.d.ts +6 -0
  631. package/dist/src/vite/realFolder.js +25 -0
  632. package/dist/src/vite/refsConfig.d.ts +39 -0
  633. package/dist/src/vite/refsConfig.js +54 -0
  634. package/dist/src/vite/reuseCheck.d.ts +45 -0
  635. package/dist/src/vite/reuseCheck.js +260 -0
  636. package/dist/src/vite/runningVersions.d.ts +33 -0
  637. package/dist/src/vite/runningVersions.js +25 -0
  638. package/dist/src/vite/scriptProblems.d.ts +60 -0
  639. package/dist/src/vite/scriptProblems.js +155 -0
  640. package/dist/src/vite/searchModule.js +3 -2
  641. package/dist/src/vite/searchRoute.js +4 -2
  642. package/dist/src/vite/shapeDocs.d.ts +36 -0
  643. package/dist/src/vite/shapeDocs.js +177 -0
  644. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  645. package/dist/src/vite/singleFileComponent.js +83 -0
  646. package/dist/src/vite/sourceText.d.ts +34 -0
  647. package/dist/src/vite/sourceText.js +72 -0
  648. package/dist/src/vite/sourceTokens.d.ts +7 -0
  649. package/dist/src/vite/sourceTokens.js +7 -2
  650. package/dist/src/vite/stackLines.d.ts +49 -0
  651. package/dist/src/vite/stackLines.js +96 -0
  652. package/dist/src/vite/storyCode.d.ts +22 -7
  653. package/dist/src/vite/storyCode.js +263 -37
  654. package/dist/src/vite/storyCoverage.d.ts +48 -0
  655. package/dist/src/vite/storyCoverage.js +179 -0
  656. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  657. package/dist/src/vite/storyFilesModule.js +105 -15
  658. package/dist/src/vite/storyPatterns.d.ts +31 -0
  659. package/dist/src/vite/storyPatterns.js +140 -5
  660. package/dist/src/vite/storyReach.d.ts +10 -2
  661. package/dist/src/vite/storyReach.js +15 -11
  662. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  663. package/dist/src/vite/storyTopLevel.js +146 -0
  664. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  665. package/dist/src/vite/storylessRoutes.js +210 -19
  666. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  667. package/dist/src/vite/switchValuesCheck.js +164 -0
  668. package/dist/src/vite/switchesDocument.d.ts +15 -0
  669. package/dist/src/vite/switchesDocument.js +47 -0
  670. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  671. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  672. package/dist/src/vite/textImports.d.ts +15 -0
  673. package/dist/src/vite/textImports.js +58 -0
  674. package/dist/src/vite/textModules.d.ts +6 -5
  675. package/dist/src/vite/textModules.js +13 -8
  676. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  677. package/dist/src/vite/tokenAnswers.js +11 -7
  678. package/dist/src/vite/typeParameters.d.ts +83 -0
  679. package/dist/src/vite/typeParameters.js +270 -0
  680. package/dist/src/vite/unionProps.d.ts +37 -0
  681. package/dist/src/vite/unionProps.js +121 -0
  682. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  683. package/dist/src/vite/unresolvedTokens.js +193 -0
  684. package/dist/src/vite/usageGraph.js +10 -52
  685. package/dist/src/vite/usageGuidance.d.ts +9 -2
  686. package/dist/src/vite/usageGuidance.js +36 -8
  687. package/dist/src/vite/usageImports.d.ts +35 -0
  688. package/dist/src/vite/usageImports.js +280 -0
  689. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  690. package/dist/src/vite/visibilityRoute.js +320 -0
  691. package/dist/src/worstCase.d.ts +2 -0
  692. package/dist/src/worstCase.js +2 -0
  693. package/package.json +28 -8
@@ -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;
@@ -1,3 +1,18 @@
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 or an object as a literal
9
+ * (`options={["weekly", "monthly"]}`); `children` goes between the tags. Only plain data and named values cross from
10
+ * the frame: a function, an element or other code the story file writes comes as written (`written`), in braces
11
+ * (`onClick={fn()}`), an element between the tags as it is, and is written over its value. Pure.
12
+ *
13
+ * @module
14
+ */
15
+ import { argExpression } from "./argExpression.js";
1
16
  import { isNamedArg } from "./messages.js";
2
17
  /** One attribute as JSX writes it. */
3
18
  const attribute = (name, value) => {
@@ -8,29 +23,50 @@ const attribute = (name, value) => {
8
23
  // a named value is written by its name, as the source's module exports it (`icon={IconFolder}`)
9
24
  if (isNamedArg(value))
10
25
  return `${name}={${value.named}}`;
11
- // a multiple choice's values, as the source writes a list
12
- if (Array.isArray(value))
13
- return `${name}={[${value.map((item) => JSON.stringify(item)).join(", ")}]}`;
14
- return `${name}={${String(value)}}`;
26
+ // a list or an object, as the source writes one; `null`, a number and `false` read as themselves
27
+ const expression = argExpression(value, {
28
+ text: (text) => JSON.stringify(text),
29
+ named: (named) => named.named
30
+ });
31
+ return `${name}={${expression}}`;
15
32
  };
16
33
  /** The longest line the attributes stay on one line for, in characters. */
17
34
  const ONE_LINE = 80;
35
+ /** Code that spans lines, its lines past the first indented by one level, for a place one level in. */
36
+ const indented = (text) => text.replace(/\n/g, "\n ");
37
+ /** What goes between the tags, when something does: written code (an element as it is), else the value as text. */
38
+ const childrenOf = (args, written) => {
39
+ const code = written["children"];
40
+ if (code !== undefined)
41
+ return code.startsWith("<") ? code : `{${code}}`;
42
+ const { children } = args;
43
+ return children === undefined || children === null || children === false ? undefined : String(children);
44
+ };
18
45
  /**
19
46
  * A component's JSX with these args.
20
47
  *
21
48
  * @param component - the component's name (`IconTile`).
22
49
  * @param args - the values, in the order they are written.
50
+ * @param written - the args the story file writes as code, each as written; after the values in the order.
23
51
  */
24
- export const jsxCode = (component, args) => {
25
- const { children, ...rest } = args;
26
- const attributes = Object.entries(rest).map(([name, value]) => attribute(name, value));
27
- const inner = children === undefined || children === null || children === false ? undefined : String(children);
52
+ export const jsxCode = (component, args, written = {}) => {
53
+ const names = [...new Set([...Object.keys(args), ...Object.keys(written)])].filter((name) => name !== "children");
54
+ const attributes = names.flatMap((name) => {
55
+ const code = written[name];
56
+ if (code !== undefined)
57
+ return [`${name}={${code}}`];
58
+ const value = args[name];
59
+ return value === undefined ? [] : [attribute(name, value)];
60
+ });
61
+ const inner = childrenOf(args, written);
28
62
  const oneLine = [component, ...attributes].join(" ");
29
- const isOneLine = oneLine.length + 2 <= ONE_LINE;
63
+ const isOneLine = oneLine.length + 2 <= ONE_LINE && !oneLine.includes("\n");
30
64
  const opening = isOneLine
31
65
  ? `<${oneLine}`
32
- : `<${component}\n${attributes.map((text) => ` ${text}`).join("\n")}\n`;
66
+ : `<${component}\n${attributes.map((text) => ` ${indented(text)}`).join("\n")}\n`;
33
67
  if (inner === undefined)
34
68
  return `${opening}${isOneLine ? " " : ""}/>`;
69
+ if (inner.includes("\n"))
70
+ return `${opening}>\n ${indented(inner)}\n</${component}>`;
35
71
  return `${opening}>${inner}</${component}>`;
36
72
  };
@@ -6,8 +6,9 @@
6
6
  * @remarks
7
7
  * A frame sends them over Vite's own connection to the dev server (`import.meta.hot`), so a build has none and nothing
8
8
  * is sent outside development. Only frames open in a browser report: a command that opens none (`forgebook check`)
9
- * reports its own problems. Each error is numbered, so a client asks only for those after the last it read. Pure apart
10
- * from the ring's own state.
9
+ * reports its own problems. Each error is numbered, so a client asks only for those after the last it read. A story's
10
+ * error comes with its stack, which the server maps (`vite/stackLines.ts`): it keeps the place, and answers the frame
11
+ * with the stack mapped, so the frame shows the lines as written. Pure apart from the ring's own state.
11
12
  *
12
13
  * @module
13
14
  */
@@ -25,9 +26,19 @@ export type LiveErrorReport = {
25
26
  readonly view: string;
26
27
  /** What went wrong. */
27
28
  readonly message: string;
29
+ /** The error's stack as the browser wrote it, in the lines of the code it ran: the dev server maps it. */
30
+ readonly stack?: string;
31
+ };
32
+ /** An error as the dev server keeps it, before its number: the place its stack maps to instead of the stack. */
33
+ export type KeptErrorReport = Omit<LiveErrorReport, "stack"> & {
34
+ /**
35
+ * Where it was thrown, as `file:line:column` in the file as written, relative to the project: the first place of
36
+ * its stack outside `node_modules`. None when the frame sent no stack or none of it could be mapped.
37
+ */
38
+ readonly place?: string;
28
39
  };
29
40
  /** An error as the dev server keeps it: numbered, with when it came. */
30
- export type LiveError = LiveErrorReport & {
41
+ export type LiveError = KeptErrorReport & {
31
42
  /** Its number, counted from 1 since the server started. */
32
43
  readonly n: number;
33
44
  /** When it came, in ISO 8601. */
@@ -36,7 +47,7 @@ export type LiveError = LiveErrorReport & {
36
47
  /** The errors kept, and how to add and read them. */
37
48
  export type LiveErrors = {
38
49
  /** Keeps a frame's error, the oldest let go past the limit. */
39
- readonly add: (report: LiveErrorReport, at: Date) => LiveError;
50
+ readonly add: (report: KeptErrorReport, at: Date) => LiveError;
40
51
  /** The errors after a number, oldest first; every one kept for 0. */
41
52
  readonly since: (n: number) => LiveError[];
42
53
  /** The number of the last error, 0 before any. */
@@ -48,6 +59,21 @@ export type LiveErrors = {
48
59
  * @param value - what came over the connection.
49
60
  */
50
61
  export declare const isLiveErrorReport: (value: unknown) => value is LiveErrorReport;
62
+ /** The event the dev server answers a frame's stack under, mapped to the lines of the files as written. */
63
+ export declare const MAPPED_STACK_EVENT = "forgebook:mapped-stack";
64
+ /** A stack the dev server mapped, for the frame that sent it. */
65
+ export type MappedStackAnswer = {
66
+ /** The stack as the frame sent it. */
67
+ readonly sent: string;
68
+ /** The stack mapped. */
69
+ readonly stack: string;
70
+ };
71
+ /**
72
+ * Whether the dev server's message is a mapped stack.
73
+ *
74
+ * @param value - what came over the connection.
75
+ */
76
+ export declare const isMappedStackAnswer: (value: unknown) => value is MappedStackAnswer;
51
77
  /**
52
78
  * A ring of the last errors.
53
79
  *
@@ -6,8 +6,9 @@
6
6
  * @remarks
7
7
  * A frame sends them over Vite's own connection to the dev server (`import.meta.hot`), so a build has none and nothing
8
8
  * is sent outside development. Only frames open in a browser report: a command that opens none (`forgebook check`)
9
- * reports its own problems. Each error is numbered, so a client asks only for those after the last it read. Pure apart
10
- * from the ring's own state.
9
+ * reports its own problems. Each error is numbered, so a client asks only for those after the last it read. A story's
10
+ * error comes with its stack, which the server maps (`vite/stackLines.ts`): it keeps the place, and answers the frame
11
+ * with the stack mapped, so the frame shows the lines as written. Pure apart from the ring's own state.
11
12
  *
12
13
  * @module
13
14
  */
@@ -27,7 +28,21 @@ export const isLiveErrorReport = (value) => typeof value === "object" &&
27
28
  "view" in value &&
28
29
  typeof value.view === "string" &&
29
30
  "message" in value &&
30
- typeof value.message === "string";
31
+ typeof value.message === "string" &&
32
+ (!("stack" in value) || typeof value.stack === "string");
33
+ /** The event the dev server answers a frame's stack under, mapped to the lines of the files as written. */
34
+ export const MAPPED_STACK_EVENT = "forgebook:mapped-stack";
35
+ /**
36
+ * Whether the dev server's message is a mapped stack.
37
+ *
38
+ * @param value - what came over the connection.
39
+ */
40
+ export const isMappedStackAnswer = (value) => typeof value === "object" &&
41
+ value !== null &&
42
+ "sent" in value &&
43
+ typeof value.sent === "string" &&
44
+ "stack" in value &&
45
+ typeof value.stack === "string";
31
46
  /**
32
47
  * A ring of the last errors.
33
48
  *
@@ -7,24 +7,38 @@
7
7
  * failed. The shell asks the frame to
8
8
  * replay, sends the props panel's values, names the events to record, and runs, holds, speeds up or restarts the
9
9
  * story clock. Every message is checked on arrival
10
- * (`isFrameMessage`, `isShellMessage`): a page may receive messages from anything it embeds or is embedded in.
10
+ * (`isFrameMessage`, `frame/shellMessageCheck.ts`): a page may receive messages from anything it embeds or is embedded in.
11
11
  *
12
12
  * @module
13
13
  */
14
14
  import type { StoryControlsSetting } from "@forgebook/story-format/source";
15
15
  import { type Violation } from "./a11y.ts";
16
16
  import { type PanelArgTypes } from "./argTypes.ts";
17
- import { type Matrix } from "./matrix.ts";
17
+ import type { Matrix } from "./matrix.ts";
18
18
  import { type PlayTrace } from "./playTrace.ts";
19
19
  import type { JsonValue } from "./plugin.ts";
20
- import { type ClockState } from "./storyClock.ts";
20
+ import type { ClockState } from "./storyClock.ts";
21
21
  import { type FixedView } from "./storyGlobals.ts";
22
- import { type LiveView, type MeasureTool } from "./viewState.ts";
22
+ import type { LiveView, MeasureTool } from "./viewState.ts";
23
23
  /**
24
- * An arg the props panel can show and set: what crosses between the documents as is. A list of texts or numbers is a
25
- * multiple choice's (`check`, `multi-select`); a date is a number of ms since the Unix epoch, as Storybook's.
24
+ * An arg the props panel can show and set: what crosses between the documents as is. Plain JSON, so a link can hold it:
25
+ * a list and an object nest (`valueShape.ts` says what a prop's look like); a date is a number of ms since the Unix
26
+ * epoch, as Storybook's. Two objects mean more than their fields: a `NamedArg`, and at the top of the args an `UnsetArg`.
26
27
  */
27
- export type ArgValue = string | number | boolean | null | readonly (string | number)[] | NamedArg;
28
+ export type ArgValue = string | number | boolean | null | readonly ArgValue[] | ArgObject;
29
+ /** An object among the args: named fields. */
30
+ export type ArgObject = {
31
+ /** Each field's value. */
32
+ readonly [name: string]: ArgValue;
33
+ };
34
+ /**
35
+ * A prop the panel leaves without a value, over what the story's own args give it: the story receives `undefined`, which
36
+ * neither an empty text nor the panel holding nothing says (the panel holding nothing gives the story's own value).
37
+ */
38
+ export type UnsetArg = {
39
+ /** The mark: a name no prop's own object holds. */
40
+ readonly forgebookUnset: true;
41
+ };
28
42
  /**
29
43
  * A value the panel names instead of sending it: one of the source's `namedValues` (an icon component), which cannot
30
44
  * cross between the documents; the frame looks the name up in its own copy of the source.
@@ -110,6 +124,16 @@ export type FrameMessage = {
110
124
  readonly storyId: string;
111
125
  /** What went wrong. */
112
126
  readonly message: string;
127
+ } | {
128
+ /**
129
+ * The colour scheme the frame's document draws in: the browser paints an opaque canvas behind a document whose
130
+ * scheme differs from its frame element's, so the shell gives the element the same one (`canvasScheme.ts`).
131
+ */
132
+ readonly type: "forgebook:scheme";
133
+ /** The story's id. */
134
+ readonly storyId: string;
135
+ /** The scheme. */
136
+ readonly scheme: "light" | "dark";
113
137
  } | {
114
138
  /** The story could not be shown. */
115
139
  readonly type: "forgebook:error";
@@ -138,6 +162,8 @@ export type FrameMessage = {
138
162
  /** The tab the note is for; none for the plugin's first. */
139
163
  readonly tab: string | null;
140
164
  };
165
+ /** What the Interactions tab asks of a play: to run again, to step through from the start, to do its next action, to run on. */
166
+ export type PlayStepCommand = "again" | "start" | "next" | "continue";
141
167
  /** From the shell to a frame. */
142
168
  export type ShellMessage = {
143
169
  /** Replay the story, as it declares. */
@@ -164,7 +190,10 @@ export type ShellMessage = {
164
190
  readonly matrix: Matrix | null;
165
191
  } | {
166
192
  /** Mount the story again, so its play function runs again. */
167
- readonly type: "forgebook:play-again";
193
+ /** Runs the play again on a fresh mount, or steps through it. */
194
+ readonly type: "forgebook:play-step";
195
+ /** What to do. */
196
+ readonly command: PlayStepCommand;
168
197
  } | {
169
198
  /** Run the accessibility check on the story as it is now. */
170
199
  readonly type: "forgebook:check";
@@ -187,6 +216,46 @@ export type ShellMessage = {
187
216
  /** The switches' values, the backdrop and the text size. */
188
217
  readonly view: LiveView;
189
218
  };
219
+ /**
220
+ * Whether a value is a list among the args.
221
+ *
222
+ * @param value - an arg's value.
223
+ */
224
+ export declare const isArgList: (value: ArgValue) => value is readonly ArgValue[];
225
+ /**
226
+ * Whether a value is an object among the args (a named value is one too).
227
+ *
228
+ * @param value - an arg's value.
229
+ */
230
+ export declare const isArgObject: (value: ArgValue) => value is ArgObject;
231
+ /**
232
+ * A `Date`, as the address and the messages write it: JSON has none, and the story must receive one. `frame/panelValues.ts`
233
+ * reads it both ways.
234
+ */
235
+ export type DateArg = {
236
+ /** The moment, as `Date.toISOString` writes it. */
237
+ readonly forgebookDate: string;
238
+ };
239
+ /**
240
+ * Whether a value is a `Date` as the panel writes it.
241
+ *
242
+ * @param value - an arg's value.
243
+ */
244
+ export declare const isDateArg: (value: unknown) => value is DateArg;
245
+ /** The value that says a prop has none, as the address and the messages write it. */
246
+ export declare const UNSET_ARG: UnsetArg;
247
+ /**
248
+ * Whether a value is the panel's "no value".
249
+ *
250
+ * @param value - an arg's value.
251
+ */
252
+ export declare const isUnsetArg: (value: unknown) => value is UnsetArg;
253
+ /**
254
+ * Whether a value is one the panel can show.
255
+ *
256
+ * @param value - any value.
257
+ */
258
+ export declare const isArgValue: (value: unknown) => value is ArgValue;
190
259
  /** Whether a value is a set of args the panel can show. */
191
260
  export declare const isPanelArgs: (value: unknown) => value is PanelArgs;
192
261
  /**
@@ -207,25 +276,6 @@ export declare const isNamedArg: (value: unknown) => value is NamedArg;
207
276
  * @param value - the message's data.
208
277
  */
209
278
  export declare const isFrameMessage: (value: unknown) => value is FrameMessage;
210
- /**
211
- * Whether a received message is one the shell sends.
212
- *
213
- * @param value - the message's data.
214
- */
215
- export declare const isShellMessage: (value: unknown) => value is ShellMessage;
216
- /**
217
- * An event's argument written short for the call log.
218
- *
219
- * @param value - anything a callback received.
220
- */
221
- export declare const previewValue: (value: unknown) => string;
222
- /**
223
- * An argument's content for the log, when it is an object or a list: JSON, two spaces deep, a function as `ƒ`, an
224
- * object met again as `[circular]`, cut past `DETAIL_LENGTH`; `null` for anything else (a text, a number, an event).
225
- *
226
- * @param value - anything a callback received.
227
- */
228
- export declare const detailOf: (value: unknown) => string | null;
229
279
  /**
230
280
  * The panel's values written in an address (`args`): JSON, the only form that keeps `"12"` and `12` apart.
231
281
  *
@@ -7,27 +7,68 @@
7
7
  * failed. The shell asks the frame to
8
8
  * replay, sends the props panel's values, names the events to record, and runs, holds, speeds up or restarts the
9
9
  * story clock. Every message is checked on arrival
10
- * (`isFrameMessage`, `isShellMessage`): a page may receive messages from anything it embeds or is embedded in.
10
+ * (`isFrameMessage`, `frame/shellMessageCheck.ts`): a page may receive messages from anything it embeds or is embedded in.
11
11
  *
12
12
  * @module
13
13
  */
14
14
  import { isViolation } from "./a11y.js";
15
15
  import { isPanelArgTypes } from "./argTypes.js";
16
- import { isMatrix } from "./matrix.js";
17
16
  import { isPlayTrace } from "./playTrace.js";
18
- import { isClockRate } from "./storyClock.js";
19
17
  import { isFixedView } from "./storyGlobals.js";
20
- import { MEASURE_TOOLS } from "./viewState.js";
21
18
  /** Whether a value is a plain object. */
22
19
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
20
+ /** The deepest a value nests: a link's `[[[…` must not run the reader out of stack. */
21
+ const MOST_DEPTH = 16;
22
+ /** The names a value never holds: a component that merges it would write on every object of the page. */
23
+ const PROTOTYPE_NAMES = ["__proto__", "constructor", "prototype"];
24
+ /** Whether a value, this deep, is one the panel can show. */
25
+ const isArgValueAt = (value, depth) => {
26
+ if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean")
27
+ return true;
28
+ if (depth >= MOST_DEPTH)
29
+ return false;
30
+ if (Array.isArray(value))
31
+ return value.every((item) => isArgValueAt(item, depth + 1));
32
+ return (isRecord(value) &&
33
+ Object.entries(value).every(([name, item]) => !PROTOTYPE_NAMES.includes(name) && isArgValueAt(item, depth + 1)));
34
+ };
35
+ /**
36
+ * Whether a value is a list among the args.
37
+ *
38
+ * @param value - an arg's value.
39
+ */
40
+ export const isArgList = (value) => Array.isArray(value);
41
+ /**
42
+ * Whether a value is an object among the args (a named value is one too).
43
+ *
44
+ * @param value - an arg's value.
45
+ */
46
+ export const isArgObject = (value) => isRecord(value);
47
+ /**
48
+ * Whether a value is a `Date` as the panel writes it.
49
+ *
50
+ * @param value - an arg's value.
51
+ */
52
+ export const isDateArg = (value) => isRecord(value) &&
53
+ typeof value["forgebookDate"] === "string" &&
54
+ Object.keys(value).length === 1 &&
55
+ !Number.isNaN(Date.parse(value["forgebookDate"]));
56
+ /** The value that says a prop has none, as the address and the messages write it. */
57
+ export const UNSET_ARG = { forgebookUnset: true };
58
+ /**
59
+ * Whether a value is the panel's "no value".
60
+ *
61
+ * @param value - an arg's value.
62
+ */
63
+ export const isUnsetArg = (value) => isRecord(value) && value["forgebookUnset"] === true && Object.keys(value).length === 1;
64
+ /**
65
+ * Whether a value is one the panel can show.
66
+ *
67
+ * @param value - any value.
68
+ */
69
+ export const isArgValue = (value) => isArgValueAt(value, 0);
23
70
  /** Whether a value is a set of args the panel can show. */
24
- export const isPanelArgs = (value) => isRecord(value) &&
25
- Object.values(value).every((arg) => arg === null ||
26
- typeof arg === "string" ||
27
- typeof arg === "number" ||
28
- typeof arg === "boolean" ||
29
- isChoiceList(arg) ||
30
- isNamedArg(arg));
71
+ export const isPanelArgs = (value) => isRecord(value) && Object.values(value).every(isArgValue);
31
72
  /**
32
73
  * Whether a value is a multiple choice's values: a list of texts and numbers.
33
74
  *
@@ -39,15 +80,10 @@ export const isChoiceList = (value) => Array.isArray(value) && value.every((item
39
80
  *
40
81
  * @param value - any value.
41
82
  */
42
- export const isNamedArg = (value) => isRecord(value) && typeof value["of"] === "string" && typeof value["named"] === "string";
43
- /** Whether a value is the view's live part. */
44
- const isLiveView = (value) => isRecord(value) &&
45
- isRecord(value["switches"]) &&
46
- Object.values(value["switches"]).every((switchValue) => typeof switchValue === "string") &&
47
- typeof value["backdrop"] === "string" &&
48
- typeof value["text"] === "number";
49
- /** Whether a value is a story clock's state. */
50
- const isClockState = (value) => isRecord(value) && typeof value["isRunning"] === "boolean" && isClockRate(value["rate"]);
83
+ export const isNamedArg = (value) => isRecord(value) &&
84
+ typeof value["of"] === "string" &&
85
+ typeof value["named"] === "string" &&
86
+ Object.keys(value).length === 2;
51
87
  /** Whether a value is a list of strings. */
52
88
  const isStringList = (value) => Array.isArray(value) && value.every((item) => typeof item === "string");
53
89
  /** Whether a value is a controls setting: every prop, or the listed ones. */
@@ -92,6 +128,8 @@ export const isFrameMessage = (value) => {
92
128
  return typeof value["height"] === "number";
93
129
  case "forgebook:spills":
94
130
  return typeof value["count"] === "number";
131
+ case "forgebook:scheme":
132
+ return value["scheme"] === "light" || value["scheme"] === "dark";
95
133
  case "forgebook:call":
96
134
  return (typeof value["name"] === "string" &&
97
135
  isStringList(value["values"]) &&
@@ -113,86 +151,6 @@ export const isFrameMessage = (value) => {
113
151
  return false;
114
152
  }
115
153
  };
116
- /**
117
- * Whether a received message is one the shell sends.
118
- *
119
- * @param value - the message's data.
120
- */
121
- export const isShellMessage = (value) => {
122
- if (!isRecord(value))
123
- return false;
124
- if (value["type"] === "forgebook:replay" ||
125
- value["type"] === "forgebook:check" ||
126
- value["type"] === "forgebook:play-again" ||
127
- value["type"] === "forgebook:clock-restart") {
128
- return true;
129
- }
130
- if (value["type"] === "forgebook:args")
131
- return isPanelArgs(value["args"]);
132
- if (value["type"] === "forgebook:view")
133
- return isLiveView(value["view"]);
134
- if (value["type"] === "forgebook:clock")
135
- return isClockState(value["state"]);
136
- if (value["type"] === "forgebook:spills")
137
- return typeof value["isOn"] === "boolean";
138
- if (value["type"] === "forgebook:tools") {
139
- const tools = value["tools"];
140
- return Array.isArray(tools) && tools.every((tool) => MEASURE_TOOLS.some((known) => known === tool));
141
- }
142
- if (value["type"] === "forgebook:matrix")
143
- return value["matrix"] === null || isMatrix(value["matrix"]);
144
- return value["type"] === "forgebook:events" && isStringList(value["names"]);
145
- };
146
- /**
147
- * An event's argument written short for the call log.
148
- *
149
- * @param value - anything a callback received.
150
- */
151
- export const previewValue = (value) => {
152
- if (typeof value === "string")
153
- return JSON.stringify(value.length > 60 ? `${value.slice(0, 60)}…` : value);
154
- if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint")
155
- return String(value);
156
- if (value === null || value === undefined)
157
- return String(value);
158
- if (typeof value === "function")
159
- return "ƒ";
160
- if (typeof Event !== "undefined" && value instanceof Event)
161
- return value.constructor.name;
162
- if (isRecord(value) && "nativeEvent" in value)
163
- return "SyntheticEvent";
164
- return Array.isArray(value) ? `[…${value.length}]` : "{…}";
165
- };
166
- /** The most characters an argument's content keeps in the log. */
167
- const DETAIL_LENGTH = 2000;
168
- /**
169
- * An argument's content for the log, when it is an object or a list: JSON, two spaces deep, a function as `ƒ`, an
170
- * object met again as `[circular]`, cut past `DETAIL_LENGTH`; `null` for anything else (a text, a number, an event).
171
- *
172
- * @param value - anything a callback received.
173
- */
174
- export const detailOf = (value) => {
175
- if (typeof value !== "object" || value === null)
176
- return null;
177
- if (typeof Event !== "undefined" && value instanceof Event)
178
- return null;
179
- if ("nativeEvent" in value)
180
- return null;
181
- const seen = new WeakSet();
182
- const text = JSON.stringify(value, (_key, inner) => {
183
- if (typeof inner === "function")
184
- return "ƒ";
185
- if (typeof inner === "bigint")
186
- return `${inner}n`;
187
- if (typeof inner === "object" && inner !== null) {
188
- if (seen.has(inner))
189
- return "[circular]";
190
- seen.add(inner);
191
- }
192
- return inner;
193
- }, 2);
194
- return text.length > DETAIL_LENGTH ? `${text.slice(0, DETAIL_LENGTH)}…` : text;
195
- };
196
154
  /**
197
155
  * The panel's values written in an address (`args`): JSON, the only form that keeps `"12"` and `12` apart.
198
156
  *
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The values a source names for the props panel (`StorySource.namedValues`): a story's own value found by name for
3
- * the panel to show, and a name the panel sent turned back into the value for the story.
2
+ * The values a source names for the props panel (`StorySource.namedValues`), looked up by name; `frame/panelValues.ts`
3
+ * finds a story's own value among them and turns a name back into its value.
4
4
  *
5
5
  * @remarks
6
6
  * A component or a function cannot cross between the shell and a frame; its name can, and each side holds the same
@@ -9,7 +9,6 @@
9
9
  * @module
10
10
  */
11
11
  import type { StorySource } from "@forgebook/story-format/source";
12
- import { type NamedArg, type PanelArgs } from "./messages.ts";
13
12
  /** A source's named values: by the type as the props write it, then by name. */
14
13
  export type NamedValues = NonNullable<StorySource["namedValues"]>;
15
14
  /**
@@ -23,26 +22,3 @@ export type NamedValues = NonNullable<StorySource["namedValues"]>;
23
22
  * @returns the value; none when the source does not name it.
24
23
  */
25
24
  export declare const namedValueOf: (namedValues: NamedValues, of: string, named: string) => unknown;
26
- /**
27
- * The name of a value among the named ones, when it is one of them.
28
- *
29
- * @param value - a story's own arg.
30
- * @param namedValues - the source's named values.
31
- */
32
- export declare const nameOf: (value: unknown, namedValues: NamedValues) => NamedArg | undefined;
33
- /**
34
- * A story's own args as the panel can show them: texts, numbers, booleans, `null` and lists of texts and numbers (a
35
- * multiple choice's) as they are, a named value by its name; anything else is left out.
36
- *
37
- * @param args - the story's args.
38
- * @param namedValues - the source's named values; none by default.
39
- */
40
- export declare const panelArgsOf: (args: Readonly<Record<string, unknown>>, namedValues?: NamedValues) => PanelArgs;
41
- /**
42
- * The panel's values as the story takes them: a name turned back into its value; a name the source no longer offers
43
- * is left out, so the story keeps its own.
44
- *
45
- * @param args - the panel's values.
46
- * @param namedValues - the source's named values; none by default.
47
- */
48
- export declare const storyArgsOf: (args: PanelArgs, namedValues?: NamedValues) => Readonly<Record<string, unknown>>;
@@ -1,4 +1,3 @@
1
- import { isChoiceList, isNamedArg } from "./messages.js";
2
1
  /**
3
2
  * Whether a record holds a key itself, not through its prototype: `{}`'s `constructor` is `Object`, whose own
4
3
  * `constructor` is `Function`.
@@ -23,49 +22,3 @@ export const namedValueOf = (namedValues, of, named) => {
23
22
  const values = namedValues[of];
24
23
  return values !== undefined && hasOwn(values, named) ? values[named] : undefined;
25
24
  };
26
- /**
27
- * The name of a value among the named ones, when it is one of them.
28
- *
29
- * @param value - a story's own arg.
30
- * @param namedValues - the source's named values.
31
- */
32
- export const nameOf = (value, namedValues) => {
33
- for (const [of, values] of Object.entries(namedValues)) {
34
- for (const [named, known] of Object.entries(values)) {
35
- if (known === value)
36
- return { of, named };
37
- }
38
- }
39
- return undefined;
40
- };
41
- /**
42
- * A story's own args as the panel can show them: texts, numbers, booleans, `null` and lists of texts and numbers (a
43
- * multiple choice's) as they are, a named value by its name; anything else is left out.
44
- *
45
- * @param args - the story's args.
46
- * @param namedValues - the source's named values; none by default.
47
- */
48
- export const panelArgsOf = (args, namedValues = {}) => Object.fromEntries(Object.entries(args).flatMap(([name, value]) => {
49
- if (value === null ||
50
- typeof value === "string" ||
51
- typeof value === "number" ||
52
- typeof value === "boolean" ||
53
- isChoiceList(value)) {
54
- return [[name, value]];
55
- }
56
- const named = nameOf(value, namedValues);
57
- return named === undefined ? [] : [[name, named]];
58
- }));
59
- /**
60
- * The panel's values as the story takes them: a name turned back into its value; a name the source no longer offers
61
- * is left out, so the story keeps its own.
62
- *
63
- * @param args - the panel's values.
64
- * @param namedValues - the source's named values; none by default.
65
- */
66
- export const storyArgsOf = (args, namedValues = {}) => Object.fromEntries(Object.entries(args).flatMap(([name, value]) => {
67
- if (!isNamedArg(value))
68
- return [[name, value]];
69
- const known = namedValueOf(namedValues, value.of, value.named);
70
- return known === undefined ? [] : [[name, known]];
71
- }));
@@ -16,6 +16,8 @@ export type PageConfig = {
16
16
  readonly heights: string | undefined;
17
17
  /** The switches, the presets' and the catalogue's merged. */
18
18
  readonly switches: readonly ViewSwitch[] | undefined;
19
+ /** The catalogue's own story patterns, for a dev server's home with no story to say where it looks; none in a build. */
20
+ readonly storyGlobs?: readonly string[];
19
21
  /** The languages, the presets' and the catalogue's merged. */
20
22
  readonly languages: readonly StoryLanguage[];
21
23
  /** The lists (widths, backgrounds, story groups, texts…), the presets' and the catalogue's merged. */