forgebook 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) hide show
  1. package/README.md +914 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +30 -12
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PropFields.d.ts +3 -1
  307. package/dist/src/shell/PropFields.js +9 -6
  308. package/dist/src/shell/PropRows.d.ts +23 -2
  309. package/dist/src/shell/PropRows.js +58 -19
  310. package/dist/src/shell/PropsTab.d.ts +12 -5
  311. package/dist/src/shell/PropsTab.js +9 -21
  312. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  313. package/dist/src/shell/RefStoryPage.js +123 -0
  314. package/dist/src/shell/SearchPanel.js +51 -24
  315. package/dist/src/shell/Shell.d.ts +18 -0
  316. package/dist/src/shell/Shell.js +137 -22
  317. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  318. package/dist/src/shell/ShortcutHelp.js +66 -0
  319. package/dist/src/shell/Sidebar.d.ts +17 -4
  320. package/dist/src/shell/Sidebar.js +92 -41
  321. package/dist/src/shell/SidebarDocs.js +2 -2
  322. package/dist/src/shell/SidebarEntries.js +5 -3
  323. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  324. package/dist/src/shell/SidebarHandle.js +4 -4
  325. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  326. package/dist/src/shell/SidebarRefs.js +99 -0
  327. package/dist/src/shell/SidebarSearch.js +37 -9
  328. package/dist/src/shell/SignatureReference.js +3 -1
  329. package/dist/src/shell/Stage.d.ts +10 -2
  330. package/dist/src/shell/Stage.js +29 -49
  331. package/dist/src/shell/StatusBadges.d.ts +54 -0
  332. package/dist/src/shell/StatusBadges.js +77 -0
  333. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  334. package/dist/src/shell/StoryCodeBlock.js +7 -6
  335. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  336. package/dist/src/shell/SwitchGallery.js +17 -0
  337. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  338. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  339. package/dist/src/shell/TagFilter.d.ts +24 -0
  340. package/dist/src/shell/TagFilter.js +45 -0
  341. package/dist/src/shell/TagViews.d.ts +39 -0
  342. package/dist/src/shell/TagViews.js +20 -0
  343. package/dist/src/shell/Toolbar.d.ts +4 -1
  344. package/dist/src/shell/Toolbar.js +17 -7
  345. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  346. package/dist/src/shell/ToolbarControl.js +23 -6
  347. package/dist/src/shell/ViewMenuPanel.js +6 -1
  348. package/dist/src/shell/argChecks.d.ts +22 -0
  349. package/dist/src/shell/argChecks.js +20 -0
  350. package/dist/src/shell/asideStory.js +7 -2
  351. package/dist/src/shell/audienceSections.css +9 -9
  352. package/dist/src/shell/catalogueContext.d.ts +1 -1
  353. package/dist/src/shell/catalogueContext.js +6 -1
  354. package/dist/src/shell/codeSpans.d.ts +27 -0
  355. package/dist/src/shell/codeSpans.js +76 -0
  356. package/dist/src/shell/compareVariants.d.ts +4 -2
  357. package/dist/src/shell/compareVariants.js +16 -8
  358. package/dist/src/shell/composition.d.ts +23 -0
  359. package/dist/src/shell/composition.js +26 -0
  360. package/dist/src/shell/controlCycle.d.ts +1 -1
  361. package/dist/src/shell/controlCycle.js +3 -2
  362. package/dist/src/shell/customControls.d.ts +55 -0
  363. package/dist/src/shell/customControls.js +70 -0
  364. package/dist/src/shell/docPage.css +22 -22
  365. package/dist/src/shell/dockTabs.d.ts +19 -3
  366. package/dist/src/shell/dockTabs.js +28 -20
  367. package/dist/src/shell/embed.css +7 -7
  368. package/dist/src/shell/framesOrigin.d.ts +7 -0
  369. package/dist/src/shell/framesOrigin.js +1 -1
  370. package/dist/src/shell/galleryPlace.d.ts +20 -0
  371. package/dist/src/shell/galleryPlace.js +26 -0
  372. package/dist/src/shell/icons.d.ts +1 -0
  373. package/dist/src/shell/icons.js +1 -0
  374. package/dist/src/shell/keyboard.d.ts +14 -12
  375. package/dist/src/shell/keyboard.js +21 -6
  376. package/dist/src/shell/laterStrings.d.ts +29 -0
  377. package/dist/src/shell/laterStrings.js +42 -3
  378. package/dist/src/shell/mountShell.js +3 -0
  379. package/dist/src/shell/pageStrings.d.ts +4 -0
  380. package/dist/src/shell/pageStrings.js +4 -0
  381. package/dist/src/shell/pageTagView.d.ts +18 -0
  382. package/dist/src/shell/pageTagView.js +10 -0
  383. package/dist/src/shell/playMemory.d.ts +14 -0
  384. package/dist/src/shell/playMemory.js +8 -0
  385. package/dist/src/shell/propNotes.d.ts +23 -0
  386. package/dist/src/shell/propNotes.js +37 -0
  387. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  388. package/dist/src/shell/refIndexLoad.js +38 -0
  389. package/dist/src/shell/refParts.d.ts +34 -0
  390. package/dist/src/shell/refParts.js +9 -0
  391. package/dist/src/shell/refStory.css +21 -0
  392. package/dist/src/shell/refStrings.d.ts +13 -0
  393. package/dist/src/shell/refStrings.js +21 -0
  394. package/dist/src/shell/search.css +11 -11
  395. package/dist/src/shell/shell.css +348 -168
  396. package/dist/src/shell/shellScheme.js +2 -2
  397. package/dist/src/shell/shortcutHelp.css +64 -0
  398. package/dist/src/shell/stageArgs.d.ts +53 -0
  399. package/dist/src/shell/stageArgs.js +64 -0
  400. package/dist/src/shell/statusBadges.css +51 -0
  401. package/dist/src/shell/strings.d.ts +7 -16
  402. package/dist/src/shell/strings.js +12 -17
  403. package/dist/src/shell/switchGallery.css +104 -0
  404. package/dist/src/shell/tagFilter.css +46 -0
  405. package/dist/src/shell/tagView.d.ts +20 -0
  406. package/dist/src/shell/tagView.js +10 -0
  407. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  408. package/dist/src/shell/useAddressArgs.js +56 -11
  409. package/dist/src/shell/useControlKeys.js +2 -2
  410. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  411. package/dist/src/shell/useEditedProblems.js +40 -0
  412. package/dist/src/shell/useFrameMessages.js +3 -0
  413. package/dist/src/shell/useListedTree.d.ts +13 -0
  414. package/dist/src/shell/useListedTree.js +32 -0
  415. package/dist/src/shell/usePageFrames.js +2 -2
  416. package/dist/src/shell/usePopover.d.ts +5 -0
  417. package/dist/src/shell/usePopover.js +7 -1
  418. package/dist/src/shell/useRefIndex.d.ts +22 -0
  419. package/dist/src/shell/useRefIndex.js +36 -0
  420. package/dist/src/shell/useScrollStops.d.ts +20 -0
  421. package/dist/src/shell/useScrollStops.js +41 -0
  422. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  423. package/dist/src/shell/useShortcutHelp.js +32 -0
  424. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  425. package/dist/src/shell/useSidebarOverlay.js +12 -4
  426. package/dist/src/shell/useStoryCode.d.ts +2 -1
  427. package/dist/src/shell/useStoryCode.js +12 -7
  428. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  429. package/dist/src/shell/useToolbarLayout.js +2 -2
  430. package/dist/src/shell/useWorstCase.d.ts +8 -2
  431. package/dist/src/shell/useWorstCase.js +2 -2
  432. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  433. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  434. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  435. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  436. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  437. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  438. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  439. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  440. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  441. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  442. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  443. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  444. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  445. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  446. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  447. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  448. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  449. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  450. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  451. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  452. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  453. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  454. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  455. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  456. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  457. package/dist/src/shell/worstArgs.d.ts +8 -5
  458. package/dist/src/shell/worstArgs.js +14 -7
  459. package/dist/src/shellTheme.d.ts +1 -1
  460. package/dist/src/shellTheme.js +15 -1
  461. package/dist/src/shellTheme.types.d.ts +4 -0
  462. package/dist/src/shellWord.d.ts +12 -0
  463. package/dist/src/shellWord.js +15 -0
  464. package/dist/src/sourceFiles.js +2 -1
  465. package/dist/src/storyArgTypes.d.ts +57 -0
  466. package/dist/src/storyArgTypes.js +195 -0
  467. package/dist/src/storyBackground.js +14 -3
  468. package/dist/src/storyCheck.d.ts +85 -3
  469. package/dist/src/storyCheck.js +23 -1
  470. package/dist/src/storyCodeText.d.ts +46 -0
  471. package/dist/src/storyCodeText.js +27 -0
  472. package/dist/src/storyControls.d.ts +100 -0
  473. package/dist/src/storyControls.js +100 -0
  474. package/dist/src/storyStatuses.d.ts +55 -0
  475. package/dist/src/storyStatuses.js +104 -0
  476. package/dist/src/storyTagNames.d.ts +25 -0
  477. package/dist/src/storyTagNames.js +25 -0
  478. package/dist/src/storyTags.d.ts +29 -0
  479. package/dist/src/storyTags.js +85 -0
  480. package/dist/src/storyTree.d.ts +13 -0
  481. package/dist/src/storyTree.js +24 -4
  482. package/dist/src/storybookArgs.d.ts +24 -0
  483. package/dist/src/storybookArgs.js +185 -0
  484. package/dist/src/switches.d.ts +66 -3
  485. package/dist/src/switches.js +42 -1
  486. package/dist/src/valueSchema.d.ts +28 -0
  487. package/dist/src/valueSchema.js +196 -0
  488. package/dist/src/valueShape.d.ts +94 -0
  489. package/dist/src/valueShape.js +25 -0
  490. package/dist/src/viewState.d.ts +8 -3
  491. package/dist/src/viewState.js +27 -10
  492. package/dist/src/vite/adapter.d.ts +40 -2
  493. package/dist/src/vite/adapter.js +1 -0
  494. package/dist/src/vite/agent.types.d.ts +347 -7
  495. package/dist/src/vite/agentApi.d.ts +23 -0
  496. package/dist/src/vite/agentApi.js +90 -17
  497. package/dist/src/vite/agentIndex.d.ts +0 -2
  498. package/dist/src/vite/agentIndex.js +5 -6
  499. package/dist/src/vite/agentRoutes.d.ts +20 -1
  500. package/dist/src/vite/agentRoutes.js +106 -65
  501. package/dist/src/vite/agentStatuses.d.ts +42 -0
  502. package/dist/src/vite/agentStatuses.js +67 -0
  503. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  504. package/dist/src/vite/agentStoryCode.js +38 -0
  505. package/dist/src/vite/agentVisibility.d.ts +47 -0
  506. package/dist/src/vite/agentVisibility.js +174 -0
  507. package/dist/src/vite/appAudit.d.ts +134 -0
  508. package/dist/src/vite/appAudit.js +333 -0
  509. package/dist/src/vite/appBuildOption.d.ts +53 -0
  510. package/dist/src/vite/appBuildOption.js +55 -0
  511. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  512. package/dist/src/vite/appTokenFiles.js +433 -0
  513. package/dist/src/vite/appTokens.d.ts +23 -0
  514. package/dist/src/vite/appTokens.js +275 -0
  515. package/dist/src/vite/builtTexts.d.ts +10 -0
  516. package/dist/src/vite/builtTexts.js +59 -22
  517. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  518. package/dist/src/vite/catalogueConfig.js +15 -3
  519. package/dist/src/vite/changeCoverage.d.ts +74 -0
  520. package/dist/src/vite/changeCoverage.js +120 -0
  521. package/dist/src/vite/changedRoute.d.ts +30 -0
  522. package/dist/src/vite/changedRoute.js +197 -0
  523. package/dist/src/vite/checkCode.d.ts +105 -3
  524. package/dist/src/vite/checkCode.js +323 -36
  525. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  526. package/dist/src/vite/checkoutWatch.js +287 -0
  527. package/dist/src/vite/closeWatch.d.ts +8 -0
  528. package/dist/src/vite/closeWatch.js +1 -1
  529. package/dist/src/vite/componentCache.d.ts +8 -0
  530. package/dist/src/vite/componentCache.js +66 -0
  531. package/dist/src/vite/componentGraph.d.ts +71 -0
  532. package/dist/src/vite/componentGraph.js +133 -0
  533. package/dist/src/vite/componentRules.d.ts +33 -0
  534. package/dist/src/vite/componentRules.js +105 -0
  535. package/dist/src/vite/componentScan.d.ts +69 -0
  536. package/dist/src/vite/componentScan.js +418 -0
  537. package/dist/src/vite/compositionCheck.d.ts +15 -0
  538. package/dist/src/vite/compositionCheck.js +243 -0
  539. package/dist/src/vite/config.d.ts +32 -1
  540. package/dist/src/vite/configFile.d.ts +14 -2
  541. package/dist/src/vite/configFile.js +124 -40
  542. package/dist/src/vite/configKeys.d.ts +15 -0
  543. package/dist/src/vite/configKeys.js +171 -0
  544. package/dist/src/vite/configLoadError.d.ts +23 -0
  545. package/dist/src/vite/configLoadError.js +71 -0
  546. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  547. package/dist/src/vite/cssDeclarations.js +290 -0
  548. package/dist/src/vite/cssImports.d.ts +14 -0
  549. package/dist/src/vite/cssImports.js +48 -0
  550. package/dist/src/vite/cssReferences.d.ts +54 -0
  551. package/dist/src/vite/cssReferences.js +157 -0
  552. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  553. package/dist/src/vite/cssTokenValues.js +233 -0
  554. package/dist/src/vite/designTokens.d.ts +24 -0
  555. package/dist/src/vite/designTokens.js +5 -1
  556. package/dist/src/vite/docsExtractor.d.ts +9 -3
  557. package/dist/src/vite/docsExtractor.js +11 -3
  558. package/dist/src/vite/docsProgram.d.ts +17 -4
  559. package/dist/src/vite/docsProgram.js +52 -11
  560. package/dist/src/vite/docsWorker.js +7 -2
  561. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  562. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  563. package/dist/src/vite/fileImports.d.ts +17 -0
  564. package/dist/src/vite/fileImports.js +57 -0
  565. package/dist/src/vite/findComponent.d.ts +10 -2
  566. package/dist/src/vite/findComponent.js +27 -22
  567. package/dist/src/vite/findRoute.js +3 -2
  568. package/dist/src/vite/forcedStates.d.ts +9 -2
  569. package/dist/src/vite/forcedStates.js +12 -3
  570. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  571. package/dist/src/vite/forgebookPlugin.js +52 -72
  572. package/dist/src/vite/frameErrors.d.ts +19 -0
  573. package/dist/src/vite/frameErrors.js +70 -0
  574. package/dist/src/vite/framesServer.d.ts +12 -0
  575. package/dist/src/vite/framesServer.js +21 -4
  576. package/dist/src/vite/functionComponentDocs.js +81 -12
  577. package/dist/src/vite/generatedModules.js +4 -2
  578. package/dist/src/vite/gitChange.d.ts +38 -5
  579. package/dist/src/vite/gitChange.js +71 -11
  580. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  581. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  582. package/dist/src/vite/hotSnippets.d.ts +38 -14
  583. package/dist/src/vite/hotSnippets.js +137 -39
  584. package/dist/src/vite/importedNames.d.ts +37 -0
  585. package/dist/src/vite/importedNames.js +138 -0
  586. package/dist/src/vite/indexFields.d.ts +6 -0
  587. package/dist/src/vite/indexFields.js +21 -0
  588. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  589. package/dist/src/vite/indexStoryFile.js +22 -157
  590. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  591. package/dist/src/vite/jsxCallSites.js +200 -0
  592. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  593. package/dist/src/vite/jsxInScripts.js +138 -0
  594. package/dist/src/vite/jsxTree.d.ts +20 -0
  595. package/dist/src/vite/jsxTree.js +163 -0
  596. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  597. package/dist/src/vite/lineAndColumn.js +18 -0
  598. package/dist/src/vite/lookAlikes.d.ts +65 -0
  599. package/dist/src/vite/lookAlikes.js +228 -0
  600. package/dist/src/vite/nearestToken.d.ts +17 -0
  601. package/dist/src/vite/nearestToken.js +9 -2
  602. package/dist/src/vite/packageEntries.d.ts +42 -0
  603. package/dist/src/vite/packageEntries.js +127 -0
  604. package/dist/src/vite/pages.d.ts +9 -1
  605. package/dist/src/vite/pages.js +108 -4
  606. package/dist/src/vite/pluginConfig.js +4 -0
  607. package/dist/src/vite/pluginIds.d.ts +2 -0
  608. package/dist/src/vite/pluginIds.js +5 -1
  609. package/dist/src/vite/pluginModules.d.ts +81 -11
  610. package/dist/src/vite/pluginModules.js +109 -21
  611. package/dist/src/vite/prebundled.d.ts +57 -15
  612. package/dist/src/vite/prebundled.js +80 -0
  613. package/dist/src/vite/previewTags.d.ts +25 -0
  614. package/dist/src/vite/previewTags.js +56 -0
  615. package/dist/src/vite/projectFiles.d.ts +54 -0
  616. package/dist/src/vite/projectFiles.js +116 -0
  617. package/dist/src/vite/projectPostcss.d.ts +70 -0
  618. package/dist/src/vite/projectPostcss.js +250 -0
  619. package/dist/src/vite/propDocs.d.ts +12 -0
  620. package/dist/src/vite/propDocs.js +130 -58
  621. package/dist/src/vite/propKind.d.ts +40 -0
  622. package/dist/src/vite/propKind.js +71 -0
  623. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  624. package/dist/src/vite/propTypeNotes.js +51 -0
  625. package/dist/src/vite/publishedExports.d.ts +27 -0
  626. package/dist/src/vite/publishedExports.js +298 -0
  627. package/dist/src/vite/realFolder.d.ts +6 -0
  628. package/dist/src/vite/realFolder.js +25 -0
  629. package/dist/src/vite/refsConfig.d.ts +39 -0
  630. package/dist/src/vite/refsConfig.js +54 -0
  631. package/dist/src/vite/reuseCheck.d.ts +45 -0
  632. package/dist/src/vite/reuseCheck.js +260 -0
  633. package/dist/src/vite/runningVersions.d.ts +33 -0
  634. package/dist/src/vite/runningVersions.js +25 -0
  635. package/dist/src/vite/scriptProblems.d.ts +60 -0
  636. package/dist/src/vite/scriptProblems.js +155 -0
  637. package/dist/src/vite/searchModule.js +3 -2
  638. package/dist/src/vite/searchRoute.js +4 -2
  639. package/dist/src/vite/shapeDocs.d.ts +36 -0
  640. package/dist/src/vite/shapeDocs.js +177 -0
  641. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  642. package/dist/src/vite/singleFileComponent.js +83 -0
  643. package/dist/src/vite/sourceText.d.ts +34 -0
  644. package/dist/src/vite/sourceText.js +72 -0
  645. package/dist/src/vite/sourceTokens.d.ts +7 -0
  646. package/dist/src/vite/sourceTokens.js +7 -2
  647. package/dist/src/vite/stackLines.d.ts +49 -0
  648. package/dist/src/vite/stackLines.js +96 -0
  649. package/dist/src/vite/storyCode.d.ts +22 -7
  650. package/dist/src/vite/storyCode.js +263 -37
  651. package/dist/src/vite/storyCoverage.d.ts +48 -0
  652. package/dist/src/vite/storyCoverage.js +179 -0
  653. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  654. package/dist/src/vite/storyFilesModule.js +105 -15
  655. package/dist/src/vite/storyPatterns.d.ts +31 -0
  656. package/dist/src/vite/storyPatterns.js +140 -5
  657. package/dist/src/vite/storyReach.d.ts +10 -2
  658. package/dist/src/vite/storyReach.js +15 -11
  659. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  660. package/dist/src/vite/storyTopLevel.js +146 -0
  661. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  662. package/dist/src/vite/storylessRoutes.js +210 -19
  663. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  664. package/dist/src/vite/switchValuesCheck.js +164 -0
  665. package/dist/src/vite/switchesDocument.d.ts +15 -0
  666. package/dist/src/vite/switchesDocument.js +47 -0
  667. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  668. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  669. package/dist/src/vite/textImports.d.ts +15 -0
  670. package/dist/src/vite/textImports.js +58 -0
  671. package/dist/src/vite/textModules.d.ts +6 -5
  672. package/dist/src/vite/textModules.js +13 -8
  673. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  674. package/dist/src/vite/tokenAnswers.js +11 -7
  675. package/dist/src/vite/typeParameters.d.ts +83 -0
  676. package/dist/src/vite/typeParameters.js +270 -0
  677. package/dist/src/vite/unionProps.d.ts +37 -0
  678. package/dist/src/vite/unionProps.js +121 -0
  679. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  680. package/dist/src/vite/unresolvedTokens.js +193 -0
  681. package/dist/src/vite/usageGraph.js +10 -52
  682. package/dist/src/vite/usageGuidance.d.ts +9 -2
  683. package/dist/src/vite/usageGuidance.js +36 -8
  684. package/dist/src/vite/usageImports.d.ts +35 -0
  685. package/dist/src/vite/usageImports.js +280 -0
  686. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  687. package/dist/src/vite/visibilityRoute.js +320 -0
  688. package/dist/src/worstCase.d.ts +2 -0
  689. package/dist/src/worstCase.js +2 -0
  690. package/package.json +28 -8
@@ -1,22 +1,34 @@
1
1
  /**
2
- * A story's `argTypes` (Storybook's): read in the frame from the meta and the story, sent to the shell in a form that
3
- * crosses between the documents, laid over the props the component's types give, and their `mapping` applied to the
4
- * args the story receives.
2
+ * A story's `argTypes` (Storybook's) as the shell reads them: in the form that crosses between the documents, laid over the
3
+ * props the component's types give. What reads them from the story's module is `storyArgTypes.ts`.
5
4
  *
6
5
  * @remarks
7
6
  * The panel's props come from the component's types (`componentDocs.ts`); `argTypes` say otherwise where a story
8
7
  * means another control, other options, other names, or an arg the types do not name. Without `argTypes` the panel
9
8
  * shows the props exactly as the types give them. Option values that cannot cross (a component, a function) are
10
- * sent as their `mapping` keys, which the frame turns back into the values. `object` and `file` controls have no
11
- * control in the panel: their args are listed for reading. Pure.
9
+ * sent as their `mapping` keys, which the frame turns back into the values. An `object` control edits the prop by the
10
+ * shape its type gives (`valueShape.ts`), by what the story's own arg looks like without one, as JSON when nothing says.
11
+ * Pure.
12
12
  *
13
13
  * @module
14
14
  */
15
15
  import type { StoryControlsSetting } from "@forgebook/story-format/source";
16
+ import { type ArgCondition } from "./argConditions.ts";
16
17
  import type { PropDocs } from "./componentDocs.ts";
18
+ import type { ArgValue } from "./messages.ts";
17
19
  import type { NamedValues } from "./namedValues.ts";
18
20
  /** A control as the panel draws it; `none` for an arg the panel lists without a control. */
19
- export type PanelControl = "select" | "radio" | "check" | "multi-select" | "boolean" | "text" | "number" | "range" | "color" | "date" | "none";
21
+ export type PanelControl = "select" | "radio" | "check" | "multi-select" | "boolean" | "text" | "number" | "range" | "color" | "date" | "object" | "textarea" | "token" | "file" | "none";
22
+ /** Which of the catalogue's design tokens a `token` control offers, and what the story receives for one. */
23
+ export type TokenRequest = {
24
+ /** A token's type (`color`, `dimension`) or a part of its name (`space`, `radius`): what it offers. */
25
+ readonly of: string;
26
+ /**
27
+ * What the story receives, with `{name}` for the token's name in CSS's form and `{value}` for its value
28
+ * (`var(--{name})`); its value by default.
29
+ */
30
+ readonly format?: string;
31
+ };
20
32
  /** How the panel shows one arg, from its `argTypes` entry: what crosses from the frame to the shell. */
21
33
  export type PanelArgType = {
22
34
  /** The name the panel shows, when it is not the arg's. */
@@ -37,6 +49,16 @@ export type PanelArgType = {
37
49
  readonly max?: number;
38
50
  /** A range's or a number's step. */
39
51
  readonly step?: number;
52
+ /** When the panel shows the arg (`if`); none always. */
53
+ readonly if?: ArgCondition;
54
+ /** A `token` control's tokens. */
55
+ readonly tokens?: TokenRequest;
56
+ /** The files a `file` control takes, as `<input accept>` writes it. */
57
+ readonly accept?: string;
58
+ /** The custom control it names, of those `argControls` registers: any name that is none of the panel's. */
59
+ readonly customControl?: string;
60
+ /** The custom control's `settings`. */
61
+ readonly settings?: ArgValue;
40
62
  };
41
63
  /** The panel's arg types, by arg. */
42
64
  export type PanelArgTypes = Readonly<Record<string, PanelArgType>>;
@@ -54,6 +76,14 @@ export type PanelProp = PropDocs & {
54
76
  readonly max?: number;
55
77
  /** A range's or a number's step. */
56
78
  readonly step?: number;
79
+ /** A `token` control's tokens. */
80
+ readonly tokens?: TokenRequest;
81
+ /** The files a `file` control takes. */
82
+ readonly accept?: string;
83
+ /** The custom control it names. */
84
+ readonly customControl?: string;
85
+ /** The custom control's `settings`. */
86
+ readonly settings?: ArgValue;
57
87
  };
58
88
  /**
59
89
  * Whether a prop is a colour: named so by its `argTypes`, or by the name convention (`color`, `accentColor`).
@@ -70,67 +100,26 @@ export declare const isColorProp: (prop: PanelProp) => boolean;
70
100
  export declare const isNamedProp: (prop: PanelProp, namedValues: NamedValues) => boolean;
71
101
  /**
72
102
  * The props the panel can set: a prop of a type the source names values for is chosen among them, a node that takes a
73
- * text is set as one; any other `other` prop, and an event, cannot be set; nor a prop the story's controls leave out.
103
+ * text is set as one, a prop with a shape by its fields; any other `other` prop, and an event, cannot be set; nor a prop
104
+ * the story's controls leave out.
74
105
  *
75
106
  * @param props - the component's props, with the story's `argTypes` laid over them.
76
107
  * @param controls - the props the story lets the panel set.
77
108
  * @param namedValues - the source's named values.
78
109
  */
79
110
  export declare const settableProps: (props: readonly PanelProp[], controls: StoryControlsSetting, namedValues: NamedValues) => PanelProp[];
80
- /**
81
- * The `argTypes` of the meta and the story, merged: each arg's entry from both, the story's fields over the meta's.
82
- *
83
- * @param meta - the meta's `argTypes`.
84
- * @param story - the story's `argTypes`.
85
- */
86
- export declare const mergedArgTypes: (meta: unknown, story: unknown) => Readonly<Record<string, Readonly<Record<string, unknown>>>>;
87
- /**
88
- * The arg types the frame sends: each entry read, and the args `parameters.controls.exclude` names hidden.
89
- *
90
- * @param argTypes - the merged `argTypes`.
91
- * @param excluded - the args `parameters.controls.exclude` names.
92
- */
93
- export declare const panelArgTypesOf: (argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>, excluded: readonly string[]) => PanelArgTypes;
94
- /**
95
- * The args with each `mapping` applied: an arg whose value is a key of its entry's `mapping` receives the value the
96
- * key stands for, as Storybook's (an arg written as the key in the story, or chosen in the panel).
97
- *
98
- * @param args - the args.
99
- * @param argTypes - the merged `argTypes`.
100
- */
101
- export declare const mappedArgs: (args: Readonly<Record<string, unknown>>, argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => Readonly<Record<string, unknown>>;
102
111
  /**
103
112
  * The panel's props: the component's, with their arg types laid over them, the hidden ones left out, then the args
104
113
  * only the arg types name, in their order.
105
114
  *
106
115
  * @param props - the props the component's types give.
107
116
  * @param argTypes - the story's arg types; none leaves the props as they are.
117
+ * @param storyArgs - the story's own args, for an `object` control no type describes; none by default.
108
118
  */
109
- export declare const panelProps: (props: readonly PropDocs[], argTypes: PanelArgTypes) => readonly PanelProp[];
110
- /**
111
- * The props the panel can set, as the story's parameters say: `false` none, a list or `{ include }` those, anything
112
- * else every one.
113
- *
114
- * @param value - `parameters.controls`.
115
- */
116
- export declare const controlsOfParameter: (value: unknown) => StoryControlsSetting;
117
- /**
118
- * The args `parameters.controls.exclude` hides.
119
- *
120
- * @param value - `parameters.controls`.
121
- */
122
- export declare const excludedControls: (value: unknown) => readonly string[];
119
+ export declare const panelProps: (props: readonly PropDocs[], argTypes: PanelArgTypes, storyArgs?: Readonly<Record<string, ArgValue>>) => readonly PanelProp[];
123
120
  /**
124
121
  * Whether a value received from a frame is a story's panel arg types.
125
122
  *
126
123
  * @param value - the message's field.
127
124
  */
128
125
  export declare const isPanelArgTypes: (value: unknown) => value is PanelArgTypes;
129
- /**
130
- * The args whose calls the Events tab records as actions: those whose value is a spy, and those whose `argTypes`
131
- * entry names an `action`. Explicit only: no arg is recorded for its name alone.
132
- *
133
- * @param args - the story's args.
134
- * @param argTypes - the merged `argTypes`.
135
- */
136
- export declare const actionNames: (args: Readonly<Record<string, unknown>>, argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => readonly string[];
@@ -1,17 +1,18 @@
1
1
  /**
2
- * A story's `argTypes` (Storybook's): read in the frame from the meta and the story, sent to the shell in a form that
3
- * crosses between the documents, laid over the props the component's types give, and their `mapping` applied to the
4
- * args the story receives.
2
+ * A story's `argTypes` (Storybook's) as the shell reads them: in the form that crosses between the documents, laid over the
3
+ * props the component's types give. What reads them from the story's module is `storyArgTypes.ts`.
5
4
  *
6
5
  * @remarks
7
6
  * The panel's props come from the component's types (`componentDocs.ts`); `argTypes` say otherwise where a story
8
7
  * means another control, other options, other names, or an arg the types do not name. Without `argTypes` the panel
9
8
  * shows the props exactly as the types give them. Option values that cannot cross (a component, a function) are
10
- * sent as their `mapping` keys, which the frame turns back into the values. `object` and `file` controls have no
11
- * control in the panel: their args are listed for reading. Pure.
9
+ * sent as their `mapping` keys, which the frame turns back into the values. An `object` control edits the prop by the
10
+ * shape its type gives (`valueShape.ts`), by what the story's own arg looks like without one, as JSON when nothing says.
11
+ * Pure.
12
12
  *
13
13
  * @module
14
14
  */
15
+ import { isArgCondition } from "./argConditions.js";
15
16
  /**
16
17
  * Whether a prop is a colour: named so by its `argTypes`, or by the name convention (`color`, `accentColor`).
17
18
  *
@@ -30,145 +31,23 @@ export const isColorProp = (prop) => prop.control === "color" ||
30
31
  export const isNamedProp = (prop, namedValues) => prop.kind === "other" && prop.control === undefined && namedValues[prop.type] !== undefined;
31
32
  /**
32
33
  * The props the panel can set: a prop of a type the source names values for is chosen among them, a node that takes a
33
- * text is set as one; any other `other` prop, and an event, cannot be set; nor a prop the story's controls leave out.
34
+ * text is set as one, a prop with a shape by its fields; any other `other` prop, and an event, cannot be set; nor a prop
35
+ * the story's controls leave out.
34
36
  *
35
37
  * @param props - the component's props, with the story's `argTypes` laid over them.
36
38
  * @param controls - the props the story lets the panel set.
37
39
  * @param namedValues - the source's named values.
38
40
  */
39
- export const settableProps = (props, controls, namedValues) => props.filter((prop) => (prop.kind !== "other" || prop.canTakeText === true || isNamedProp(prop, namedValues)) &&
41
+ export const settableProps = (props, controls, namedValues) => props.filter((prop) => (prop.kind !== "other" ||
42
+ prop.canTakeText === true ||
43
+ prop.control === "file" ||
44
+ prop.customControl !== undefined ||
45
+ isNamedProp(prop, namedValues) ||
46
+ prop.shape !== undefined) &&
40
47
  prop.kind !== "event" &&
41
48
  (controls === "all" || controls.includes(prop.name)));
42
49
  /** Whether a value is a plain object. */
43
50
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
44
- /** Storybook's control names, as the panel draws them (the inline variants look the same here). */
45
- const CONTROLS = {
46
- select: "select",
47
- radio: "radio",
48
- "inline-radio": "radio",
49
- check: "check",
50
- "inline-check": "check",
51
- "multi-select": "multi-select",
52
- boolean: "boolean",
53
- text: "text",
54
- number: "number",
55
- range: "range",
56
- color: "color",
57
- date: "date",
58
- object: "none",
59
- file: "none"
60
- };
61
- /** The panel controls, for the check on arrival. */
62
- const PANEL_CONTROLS = [...new Set(Object.values(CONTROLS))];
63
- /** A number field of an object, when it is a finite number. */
64
- const numberOf = (part, name) => {
65
- const value = part[name];
66
- return typeof value === "number" && Number.isFinite(value) ? value : undefined;
67
- };
68
- /** The labels of a control, when every one is a text. */
69
- const labelsOf = (value) => isRecord(value) && Object.values(value).every((label) => typeof label === "string")
70
- ? Object.fromEntries(Object.entries(value).map(([option, label]) => [option, String(label)]))
71
- : undefined;
72
- /**
73
- * The control an entry names: `false` and a disabled control are none, a name or `{ type }` is that control, and
74
- * options without a control make a select.
75
- */
76
- const controlOf = (entry) => {
77
- const control = entry["control"];
78
- if (control === false)
79
- return "none";
80
- if (typeof control === "string")
81
- return CONTROLS[control];
82
- if (isRecord(control)) {
83
- if (control["disable"] === true)
84
- return "none";
85
- if (typeof control["type"] === "string")
86
- return CONTROLS[control["type"]];
87
- }
88
- return Array.isArray(entry["options"]) ? "select" : undefined;
89
- };
90
- /**
91
- * The options as they cross: texts and numbers as they are; any other value only through `mapping`, whose keys are
92
- * the options then.
93
- */
94
- const optionsOf = (entry) => {
95
- const options = entry["options"];
96
- if (!Array.isArray(options))
97
- return undefined;
98
- return options.filter((option) => typeof option === "string" || typeof option === "number");
99
- };
100
- /**
101
- * One entry as the panel reads it.
102
- *
103
- * @param entry - the `argTypes` entry, the story's laid over the meta's.
104
- * @param isExcluded - whether `parameters.controls.exclude` names the arg.
105
- */
106
- const panelArgTypeOf = (entry, isExcluded) => {
107
- const control = controlOf(entry);
108
- const options = optionsOf(entry);
109
- const settings = isRecord(entry["control"]) ? entry["control"] : {};
110
- const table = entry["table"];
111
- const name = entry["name"];
112
- const description = entry["description"];
113
- const labels = labelsOf(settings["labels"]);
114
- const min = numberOf(settings, "min");
115
- const max = numberOf(settings, "max");
116
- const step = numberOf(settings, "step");
117
- return {
118
- isHidden: isExcluded || (isRecord(table) && table["disable"] === true),
119
- ...(typeof name === "string" ? { label: name } : {}),
120
- ...(typeof description === "string" ? { description } : {}),
121
- ...(control === undefined ? {} : { control }),
122
- ...(options === undefined ? {} : { options }),
123
- ...(labels === undefined ? {} : { labels }),
124
- ...(min === undefined ? {} : { min }),
125
- ...(max === undefined ? {} : { max }),
126
- ...(step === undefined ? {} : { step })
127
- };
128
- };
129
- /**
130
- * The `argTypes` of the meta and the story, merged: each arg's entry from both, the story's fields over the meta's.
131
- *
132
- * @param meta - the meta's `argTypes`.
133
- * @param story - the story's `argTypes`.
134
- */
135
- export const mergedArgTypes = (meta, story) => {
136
- const merged = {};
137
- for (const part of [meta, story]) {
138
- if (!isRecord(part))
139
- continue;
140
- for (const [name, entry] of Object.entries(part)) {
141
- if (isRecord(entry))
142
- merged[name] = { ...merged[name], ...entry };
143
- }
144
- }
145
- return merged;
146
- };
147
- /**
148
- * The arg types the frame sends: each entry read, and the args `parameters.controls.exclude` names hidden.
149
- *
150
- * @param argTypes - the merged `argTypes`.
151
- * @param excluded - the args `parameters.controls.exclude` names.
152
- */
153
- export const panelArgTypesOf = (argTypes, excluded) => {
154
- const names = [...new Set([...Object.keys(argTypes), ...excluded])];
155
- return Object.fromEntries(names.map((name) => [name, panelArgTypeOf(argTypes[name] ?? {}, excluded.includes(name))]));
156
- };
157
- /**
158
- * The args with each `mapping` applied: an arg whose value is a key of its entry's `mapping` receives the value the
159
- * key stands for, as Storybook's (an arg written as the key in the story, or chosen in the panel).
160
- *
161
- * @param args - the args.
162
- * @param argTypes - the merged `argTypes`.
163
- */
164
- export const mappedArgs = (args, argTypes) => Object.fromEntries(Object.entries(args).map(([name, value]) => {
165
- const mapping = argTypes[name]?.["mapping"];
166
- if (!isRecord(mapping) || (typeof value !== "string" && typeof value !== "number"))
167
- return [name, value];
168
- const key = String(value);
169
- // the mapping's own keys only: a value a shared link chose (`constructor`) never reaches its prototype
170
- return [name, Object.hasOwn(mapping, key) ? mapping[key] : value];
171
- }));
172
51
  /** The prop kind a control sets, for the panel's groups. */
173
52
  const KIND_OF_CONTROL = {
174
53
  select: "choice",
@@ -181,21 +60,48 @@ const KIND_OF_CONTROL = {
181
60
  range: "number",
182
61
  color: "text",
183
62
  date: "number",
63
+ object: "other",
64
+ textarea: "text",
65
+ token: "text",
66
+ file: "other",
184
67
  none: "other"
185
68
  };
69
+ /**
70
+ * What a prop's editor reads of its arg type: an `object` control's shape, from its type, else from the story's own value,
71
+ * else JSON; a `token` control's tokens; what a `file` control takes.
72
+ */
73
+ const editorFieldsOf = (prop, argType, own) => {
74
+ const shapeOfOwn = own === undefined || own === null ? { kind: "json" } : { kind: "like", value: own };
75
+ return {
76
+ ...(argType.control === "object" ? { shape: prop.shape ?? shapeOfOwn } : {}),
77
+ // a `token` control that names no tokens asks for those named after its arg
78
+ ...(argType.control === "token" ? { tokens: argType.tokens ?? { of: prop.name } } : {}),
79
+ ...(argType.accept === undefined ? {} : { accept: argType.accept }),
80
+ ...(argType.customControl === undefined
81
+ ? {}
82
+ : {
83
+ kind: "other",
84
+ customControl: argType.customControl,
85
+ ...(argType.settings === undefined ? {} : { settings: argType.settings })
86
+ })
87
+ };
88
+ };
186
89
  /**
187
90
  * A prop with its arg type laid over it.
188
91
  *
189
92
  * @param prop - the prop as the types give it.
190
93
  * @param argType - its arg type.
94
+ * @param own - the story's own value of the arg: what an `object` control with no type to read draws its fields from.
191
95
  */
192
- const withArgType = (prop, argType) => {
96
+ const withArgType = (prop, argType, own) => {
193
97
  const { control } = argType;
194
98
  // a control the panel cannot draw makes the prop one it lists for reading, never one that takes a text
195
99
  const isReadOnly = control === "none";
196
100
  const { canTakeText: _canTakeText, ...rest } = prop;
101
+ // a control the story names decides what its value is: the type's shape no longer draws nor checks it
102
+ const { shape: _shape, ...shapeless } = isReadOnly || argType.customControl !== undefined ? rest : prop;
197
103
  return {
198
- ...(isReadOnly ? rest : prop),
104
+ ...(control === undefined && argType.customControl === undefined ? prop : shapeless),
199
105
  ...(control === undefined ? {} : { kind: KIND_OF_CONTROL[control], control }),
200
106
  ...(argType.options === undefined ? {} : { choices: argType.options }),
201
107
  ...(argType.description === undefined ? {} : { description: argType.description }),
@@ -203,58 +109,49 @@ const withArgType = (prop, argType) => {
203
109
  ...(argType.labels === undefined ? {} : { labels: argType.labels }),
204
110
  ...(argType.min === undefined ? {} : { min: argType.min }),
205
111
  ...(argType.max === undefined ? {} : { max: argType.max }),
206
- ...(argType.step === undefined ? {} : { step: argType.step })
112
+ ...(argType.step === undefined ? {} : { step: argType.step }),
113
+ ...editorFieldsOf(prop, argType, own)
207
114
  };
208
115
  };
209
116
  /** A prop the types do not name, made from its arg type alone: a text when it names no control. */
210
- const propOfArgType = (name, argType) => withArgType({ name, kind: "text", type: "", description: "", isRequired: false }, argType);
117
+ const propOfArgType = (name, argType, own) => withArgType({ name, kind: "text", type: "", description: "", isRequired: false }, argType, own);
118
+ /** A prop as its TSDoc asks: chosen among the tokens `@token` names, when it is set as a text. */
119
+ const propAsDocumented = (prop) => prop.token !== undefined && (prop.kind === "text" || prop.canTakeText === true)
120
+ ? { ...prop, kind: "text", control: "token", tokens: { of: prop.token } }
121
+ : prop;
211
122
  /**
212
123
  * The panel's props: the component's, with their arg types laid over them, the hidden ones left out, then the args
213
124
  * only the arg types name, in their order.
214
125
  *
215
126
  * @param props - the props the component's types give.
216
127
  * @param argTypes - the story's arg types; none leaves the props as they are.
128
+ * @param storyArgs - the story's own args, for an `object` control no type describes; none by default.
217
129
  */
218
- export const panelProps = (props, argTypes) => {
130
+ export const panelProps = (props, argTypes, storyArgs = {}) => {
219
131
  const typed = new Set(props.map((prop) => prop.name));
220
132
  const fromTypes = props.flatMap((prop) => {
221
133
  const argType = argTypes[prop.name];
222
134
  if (argType === undefined)
223
- return [prop];
224
- return argType.isHidden ? [] : [withArgType(prop, argType)];
135
+ return [propAsDocumented(prop)];
136
+ if (argType.isHidden)
137
+ return [];
138
+ return [
139
+ withArgType(argType.control === undefined ? propAsDocumented(prop) : prop, argType, storyArgs[prop.name])
140
+ ];
225
141
  });
226
- const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType)]);
142
+ const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType, storyArgs[name])]);
227
143
  return [...fromTypes, ...fromArgTypes];
228
144
  };
229
- /**
230
- * The props the panel can set, as the story's parameters say: `false` none, a list or `{ include }` those, anything
231
- * else every one.
232
- *
233
- * @param value - `parameters.controls`.
234
- */
235
- export const controlsOfParameter = (value) => {
236
- if (value === false)
237
- return [];
238
- if (Array.isArray(value) && value.every((name) => typeof name === "string"))
239
- return value;
240
- const include = isRecord(value) ? value["include"] : undefined;
241
- if (Array.isArray(include) && include.every((name) => typeof name === "string"))
242
- return include;
243
- return "all";
244
- };
245
- /**
246
- * The args `parameters.controls.exclude` hides.
247
- *
248
- * @param value - `parameters.controls`.
249
- */
250
- export const excludedControls = (value) => {
251
- const exclude = isRecord(value) ? value["exclude"] : undefined;
252
- return Array.isArray(exclude) ? exclude.filter((name) => typeof name === "string") : [];
253
- };
254
145
  /** Whether a value is one arg's panel arg type. */
255
146
  const isPanelArgType = (value) => isRecord(value) &&
256
147
  typeof value["isHidden"] === "boolean" &&
257
- (value["control"] === undefined || PANEL_CONTROLS.some((control) => control === value["control"])) &&
148
+ (value["if"] === undefined || isArgCondition(value["if"])) &&
149
+ (value["control"] === undefined ||
150
+ (typeof value["control"] === "string" && Object.hasOwn(KIND_OF_CONTROL, value["control"]))) &&
151
+ (value["tokens"] === undefined ||
152
+ (isRecord(value["tokens"]) && typeof value["tokens"]["of"] === "string")) &&
153
+ (value["accept"] === undefined || typeof value["accept"] === "string") &&
154
+ (value["customControl"] === undefined || typeof value["customControl"] === "string") &&
258
155
  (value["options"] === undefined ||
259
156
  (Array.isArray(value["options"]) &&
260
157
  value["options"].every((option) => typeof option === "string" || typeof option === "number")));
@@ -264,18 +161,3 @@ const isPanelArgType = (value) => isRecord(value) &&
264
161
  * @param value - the message's field.
265
162
  */
266
163
  export const isPanelArgTypes = (value) => isRecord(value) && Object.values(value).every(isPanelArgType);
267
- /** Whether a value is a spy (`fn()` of `storybook/test` or Vitest): a function with its calls under `mock`. */
268
- const isSpy = (value) => typeof value === "function" && "mock" in value;
269
- /**
270
- * The args whose calls the Events tab records as actions: those whose value is a spy, and those whose `argTypes`
271
- * entry names an `action`. Explicit only: no arg is recorded for its name alone.
272
- *
273
- * @param args - the story's args.
274
- * @param argTypes - the merged `argTypes`.
275
- */
276
- export const actionNames = (args, argTypes) => [
277
- ...new Set([
278
- ...Object.entries(args).flatMap(([name, value]) => (isSpy(value) ? [name] : [])),
279
- ...Object.entries(argTypes).flatMap(([name, entry]) => typeof entry["action"] === "string" || entry["action"] === true ? [name] : [])
280
- ])
281
- ];
@@ -4,8 +4,8 @@
4
4
  *
5
5
  * @remarks
6
6
  * An arg's kind is read from its value: a text, a number, a toggle, an event for an arg the frame records as an
7
- * action. A list or a value the source names (`namedValues`) is listed for reading, unless its type is one the source
8
- * names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
7
+ * action, fields for an object or a list. A value the source names (`namedValues`) is listed for
8
+ * reading, unless its type is one the source names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
9
9
  * The story's `argTypes` are laid over these as over the types' props (`argTypes.ts`). A shared link's values are
10
10
  * checked against these kinds (`addressArgs.ts`): without the types, a text arg takes any text, so a prop of a few
11
11
  * values keeps a link to them only through its `argTypes` options. Pure.
@@ -13,7 +13,7 @@
13
13
  * @module
14
14
  */
15
15
  import type { ComponentDocs, PropDocs } from "./componentDocs.ts";
16
- import type { PanelArgs } from "./messages.ts";
16
+ import { type PanelArgs } from "./messages.ts";
17
17
  /**
18
18
  * The props a story's args stand for, in the args' order, then its actions the args do not hold.
19
19
  *
@@ -4,14 +4,15 @@
4
4
  *
5
5
  * @remarks
6
6
  * An arg's kind is read from its value: a text, a number, a toggle, an event for an arg the frame records as an
7
- * action. A list or a value the source names (`namedValues`) is listed for reading, unless its type is one the source
8
- * names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
7
+ * action, fields for an object or a list. A value the source names (`namedValues`) is listed for
8
+ * reading, unless its type is one the source names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
9
9
  * The story's `argTypes` are laid over these as over the types' props (`argTypes.ts`). A shared link's values are
10
10
  * checked against these kinds (`addressArgs.ts`): without the types, a text arg takes any text, so a prop of a few
11
11
  * values keeps a link to them only through its `argTypes` options. Pure.
12
12
  *
13
13
  * @module
14
14
  */
15
+ import { isArgList, isNamedArg } from "./messages.js";
15
16
  /**
16
17
  * The prop an arg stands for, its kind and type read from its value.
17
18
  *
@@ -31,10 +32,15 @@ const propOfArg = (name, value, isAction) => {
31
32
  return { ...prop, kind: "toggle", type: "boolean" };
32
33
  if (value === null)
33
34
  return { ...prop, kind: "other", type: "null" };
34
- if (Array.isArray(value))
35
- return { ...prop, kind: "other", type: "array" };
36
35
  // a value the source names: its type, so the panel offers the source's values for it
37
- return { ...prop, kind: "other", type: "of" in value ? value.of : "unknown" };
36
+ if (isNamedArg(value))
37
+ return { ...prop, kind: "other", type: value.of };
38
+ return {
39
+ ...prop,
40
+ kind: "other",
41
+ type: isArgList(value) ? "array" : "object",
42
+ shape: { kind: "like", value }
43
+ };
38
44
  };
39
45
  /**
40
46
  * The props a story's args stand for, in the args' order, then its actions the args do not hold.
@@ -0,0 +1,29 @@
1
+ /**
2
+ * What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
3
+ * without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
4
+ *
5
+ * @remarks
6
+ * Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
7
+ * could not serve. Both hold the same text: Vite's transform and the build run the same parser.
8
+ *
9
+ * @module
10
+ */
11
+ /** Where in a file a bundler places an error, when it does; its column counts from 0. */
12
+ export type BundlerErrorPlace = {
13
+ /** The file, absolute. */
14
+ readonly id?: string | undefined;
15
+ /** Its line and column. */
16
+ readonly loc?: {
17
+ readonly file?: string | undefined;
18
+ readonly line: number;
19
+ readonly column: number;
20
+ } | undefined;
21
+ };
22
+ /**
23
+ * A bundler's error as lines: its place and reason first.
24
+ *
25
+ * @param message - its message, without colours.
26
+ * @param place - what the error says of its place.
27
+ * @returns the lines; none when the message says nothing.
28
+ */
29
+ export declare const bundlerErrorLines: (message: string, place?: BundlerErrorPlace) => readonly string[];
@@ -0,0 +1,49 @@
1
+ /**
2
+ * What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
3
+ * without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
4
+ *
5
+ * @remarks
6
+ * Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
7
+ * could not serve. Both hold the same text: Vite's transform and the build run the same parser.
8
+ *
9
+ * @module
10
+ */
11
+ /** The place at the head of a code frame (`╭─[ src/Broken.tsx:1:48 ]`), which a parse error alone names its file in. */
12
+ const FRAME_PLACE = /╭─\[\s*(.+?)\s*\]/;
13
+ /** A line that says nothing of the reason: a count of errors, a stack's, a code frame's. */
14
+ const NOISE = /^(?:(?:Transform|Build) failed with \d+ errors?:?$|at .*:\d+:\d+\)?$|[╭│╰─┬]|\d+\s*[│|])/;
15
+ /** The plugin or tool that raised an error, before its reason (`[PARSE_ERROR]`, `[plugin forgebook]`). */
16
+ const RAISED_BY = /^\[[^\]]+\]\s*/;
17
+ /**
18
+ * An error's place, as an editor counts: `file:line:column`, or the file alone.
19
+ *
20
+ * @param place - what the error says of it.
21
+ * @param message - its message, without colours.
22
+ */
23
+ const placeOf = ({ id, loc }, message) => {
24
+ const framed = FRAME_PLACE.exec(message)?.[1];
25
+ if (framed !== undefined)
26
+ return framed;
27
+ const file = loc?.file ?? id;
28
+ if (file === undefined || loc === undefined)
29
+ return file;
30
+ return `${file}:${loc.line}:${loc.column + 1}`;
31
+ };
32
+ /**
33
+ * A bundler's error as lines: its place and reason first.
34
+ *
35
+ * @param message - its message, without colours.
36
+ * @param place - what the error says of its place.
37
+ * @returns the lines; none when the message says nothing.
38
+ */
39
+ export const bundlerErrorLines = (message, place = {}) => {
40
+ const lines = message
41
+ .split("\n")
42
+ .map((line) => line.replace(RAISED_BY, "").trim())
43
+ .filter((line) => line !== "" && !NOISE.test(line));
44
+ const where = placeOf(place, message);
45
+ const [first, ...rest] = lines;
46
+ if (first === undefined || where === undefined || first.startsWith(where))
47
+ return lines;
48
+ return [`${where}: ${first}`, ...rest];
49
+ };