forgebook 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. package/README.md +994 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +182 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +62 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +95 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +204 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +323 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +148 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +69 -185
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +83 -0
  211. package/dist/src/componentDocs.js +20 -3
  212. package/dist/src/controlCode.d.ts +27 -0
  213. package/dist/src/controlCode.js +41 -0
  214. package/dist/src/frame/callValues.d.ts +19 -0
  215. package/dist/src/frame/callValues.js +58 -0
  216. package/dist/src/frame/canvasScheme.d.ts +33 -0
  217. package/dist/src/frame/canvasScheme.js +67 -0
  218. package/dist/src/frame/controlValues.d.ts +39 -0
  219. package/dist/src/frame/controlValues.js +143 -0
  220. package/dist/src/frame/frame.css +36 -3
  221. package/dist/src/frame/frameStatus.d.ts +16 -1
  222. package/dist/src/frame/frameStatus.js +16 -1
  223. package/dist/src/frame/frameView.js +4 -3
  224. package/dist/src/frame/mountFrame.d.ts +10 -1
  225. package/dist/src/frame/mountFrame.js +160 -55
  226. package/dist/src/frame/panelControls.d.ts +67 -0
  227. package/dist/src/frame/panelControls.js +110 -0
  228. package/dist/src/frame/panelValues.d.ts +35 -0
  229. package/dist/src/frame/panelValues.js +127 -0
  230. package/dist/src/frame/playActions.d.ts +39 -0
  231. package/dist/src/frame/playActions.js +98 -0
  232. package/dist/src/frame/playStepper.d.ts +28 -0
  233. package/dist/src/frame/playStepper.js +38 -0
  234. package/dist/src/frame/playStory.d.ts +9 -1
  235. package/dist/src/frame/playStory.js +49 -3
  236. package/dist/src/frame/renderer.d.ts +34 -1
  237. package/dist/src/frame/renderer.js +24 -0
  238. package/dist/src/frame/shellChannel.d.ts +1 -1
  239. package/dist/src/frame/shellChannel.js +1 -1
  240. package/dist/src/frame/shellCheck.d.ts +17 -0
  241. package/dist/src/frame/shellCheck.js +25 -0
  242. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  243. package/dist/src/frame/shellMessageCheck.js +53 -0
  244. package/dist/src/frame/storyContent.d.ts +50 -0
  245. package/dist/src/frame/storyContent.js +73 -0
  246. package/dist/src/frame/storyModule.d.ts +9 -0
  247. package/dist/src/frame/storyModule.js +20 -2
  248. package/dist/src/frame/storyRun.d.ts +15 -7
  249. package/dist/src/frame/storyRun.js +64 -15
  250. package/dist/src/frame/valueSheets.d.ts +35 -0
  251. package/dist/src/frame/valueSheets.js +99 -0
  252. package/dist/src/hotModules.d.ts +20 -0
  253. package/dist/src/hotModules.js +23 -0
  254. package/dist/src/jsxCode.d.ts +1 -14
  255. package/dist/src/jsxCode.js +46 -10
  256. package/dist/src/liveErrors.d.ts +30 -4
  257. package/dist/src/liveErrors.js +18 -3
  258. package/dist/src/messages.d.ts +77 -27
  259. package/dist/src/messages.js +58 -100
  260. package/dist/src/namedValues.d.ts +2 -26
  261. package/dist/src/namedValues.js +0 -47
  262. package/dist/src/pageConfig.d.ts +2 -0
  263. package/dist/src/playTrace.d.ts +19 -2
  264. package/dist/src/playTrace.js +10 -5
  265. package/dist/src/plugin.d.ts +10 -3
  266. package/dist/src/previewRelay.js +9 -1
  267. package/dist/src/printable.d.ts +12 -0
  268. package/dist/src/printable.js +22 -0
  269. package/dist/src/propsSignature.d.ts +37 -0
  270. package/dist/src/propsSignature.js +40 -0
  271. package/dist/src/search.d.ts +41 -5
  272. package/dist/src/search.js +93 -23
  273. package/dist/src/searchMatch.d.ts +4 -1
  274. package/dist/src/searchMatch.js +26 -5
  275. package/dist/src/searchTypos.d.ts +88 -0
  276. package/dist/src/searchTypos.js +178 -0
  277. package/dist/src/shapeValues.d.ts +86 -0
  278. package/dist/src/shapeValues.js +295 -0
  279. package/dist/src/shell/ApiReference.js +6 -3
  280. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  281. package/dist/src/shell/ApiTableBox.js +11 -0
  282. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  283. package/dist/src/shell/AppearanceMenu.js +9 -6
  284. package/dist/src/shell/AuthoredHome.js +3 -1
  285. package/dist/src/shell/CodeTab.d.ts +12 -6
  286. package/dist/src/shell/CodeTab.js +47 -3
  287. package/dist/src/shell/CodeText.d.ts +1 -1
  288. package/dist/src/shell/CodeText.js +2 -3
  289. package/dist/src/shell/CompareGrid.js +1 -1
  290. package/dist/src/shell/ComponentPage.d.ts +6 -6
  291. package/dist/src/shell/ComponentPage.js +8 -2
  292. package/dist/src/shell/CustomControl.d.ts +34 -0
  293. package/dist/src/shell/CustomControl.js +125 -0
  294. package/dist/src/shell/DocContainers.js +1 -1
  295. package/dist/src/shell/DocPage.js +2 -2
  296. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  297. package/dist/src/shell/DroppedArgsList.js +1 -1
  298. package/dist/src/shell/EmbedPage.js +30 -12
  299. package/dist/src/shell/Example.d.ts +5 -1
  300. package/dist/src/shell/Example.js +16 -8
  301. package/dist/src/shell/FrameView.d.ts +6 -3
  302. package/dist/src/shell/FrameView.js +2 -2
  303. package/dist/src/shell/HomePage.d.ts +3 -1
  304. package/dist/src/shell/HomePage.js +18 -6
  305. package/dist/src/shell/InfoTip.js +2 -2
  306. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  307. package/dist/src/shell/InteractionsTab.js +18 -2
  308. package/dist/src/shell/LazyPage.js +1 -1
  309. package/dist/src/shell/PackageHtml.js +3 -1
  310. package/dist/src/shell/PageWidth.d.ts +29 -0
  311. package/dist/src/shell/PageWidth.js +18 -0
  312. package/dist/src/shell/PinnedControl.js +14 -62
  313. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  314. package/dist/src/shell/PinnedControlMenu.js +72 -0
  315. package/dist/src/shell/PropFields.d.ts +3 -1
  316. package/dist/src/shell/PropFields.js +9 -6
  317. package/dist/src/shell/PropRows.d.ts +22 -11
  318. package/dist/src/shell/PropRows.js +62 -24
  319. package/dist/src/shell/PropsTab.d.ts +12 -5
  320. package/dist/src/shell/PropsTab.js +9 -22
  321. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  322. package/dist/src/shell/RefStoryPage.js +123 -0
  323. package/dist/src/shell/SearchPanel.js +51 -24
  324. package/dist/src/shell/Shell.d.ts +18 -0
  325. package/dist/src/shell/Shell.js +141 -23
  326. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  327. package/dist/src/shell/ShortcutHelp.js +66 -0
  328. package/dist/src/shell/Sidebar.d.ts +17 -4
  329. package/dist/src/shell/Sidebar.js +92 -41
  330. package/dist/src/shell/SidebarDocs.js +2 -2
  331. package/dist/src/shell/SidebarEntries.js +5 -3
  332. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  333. package/dist/src/shell/SidebarHandle.js +4 -4
  334. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  335. package/dist/src/shell/SidebarRefs.js +99 -0
  336. package/dist/src/shell/SidebarSearch.js +37 -9
  337. package/dist/src/shell/SignatureReference.js +3 -1
  338. package/dist/src/shell/Stage.d.ts +10 -2
  339. package/dist/src/shell/Stage.js +29 -49
  340. package/dist/src/shell/StatusBadges.d.ts +54 -0
  341. package/dist/src/shell/StatusBadges.js +77 -0
  342. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  343. package/dist/src/shell/StoryCodeBlock.js +7 -6
  344. package/dist/src/shell/StoryPicker.d.ts +4 -2
  345. package/dist/src/shell/StoryPicker.js +3 -3
  346. package/dist/src/shell/Switch.d.ts +29 -0
  347. package/dist/src/shell/Switch.js +11 -0
  348. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  349. package/dist/src/shell/SwitchGallery.js +17 -0
  350. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  351. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  352. package/dist/src/shell/TagFilter.d.ts +24 -0
  353. package/dist/src/shell/TagFilter.js +45 -0
  354. package/dist/src/shell/TagViews.d.ts +39 -0
  355. package/dist/src/shell/TagViews.js +20 -0
  356. package/dist/src/shell/Toolbar.d.ts +4 -1
  357. package/dist/src/shell/Toolbar.js +17 -7
  358. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  359. package/dist/src/shell/ToolbarControl.js +23 -6
  360. package/dist/src/shell/ViewMenuPanel.js +6 -1
  361. package/dist/src/shell/argChecks.d.ts +22 -0
  362. package/dist/src/shell/argChecks.js +20 -0
  363. package/dist/src/shell/asideStory.js +7 -2
  364. package/dist/src/shell/audienceSections.css +9 -9
  365. package/dist/src/shell/catalogueContext.d.ts +1 -1
  366. package/dist/src/shell/catalogueContext.js +6 -1
  367. package/dist/src/shell/codeSpans.d.ts +27 -0
  368. package/dist/src/shell/codeSpans.js +76 -0
  369. package/dist/src/shell/compareVariants.d.ts +4 -2
  370. package/dist/src/shell/compareVariants.js +16 -8
  371. package/dist/src/shell/composition.d.ts +23 -0
  372. package/dist/src/shell/composition.js +26 -0
  373. package/dist/src/shell/controlCycle.d.ts +1 -1
  374. package/dist/src/shell/controlCycle.js +3 -2
  375. package/dist/src/shell/customControls.d.ts +62 -0
  376. package/dist/src/shell/customControls.js +81 -0
  377. package/dist/src/shell/docPage.css +22 -22
  378. package/dist/src/shell/dockTabs.d.ts +19 -3
  379. package/dist/src/shell/dockTabs.js +29 -20
  380. package/dist/src/shell/embed.css +7 -7
  381. package/dist/src/shell/frameOrder.d.ts +35 -0
  382. package/dist/src/shell/frameOrder.js +45 -0
  383. package/dist/src/shell/framesOrigin.d.ts +7 -0
  384. package/dist/src/shell/framesOrigin.js +1 -1
  385. package/dist/src/shell/galleryPlace.d.ts +20 -0
  386. package/dist/src/shell/galleryPlace.js +26 -0
  387. package/dist/src/shell/icons.d.ts +1 -0
  388. package/dist/src/shell/icons.js +1 -0
  389. package/dist/src/shell/keyboard.d.ts +14 -12
  390. package/dist/src/shell/keyboard.js +21 -6
  391. package/dist/src/shell/laterStrings.d.ts +30 -0
  392. package/dist/src/shell/laterStrings.js +43 -3
  393. package/dist/src/shell/mountShell.js +3 -0
  394. package/dist/src/shell/pageStrings.d.ts +4 -0
  395. package/dist/src/shell/pageStrings.js +4 -0
  396. package/dist/src/shell/pageTagView.d.ts +18 -0
  397. package/dist/src/shell/pageTagView.js +10 -0
  398. package/dist/src/shell/playMemory.d.ts +14 -0
  399. package/dist/src/shell/playMemory.js +8 -0
  400. package/dist/src/shell/propNotes.d.ts +23 -0
  401. package/dist/src/shell/propNotes.js +37 -0
  402. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  403. package/dist/src/shell/refIndexLoad.js +38 -0
  404. package/dist/src/shell/refParts.d.ts +34 -0
  405. package/dist/src/shell/refParts.js +9 -0
  406. package/dist/src/shell/refStory.css +21 -0
  407. package/dist/src/shell/refStrings.d.ts +13 -0
  408. package/dist/src/shell/refStrings.js +21 -0
  409. package/dist/src/shell/search.css +11 -11
  410. package/dist/src/shell/shell.css +376 -169
  411. package/dist/src/shell/shellScheme.js +2 -2
  412. package/dist/src/shell/shortcutHelp.css +64 -0
  413. package/dist/src/shell/stageArgs.d.ts +53 -0
  414. package/dist/src/shell/stageArgs.js +64 -0
  415. package/dist/src/shell/statusBadges.css +51 -0
  416. package/dist/src/shell/strings.d.ts +7 -16
  417. package/dist/src/shell/strings.js +12 -17
  418. package/dist/src/shell/switchGallery.css +104 -0
  419. package/dist/src/shell/tagFilter.css +46 -0
  420. package/dist/src/shell/tagView.d.ts +20 -0
  421. package/dist/src/shell/tagView.js +10 -0
  422. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  423. package/dist/src/shell/useAddressArgs.js +56 -11
  424. package/dist/src/shell/useControlKeys.js +2 -2
  425. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  426. package/dist/src/shell/useEditedProblems.js +40 -0
  427. package/dist/src/shell/useFrameMessages.js +3 -0
  428. package/dist/src/shell/useFrameQueue.d.ts +8 -3
  429. package/dist/src/shell/useFrameQueue.js +42 -12
  430. package/dist/src/shell/useListedTree.d.ts +13 -0
  431. package/dist/src/shell/useListedTree.js +32 -0
  432. package/dist/src/shell/usePageFrames.js +2 -2
  433. package/dist/src/shell/usePopover.d.ts +5 -0
  434. package/dist/src/shell/usePopover.js +7 -1
  435. package/dist/src/shell/useRefIndex.d.ts +22 -0
  436. package/dist/src/shell/useRefIndex.js +36 -0
  437. package/dist/src/shell/useScrollSettled.d.ts +18 -0
  438. package/dist/src/shell/useScrollSettled.js +56 -0
  439. package/dist/src/shell/useScrollStops.d.ts +20 -0
  440. package/dist/src/shell/useScrollStops.js +41 -0
  441. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  442. package/dist/src/shell/useShortcutHelp.js +32 -0
  443. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  444. package/dist/src/shell/useSidebarOverlay.js +12 -4
  445. package/dist/src/shell/useStoryCode.d.ts +2 -1
  446. package/dist/src/shell/useStoryCode.js +12 -7
  447. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  448. package/dist/src/shell/useToolbarLayout.js +2 -2
  449. package/dist/src/shell/useWorstCase.d.ts +8 -2
  450. package/dist/src/shell/useWorstCase.js +2 -2
  451. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  452. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  453. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  454. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  455. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  456. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  457. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  458. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  459. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  460. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  461. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  462. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  463. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  464. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  465. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  466. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  467. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  468. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  469. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  470. package/dist/src/shell/valueEditors/ValueField.js +148 -0
  471. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  472. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  473. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  474. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  475. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  476. package/dist/src/shell/worstArgs.d.ts +8 -5
  477. package/dist/src/shell/worstArgs.js +14 -7
  478. package/dist/src/shellTheme.d.ts +1 -1
  479. package/dist/src/shellTheme.js +15 -1
  480. package/dist/src/shellTheme.types.d.ts +4 -0
  481. package/dist/src/shellWord.d.ts +12 -0
  482. package/dist/src/shellWord.js +15 -0
  483. package/dist/src/sourceFiles.js +2 -1
  484. package/dist/src/storyArgTypes.d.ts +57 -0
  485. package/dist/src/storyArgTypes.js +195 -0
  486. package/dist/src/storyBackground.js +14 -3
  487. package/dist/src/storyCheck.d.ts +99 -3
  488. package/dist/src/storyCheck.js +39 -1
  489. package/dist/src/storyCodeText.d.ts +52 -0
  490. package/dist/src/storyCodeText.js +30 -0
  491. package/dist/src/storyControls.d.ts +103 -0
  492. package/dist/src/storyControls.js +100 -0
  493. package/dist/src/storyStatuses.d.ts +55 -0
  494. package/dist/src/storyStatuses.js +104 -0
  495. package/dist/src/storyTagNames.d.ts +25 -0
  496. package/dist/src/storyTagNames.js +25 -0
  497. package/dist/src/storyTags.d.ts +29 -0
  498. package/dist/src/storyTags.js +85 -0
  499. package/dist/src/storyTree.d.ts +13 -0
  500. package/dist/src/storyTree.js +24 -4
  501. package/dist/src/storybookArgs.d.ts +24 -0
  502. package/dist/src/storybookArgs.js +185 -0
  503. package/dist/src/switches.d.ts +66 -3
  504. package/dist/src/switches.js +42 -1
  505. package/dist/src/valueSchema.d.ts +28 -0
  506. package/dist/src/valueSchema.js +196 -0
  507. package/dist/src/valueShape.d.ts +94 -0
  508. package/dist/src/valueShape.js +25 -0
  509. package/dist/src/viewState.d.ts +8 -3
  510. package/dist/src/viewState.js +27 -10
  511. package/dist/src/vite/adapter.d.ts +40 -2
  512. package/dist/src/vite/adapter.js +1 -0
  513. package/dist/src/vite/agent.types.d.ts +354 -7
  514. package/dist/src/vite/agentApi.d.ts +23 -0
  515. package/dist/src/vite/agentApi.js +90 -17
  516. package/dist/src/vite/agentIndex.d.ts +0 -2
  517. package/dist/src/vite/agentIndex.js +5 -6
  518. package/dist/src/vite/agentRoutes.d.ts +20 -1
  519. package/dist/src/vite/agentRoutes.js +135 -66
  520. package/dist/src/vite/agentStatuses.d.ts +42 -0
  521. package/dist/src/vite/agentStatuses.js +67 -0
  522. package/dist/src/vite/agentStoryCode.d.ts +51 -0
  523. package/dist/src/vite/agentStoryCode.js +44 -0
  524. package/dist/src/vite/agentVisibility.d.ts +47 -0
  525. package/dist/src/vite/agentVisibility.js +174 -0
  526. package/dist/src/vite/appAudit.d.ts +134 -0
  527. package/dist/src/vite/appAudit.js +333 -0
  528. package/dist/src/vite/appBuildOption.d.ts +53 -0
  529. package/dist/src/vite/appBuildOption.js +55 -0
  530. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  531. package/dist/src/vite/appTokenFiles.js +433 -0
  532. package/dist/src/vite/appTokens.d.ts +23 -0
  533. package/dist/src/vite/appTokens.js +275 -0
  534. package/dist/src/vite/argControlsConfig.d.ts +30 -0
  535. package/dist/src/vite/argControlsConfig.js +176 -0
  536. package/dist/src/vite/builtTexts.d.ts +10 -0
  537. package/dist/src/vite/builtTexts.js +59 -22
  538. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  539. package/dist/src/vite/catalogueConfig.js +21 -4
  540. package/dist/src/vite/changeCoverage.d.ts +74 -0
  541. package/dist/src/vite/changeCoverage.js +120 -0
  542. package/dist/src/vite/changedRoute.d.ts +30 -0
  543. package/dist/src/vite/changedRoute.js +197 -0
  544. package/dist/src/vite/checkCode.d.ts +105 -3
  545. package/dist/src/vite/checkCode.js +323 -36
  546. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  547. package/dist/src/vite/checkoutWatch.js +287 -0
  548. package/dist/src/vite/closeWatch.d.ts +8 -0
  549. package/dist/src/vite/closeWatch.js +1 -1
  550. package/dist/src/vite/componentCache.d.ts +8 -0
  551. package/dist/src/vite/componentCache.js +66 -0
  552. package/dist/src/vite/componentGraph.d.ts +71 -0
  553. package/dist/src/vite/componentGraph.js +133 -0
  554. package/dist/src/vite/componentRules.d.ts +33 -0
  555. package/dist/src/vite/componentRules.js +105 -0
  556. package/dist/src/vite/componentScan.d.ts +69 -0
  557. package/dist/src/vite/componentScan.js +418 -0
  558. package/dist/src/vite/compositionCheck.d.ts +15 -0
  559. package/dist/src/vite/compositionCheck.js +243 -0
  560. package/dist/src/vite/config.d.ts +67 -1
  561. package/dist/src/vite/configFile.d.ts +15 -2
  562. package/dist/src/vite/configFile.js +109 -40
  563. package/dist/src/vite/configKeys.d.ts +15 -0
  564. package/dist/src/vite/configKeys.js +172 -0
  565. package/dist/src/vite/configLoadError.d.ts +23 -0
  566. package/dist/src/vite/configLoadError.js +71 -0
  567. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  568. package/dist/src/vite/cssDeclarations.js +290 -0
  569. package/dist/src/vite/cssImports.d.ts +14 -0
  570. package/dist/src/vite/cssImports.js +48 -0
  571. package/dist/src/vite/cssReferences.d.ts +54 -0
  572. package/dist/src/vite/cssReferences.js +157 -0
  573. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  574. package/dist/src/vite/cssTokenValues.js +233 -0
  575. package/dist/src/vite/designTokens.d.ts +24 -0
  576. package/dist/src/vite/designTokens.js +5 -1
  577. package/dist/src/vite/docsExtractor.d.ts +9 -3
  578. package/dist/src/vite/docsExtractor.js +11 -3
  579. package/dist/src/vite/docsProgram.d.ts +17 -4
  580. package/dist/src/vite/docsProgram.js +52 -11
  581. package/dist/src/vite/docsWorker.js +7 -2
  582. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  583. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  584. package/dist/src/vite/fileImports.d.ts +17 -0
  585. package/dist/src/vite/fileImports.js +57 -0
  586. package/dist/src/vite/findComponent.d.ts +10 -2
  587. package/dist/src/vite/findComponent.js +27 -22
  588. package/dist/src/vite/findRoute.js +3 -2
  589. package/dist/src/vite/forcedStates.d.ts +9 -2
  590. package/dist/src/vite/forcedStates.js +12 -3
  591. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  592. package/dist/src/vite/forgebookPlugin.js +55 -73
  593. package/dist/src/vite/frameErrors.d.ts +19 -0
  594. package/dist/src/vite/frameErrors.js +70 -0
  595. package/dist/src/vite/framesServer.d.ts +12 -0
  596. package/dist/src/vite/framesServer.js +21 -4
  597. package/dist/src/vite/functionComponentDocs.js +81 -12
  598. package/dist/src/vite/generatedModules.js +4 -2
  599. package/dist/src/vite/gitChange.d.ts +38 -5
  600. package/dist/src/vite/gitChange.js +71 -11
  601. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  602. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  603. package/dist/src/vite/hotSnippets.d.ts +38 -14
  604. package/dist/src/vite/hotSnippets.js +137 -39
  605. package/dist/src/vite/importedNames.d.ts +37 -0
  606. package/dist/src/vite/importedNames.js +138 -0
  607. package/dist/src/vite/indexFields.d.ts +6 -0
  608. package/dist/src/vite/indexFields.js +21 -0
  609. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  610. package/dist/src/vite/indexStoryFile.js +22 -157
  611. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  612. package/dist/src/vite/jsxCallSites.js +200 -0
  613. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  614. package/dist/src/vite/jsxInScripts.js +138 -0
  615. package/dist/src/vite/jsxTree.d.ts +20 -0
  616. package/dist/src/vite/jsxTree.js +163 -0
  617. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  618. package/dist/src/vite/lineAndColumn.js +18 -0
  619. package/dist/src/vite/lookAlikes.d.ts +65 -0
  620. package/dist/src/vite/lookAlikes.js +228 -0
  621. package/dist/src/vite/nearestToken.d.ts +17 -0
  622. package/dist/src/vite/nearestToken.js +9 -2
  623. package/dist/src/vite/packageEntries.d.ts +42 -0
  624. package/dist/src/vite/packageEntries.js +127 -0
  625. package/dist/src/vite/pages.d.ts +9 -1
  626. package/dist/src/vite/pages.js +119 -4
  627. package/dist/src/vite/pluginConfig.js +4 -0
  628. package/dist/src/vite/pluginIds.d.ts +2 -0
  629. package/dist/src/vite/pluginIds.js +5 -1
  630. package/dist/src/vite/pluginModules.d.ts +81 -11
  631. package/dist/src/vite/pluginModules.js +109 -21
  632. package/dist/src/vite/prebundled.d.ts +57 -15
  633. package/dist/src/vite/prebundled.js +80 -0
  634. package/dist/src/vite/previewTags.d.ts +25 -0
  635. package/dist/src/vite/previewTags.js +56 -0
  636. package/dist/src/vite/projectFiles.d.ts +54 -0
  637. package/dist/src/vite/projectFiles.js +116 -0
  638. package/dist/src/vite/projectPostcss.d.ts +70 -0
  639. package/dist/src/vite/projectPostcss.js +250 -0
  640. package/dist/src/vite/propDocs.d.ts +12 -0
  641. package/dist/src/vite/propDocs.js +187 -60
  642. package/dist/src/vite/propKind.d.ts +40 -0
  643. package/dist/src/vite/propKind.js +71 -0
  644. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  645. package/dist/src/vite/propTypeNotes.js +51 -0
  646. package/dist/src/vite/publishedExports.d.ts +27 -0
  647. package/dist/src/vite/publishedExports.js +298 -0
  648. package/dist/src/vite/realFolder.d.ts +6 -0
  649. package/dist/src/vite/realFolder.js +25 -0
  650. package/dist/src/vite/refsConfig.d.ts +39 -0
  651. package/dist/src/vite/refsConfig.js +54 -0
  652. package/dist/src/vite/reuseCheck.d.ts +45 -0
  653. package/dist/src/vite/reuseCheck.js +260 -0
  654. package/dist/src/vite/runningVersions.d.ts +33 -0
  655. package/dist/src/vite/runningVersions.js +25 -0
  656. package/dist/src/vite/scriptProblems.d.ts +60 -0
  657. package/dist/src/vite/scriptProblems.js +155 -0
  658. package/dist/src/vite/searchModule.js +3 -2
  659. package/dist/src/vite/searchRoute.js +4 -2
  660. package/dist/src/vite/shapeDocs.d.ts +36 -0
  661. package/dist/src/vite/shapeDocs.js +177 -0
  662. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  663. package/dist/src/vite/singleFileComponent.js +83 -0
  664. package/dist/src/vite/sourceText.d.ts +34 -0
  665. package/dist/src/vite/sourceText.js +72 -0
  666. package/dist/src/vite/sourceTokens.d.ts +7 -0
  667. package/dist/src/vite/sourceTokens.js +7 -2
  668. package/dist/src/vite/stackLines.d.ts +49 -0
  669. package/dist/src/vite/stackLines.js +96 -0
  670. package/dist/src/vite/storyCode.d.ts +22 -7
  671. package/dist/src/vite/storyCode.js +263 -37
  672. package/dist/src/vite/storyCoverage.d.ts +48 -0
  673. package/dist/src/vite/storyCoverage.js +179 -0
  674. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  675. package/dist/src/vite/storyFilesModule.js +105 -15
  676. package/dist/src/vite/storyPatterns.d.ts +31 -0
  677. package/dist/src/vite/storyPatterns.js +140 -5
  678. package/dist/src/vite/storyReach.d.ts +10 -2
  679. package/dist/src/vite/storyReach.js +15 -11
  680. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  681. package/dist/src/vite/storyTopLevel.js +146 -0
  682. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  683. package/dist/src/vite/storylessRoutes.js +210 -19
  684. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  685. package/dist/src/vite/switchValuesCheck.js +164 -0
  686. package/dist/src/vite/switchesDocument.d.ts +15 -0
  687. package/dist/src/vite/switchesDocument.js +47 -0
  688. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  689. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  690. package/dist/src/vite/textImports.d.ts +15 -0
  691. package/dist/src/vite/textImports.js +58 -0
  692. package/dist/src/vite/textModules.d.ts +6 -5
  693. package/dist/src/vite/textModules.js +13 -8
  694. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  695. package/dist/src/vite/tokenAnswers.js +11 -7
  696. package/dist/src/vite/typeParameters.d.ts +83 -0
  697. package/dist/src/vite/typeParameters.js +270 -0
  698. package/dist/src/vite/typedControls.d.ts +31 -0
  699. package/dist/src/vite/typedControls.js +66 -0
  700. package/dist/src/vite/unionProps.d.ts +37 -0
  701. package/dist/src/vite/unionProps.js +121 -0
  702. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  703. package/dist/src/vite/unresolvedTokens.js +193 -0
  704. package/dist/src/vite/usageGraph.js +10 -52
  705. package/dist/src/vite/usageGuidance.d.ts +9 -2
  706. package/dist/src/vite/usageGuidance.js +36 -8
  707. package/dist/src/vite/usageImports.d.ts +35 -0
  708. package/dist/src/vite/usageImports.js +280 -0
  709. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  710. package/dist/src/vite/visibilityRoute.js +320 -0
  711. package/dist/src/worstCase.d.ts +2 -0
  712. package/dist/src/worstCase.js +2 -0
  713. package/package.json +28 -8
@@ -0,0 +1,250 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ /**
10
+ * A project's PostCSS, as its own build runs it on every style sheet: Tailwind CSS (`@tailwindcss/postcss`, or
11
+ * `tailwindcss` before 4), Autoprefixer or any plugin its configuration names.
12
+ *
13
+ * @remarks
14
+ * A catalogue's style sheets go through Lightning CSS (the forced states are a rewrite of it), which leaves PostCSS's
15
+ * configuration unread: what this module makes runs first, so Lightning CSS receives what the app's build would have
16
+ * produced. A configuration is a file exporting `{ plugins }`, the plugins an object of names and options (`false` turns
17
+ * one off) or a list, as PostCSS's loader reads it. Loading one runs the project's code, as its own build does, and
18
+ * nothing loads until the first style sheet asks. The project's folders are searched up to its repository's root, where
19
+ * a workspace keeps the one its packages share. PostCSS itself is the project's, or Vite's own: the catalogue adds none.
20
+ *
21
+ * @module
22
+ */
23
+ import { existsSync, globSync, readFileSync } from "node:fs";
24
+ import { createRequire } from "node:module";
25
+ import { homedir } from "node:os";
26
+ import { dirname, join, resolve } from "node:path";
27
+ import { pathToFileURL } from "node:url";
28
+ import { inlineCssImports } from "./cssImports.js";
29
+ /** The names of a PostCSS configuration, in the order they are read. */
30
+ const CONFIG_FILES = [
31
+ ".postcssrc.json",
32
+ ".postcssrc",
33
+ "postcss.config.json",
34
+ "postcss.config.js",
35
+ "postcss.config.mjs",
36
+ "postcss.config.cjs",
37
+ "postcss.config.ts",
38
+ "postcss.config.mts",
39
+ "postcss.config.cts",
40
+ ".postcssrc.js",
41
+ ".postcssrc.cjs",
42
+ ".postcssrc.mjs",
43
+ ".postcssrc.ts"
44
+ ];
45
+ /** What marks a repository's root: a project's search for a configuration stops there. */
46
+ const ROOT_MARKS = [".git", "pnpm-workspace.yaml"];
47
+ /** Whether a value is a plain object. */
48
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
49
+ /** Whether a value is PostCSS's function. */
50
+ const isPostCss = (value) => typeof value === "function";
51
+ /**
52
+ * The files PostCSS's plugins said they read: each `dependency`, and each file of a `dir-dependency`'s glob.
53
+ *
54
+ * @param messages - the messages of PostCSS's result.
55
+ */
56
+ export const watchedFiles = (messages) => messages.flatMap((message) => {
57
+ if (!isRecord(message))
58
+ return [];
59
+ if (message["type"] === "dependency" && typeof message["file"] === "string")
60
+ return [message["file"]];
61
+ if (message["type"] !== "dir-dependency" || typeof message["dir"] !== "string")
62
+ return [];
63
+ const { dir } = message;
64
+ const glob = typeof message["glob"] === "string" ? message["glob"] : "**/*";
65
+ return globSync(glob, { cwd: dir, exclude: ["**/node_modules/**"] }).map((file) => resolve(dir, file));
66
+ });
67
+ /** The configuration in `package.json`'s `postcss`, or none. */
68
+ const packageConfig = (dir) => {
69
+ const file = join(dir, "package.json");
70
+ if (!existsSync(file))
71
+ return undefined;
72
+ try {
73
+ const manifest = JSON.parse(readFileSync(file, "utf8"));
74
+ return isRecord(manifest) ? manifest["postcss"] : undefined;
75
+ }
76
+ catch {
77
+ return undefined;
78
+ }
79
+ };
80
+ /**
81
+ * Where a project's PostCSS configuration is, or none: in its folder, else in the ones above it, up to its repository's
82
+ * root.
83
+ *
84
+ * @param dir - the project's folder.
85
+ */
86
+ export const postcssConfigPlace = (dir) => {
87
+ let current = resolve(dir);
88
+ while (true) {
89
+ const file = CONFIG_FILES.map((name) => join(current, name)).find((path) => existsSync(path));
90
+ if (file !== undefined)
91
+ return { kind: "file", file };
92
+ const config = packageConfig(current);
93
+ if (config !== undefined)
94
+ return { kind: "package", file: join(current, "package.json"), config };
95
+ const parent = dirname(current);
96
+ const isLast = current === homedir() || ROOT_MARKS.some((mark) => existsSync(join(current, mark)));
97
+ if (parent === current || isLast)
98
+ return undefined;
99
+ current = parent;
100
+ }
101
+ };
102
+ /**
103
+ * The project's PostCSS configuration file, or none.
104
+ *
105
+ * @param dir - the project's folder.
106
+ */
107
+ export const postcssConfigFile = (dir) => postcssConfigPlace(dir)?.file;
108
+ /**
109
+ * The entries of a configuration's `plugins`: each plugin (a name, or a plugin already made) with its options.
110
+ *
111
+ * @param plugins - an object of names and options, or a list of names, `[name, options]` pairs and plugins.
112
+ */
113
+ const pluginEntries = (plugins) => {
114
+ if (isRecord(plugins))
115
+ return Object.entries(plugins);
116
+ if (!Array.isArray(plugins))
117
+ return [];
118
+ return plugins.map((plugin) => Array.isArray(plugin) ? [plugin[0], plugin[1]] : [plugin, undefined]);
119
+ };
120
+ /**
121
+ * A plugin made from its package: its factory called with its options (none for `true` or nothing).
122
+ *
123
+ * @param module - the package, loaded.
124
+ * @param options - the plugin's options.
125
+ */
126
+ const madePlugin = (module, options) => {
127
+ const factory = isRecord(module) && "default" in module ? module["default"] : module;
128
+ if (typeof factory !== "function")
129
+ return factory;
130
+ return Reflect.apply(factory, undefined, options === undefined || options === true ? [] : [options]);
131
+ };
132
+ /**
133
+ * The plugins a configuration names, each loaded from the project and given its options; one set to `false` is off.
134
+ *
135
+ * @param plugins - the configuration's `plugins`: an object of names and options, or a list.
136
+ * @param load - loads a plugin's package by name.
137
+ */
138
+ export const configuredPlugins = async (plugins, load) => {
139
+ const loaded = [];
140
+ for (const [plugin, options] of pluginEntries(plugins)) {
141
+ if (options === false)
142
+ continue;
143
+ loaded.push(typeof plugin === "string" ? madePlugin(await load(plugin), options) : plugin);
144
+ }
145
+ return loaded;
146
+ };
147
+ /**
148
+ * A module loaded as Node loads it, from the first of the places that has it.
149
+ *
150
+ * @param dirs - the folders to resolve it from, in order.
151
+ * @param name - the package.
152
+ */
153
+ const moduleFrom = async (dirs, name) => {
154
+ let failure;
155
+ for (const dir of dirs) {
156
+ try {
157
+ return await import(__rewriteRelativeImportExtension(pathToFileURL(createRequire(join(dir, "package.json")).resolve(name)).href));
158
+ }
159
+ catch (error) {
160
+ failure ??= error;
161
+ }
162
+ }
163
+ throw failure;
164
+ };
165
+ /**
166
+ * A configuration file, loaded.
167
+ *
168
+ * @param file - its file.
169
+ */
170
+ const loadConfig = async (file) => {
171
+ if (file.endsWith(".json") || file.endsWith(".postcssrc"))
172
+ return JSON.parse(readFileSync(file, "utf8"));
173
+ const module = await import(__rewriteRelativeImportExtension(pathToFileURL(file).href));
174
+ return isRecord(module) && "default" in module ? module["default"] : module;
175
+ };
176
+ /**
177
+ * The folder of a package a project has, to resolve what it brings from there; none when it has none.
178
+ *
179
+ * @param dir - the project's folder.
180
+ * @param name - the package.
181
+ */
182
+ const packageFolder = (dir, name) => {
183
+ try {
184
+ return dirname(createRequire(join(dir, "package.json")).resolve(`${name}/package.json`));
185
+ }
186
+ catch {
187
+ return undefined;
188
+ }
189
+ };
190
+ /** The folder of the Vite this module runs on, whose PostCSS a project without its own uses. */
191
+ const viteFolder = () => packageFolder(import.meta.dirname, "vite");
192
+ /** The `plugins` of a configuration, read from where it is. */
193
+ const pluginsOf = async (place) => {
194
+ if (place === undefined)
195
+ return undefined;
196
+ const loaded = place.kind === "package" ? place.config : await loadConfig(place.file);
197
+ // PostCSS's loader calls a configuration that is a function, with what it runs for
198
+ const config = typeof loaded === "function"
199
+ ? await Reflect.apply(loaded, undefined, [{ cwd: dirname(place.file), env: "development" }])
200
+ : loaded;
201
+ return isRecord(config) ? config["plugins"] : undefined;
202
+ };
203
+ /**
204
+ * A project's PostCSS configuration that could not be loaded, which is a different thing from a sheet it refuses: every
205
+ * sheet would fail alike, so a catalogue goes on without it and says so once.
206
+ */
207
+ export class PostcssConfigError extends Error {
208
+ }
209
+ /**
210
+ * The project's PostCSS, ready to run: its configuration and plugins loaded on the first style sheet.
211
+ *
212
+ * @param dir - the project's folder.
213
+ * @param options - where else to look, and plugins already made.
214
+ * @returns the runner, or none for a project without a PostCSS configuration.
215
+ */
216
+ export const projectPostcss = (dir, options = {}) => {
217
+ const place = options.plugins === undefined ? postcssConfigPlace(dir) : undefined;
218
+ if (options.plugins === undefined && place === undefined)
219
+ return undefined;
220
+ let processor;
221
+ const ready = async () => {
222
+ const brought = options.bringsPostcss === undefined ? undefined : packageFolder(dir, options.bringsPostcss);
223
+ const searched = [
224
+ dir,
225
+ ...(place === undefined ? [] : [dirname(place.file)]),
226
+ ...(brought === undefined ? [] : [brought])
227
+ ];
228
+ const plugins = options.plugins ??
229
+ (await configuredPlugins(await pluginsOf(place), (name) => moduleFrom(searched, name)));
230
+ const vite = viteFolder();
231
+ const module = await moduleFrom([...searched, ...(vite === undefined ? [] : [vite])], "postcss");
232
+ const postcss = isRecord(module) && "default" in module ? module["default"] : module;
233
+ if (!isPostCss(postcss))
234
+ throw new Error(`${place?.file ?? dir} names plugins, and PostCSS could not be loaded to run them`);
235
+ return postcss(plugins);
236
+ };
237
+ return async (css, path) => {
238
+ processor ??= ready().catch((error) => {
239
+ // read again on the next sheet: the configuration may be saved fixed while the server runs
240
+ processor = undefined;
241
+ throw new PostcssConfigError(error instanceof Error ? error.message : String(error));
242
+ });
243
+ const { css: inlined, files } = inlineCssImports(css, path);
244
+ const result = await (await processor).process(inlined, { from: path, to: path });
245
+ return {
246
+ css: result.css,
247
+ messages: [...result.messages, ...files.map((file) => ({ type: "dependency", file }))]
248
+ };
249
+ };
250
+ };
@@ -1,5 +1,6 @@
1
1
  import ts from "typescript-6";
2
2
  import type { PropDocs } from "../componentDocs.ts";
3
+ import { type Bindings } from "./typeParameters.ts";
3
4
  /**
4
5
  * A symbol, through an import to what it names.
5
6
  *
@@ -40,6 +41,17 @@ export type PropReading = {
40
41
  * capital by default.
41
42
  */
42
43
  readonly eventName?: RegExp | undefined;
44
+ /**
45
+ * The same prop as the other variants of a union of props declare it (`selected?: Date` beside `selected?: Date[]`):
46
+ * their written types join its own. When their types differ, what only one of them would say (an event's signature,
47
+ * a value's shape, an object's members) is left out, and its kind is `other` unless all share one.
48
+ */
49
+ readonly variants?: readonly ts.Symbol[] | undefined;
50
+ /**
51
+ * What the props type's type parameters stand for in the component (`typeParameters.ts`), so a type parameter left
52
+ * open is shown by the component's constraint; none reads each by its own.
53
+ */
54
+ readonly bindings?: Bindings | undefined;
43
55
  };
44
56
  /**
45
57
  * One prop's docs.
@@ -12,18 +12,11 @@
12
12
  import { dirname } from "node:path";
13
13
  import ts from "typescript-6";
14
14
  import { summaryOf, tagOf } from "./docsProgram.js";
15
+ import { literalValues, typeAndKind } from "./propKind.js";
16
+ import { propTypeNotes } from "./propTypeNotes.js";
17
+ import { shapeOfProp } from "./shapeDocs.js";
15
18
  import { unwrapped } from "./storyMeta.js";
16
- /** An event: a function prop named `on` and a capital (React's `onPress`). */
17
- const EVENT_NAME = /^on[A-Z]/;
18
- /** Whether a type is a union of string or number literals (a choice). */
19
- const literalValues = (type) => {
20
- if (!type.isUnion())
21
- return undefined;
22
- const values = type.types.map((member) => member.isStringLiteral() || member.isNumberLiteral() ? member.value : undefined);
23
- return values.every((value) => value !== undefined)
24
- ? values.filter((value) => value !== undefined)
25
- : undefined;
26
- };
19
+ import { genericFreeText, usesTypeParameter } from "./typeParameters.js";
27
20
  /** A literal value an expression writes (`"md"`, `3`, `-1`), or none for anything else. */
28
21
  const literalOfExpression = (expression) => {
29
22
  if (ts.isStringLiteral(expression) || ts.isNoSubstitutionTemplateLiteral(expression))
@@ -131,25 +124,48 @@ const writtenLiterals = (node, checker, seen) => {
131
124
  return [...fromArguments, ...(alias === undefined ? [] : writtenLiterals(alias.type, checker, seen))];
132
125
  };
133
126
  /**
134
- * A choice's values in the order the source writes them: the checker's order follows the order it happened to meet
135
- * the types in, which a program kept between reads changes from one read to the next.
127
+ * What puts a choice's values in the order the source writes them: the checker's order follows the order it happened to
128
+ * meet the types in, which a program kept between reads changes from one read to the next.
129
+ *
130
+ * @remarks
131
+ * A prop's shape asks for the order of every union inside it, and a library's unions can hold hundreds of values (an
132
+ * icon's name): the declared values are read once per prop, on the first ask, and each value's place is looked up, not
133
+ * searched for.
136
134
  *
137
- * @param values - the values, in the checker's order.
138
135
  * @param declared - the prop's declared type nodes.
139
136
  * @param checker - the type checker.
140
- * @returns the values, those the source writes in its order first, any other after them in the checker's order.
137
+ * @returns the sorter: given values in the checker's order, those the source writes in its order first, any other
138
+ * after them in the checker's order.
141
139
  */
142
- const writtenOrder = (values, declared, checker) => {
143
- const seen = new Set();
144
- const written = declared.flatMap((node) => ts.isMethodSignature(node) ? [] : writtenLiterals(node, checker, seen));
145
- const rank = (value) => {
146
- const index = written.indexOf(value);
147
- return index === -1 ? written.length : index;
140
+ const writtenOrderOf = (declared, checker) => {
141
+ let places;
142
+ let unwritten = 0;
143
+ return (values) => {
144
+ if (places === undefined) {
145
+ const seen = new Set();
146
+ const written = declared.flatMap((node) => ts.isMethodSignature(node) ? [] : writtenLiterals(node, checker, seen));
147
+ places = new Map();
148
+ unwritten = written.length;
149
+ // a value written twice keeps its first place, as a search from the start would find it
150
+ for (const [index, value] of written.entries())
151
+ if (!places.has(value))
152
+ places.set(value, index);
153
+ }
154
+ const known = places;
155
+ const rank = (value) => known.get(value) ?? unwritten;
156
+ return [...values].sort((left, right) => rank(left) - rank(right));
148
157
  };
149
- return [...values].sort((left, right) => rank(left) - rank(right));
150
158
  };
151
159
  /** A choice's type as TypeScript writes it, its members in the given order (`"md" | "sm"`). */
152
160
  const choiceTypeText = (values) => values.map((value) => (typeof value === "string" ? JSON.stringify(value) : String(value))).join(" | ");
161
+ /**
162
+ * Declarations by file and position: a prop several variants declare comes with them in the order the checker met
163
+ * the variants, which a program kept between reads changes.
164
+ *
165
+ * @param declarations - the declarations.
166
+ */
167
+ const byPosition = (declarations) => [...declarations].sort((left, right) => left.getSourceFile().fileName.localeCompare(right.getSourceFile().fileName) ||
168
+ left.getStart() - right.getStart());
153
169
  /**
154
170
  * The props in the order the source declares them: those declared in the component's own folder first, then the
155
171
  * ones it takes from elsewhere, each by file and position. The checker's order follows the types it met first (an
@@ -160,7 +176,7 @@ const choiceTypeText = (values) => values.map((value) => (typeof value === "stri
160
176
  */
161
177
  export const declarationOrder = (props, componentFolder) => {
162
178
  const keyOf = (prop) => {
163
- const [declaration] = prop.declarations ?? [];
179
+ const [declaration] = byPosition(prop.declarations ?? []);
164
180
  if (declaration === undefined)
165
181
  return [2, "", 0];
166
182
  const file = declaration.getSourceFile().fileName;
@@ -172,8 +188,15 @@ export const declarationOrder = (props, componentFolder) => {
172
188
  return leftOwn - rightOwn || leftFile.localeCompare(rightFile) || leftAt - rightAt;
173
189
  });
174
190
  };
175
- /** A type node's text as the source writes it, on one line. */
176
- const nodeText = (node) => node.getText().replace(/\s+/g, " ").trim();
191
+ /**
192
+ * A type node's text as the source writes it, on one line; given a checker, each generic type parameter it uses
193
+ * replaced by what it is shown as (`typeParameters.ts`).
194
+ */
195
+ const nodeText = (node, generic) => (generic === undefined ? node.getText() : genericFreeText(node, generic))
196
+ // an inline object's TSDoc is the docs' to read, not part of its type
197
+ .replace(/\/\*[\s\S]*?\*\//g, "")
198
+ .replace(/\s+/g, " ")
199
+ .trim();
177
200
  /**
178
201
  * Whether a type node adds nothing a prop can take: `undefined` and `null` (left out as the checker's `NonNullable`
179
202
  * did) and `never` (a branch of the props where the prop is not allowed).
@@ -193,6 +216,57 @@ const declaredMembers = (node) => {
193
216
  const bare = bareType(node);
194
217
  return (ts.isUnionTypeNode(bare) ? bare.types : [bare]).filter((member) => !isNothing(member));
195
218
  };
219
+ /**
220
+ * The names a type node goes by: a plain reference's name as written, the name it was declared with (an import may
221
+ * rename it), and the names of the aliases it is declared through (`type ButtonIcon = IconComponent`); for a union, the
222
+ * names every member goes by, without `undefined`, `null` and `never`. A generic's reference (`ComponentType<Props>`) and a
223
+ * type parameter name no type of their own, so they end the walk.
224
+ *
225
+ * @param node - the type node.
226
+ * @param checker - the type checker, to follow a name to its declaration.
227
+ * @param seen - the nodes already walked, so a recursive alias ends.
228
+ */
229
+ const typeNamesOf = (node, checker, seen) => {
230
+ const bare = bareType(node);
231
+ if (seen.has(bare))
232
+ return [];
233
+ const walked = new Set([...seen, bare]);
234
+ if (ts.isUnionTypeNode(bare))
235
+ return sharedNames(declaredMembers(bare), checker, walked);
236
+ if (!ts.isTypeReferenceNode(bare) || bare.typeArguments !== undefined)
237
+ return [];
238
+ const symbol = declaredSymbol(checker.getSymbolAtLocation(bare.typeName), checker);
239
+ if (symbol === undefined || symbol.flags & ts.SymbolFlags.TypeParameter)
240
+ return [];
241
+ // a default export's symbol is named `default`: its declaration keeps the name it was written with
242
+ const declared = ts.getNameOfDeclaration(symbol.declarations?.[0])?.getText() ?? bare.typeName.getText();
243
+ const alias = symbol.declarations?.find(ts.isTypeAliasDeclaration);
244
+ const through = alias !== undefined && !alias.typeParameters ? typeNamesOf(alias.type, checker, walked) : [];
245
+ return [...new Set([bare.typeName.getText(), declared, ...through])];
246
+ };
247
+ /**
248
+ * The names every one of several type nodes goes by, in the first one's order.
249
+ *
250
+ * @param nodes - the type nodes: a union's members, or a prop's declarations.
251
+ * @param checker - the type checker.
252
+ * @param seen - the nodes already walked.
253
+ */
254
+ const sharedNames = (nodes, checker, seen) => {
255
+ const [first, ...others] = nodes.map((node) => typeNamesOf(node, checker, seen));
256
+ return (first ?? []).filter((name) => others.every((names) => names.includes(name)));
257
+ };
258
+ /**
259
+ * The names a prop's declared types all go by: what a custom control's `matches` reads. A branch of the props where the
260
+ * prop is `never` takes no value, so it names no type; a method names none.
261
+ *
262
+ * @param declared - the prop's declared types.
263
+ * @param checker - the program's checker.
264
+ */
265
+ const writtenTypeNames = (declared, checker) => {
266
+ const taking = declared.filter((node) => ts.isMethodSignature(node) || declaredMembers(node).length > 0);
267
+ const nodes = taking.flatMap((node) => (ts.isMethodSignature(node) ? [] : [node]));
268
+ return nodes.length === taking.length ? sharedNames(nodes, checker, new Set()) : [];
269
+ };
196
270
  /**
197
271
  * A prop's declared type nodes: a property's type (in a type or a class) or a method's whole signature, once per
198
272
  * declaration. A prop of props written as alternatives (`{ indicator?: never } | { indicator?: "dot" | "spinner" }`)
@@ -200,7 +274,7 @@ const declaredMembers = (node) => {
200
274
  *
201
275
  * @param symbol - the prop.
202
276
  */
203
- const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declaration) => {
277
+ const declaredTypesOf = (symbol) => byPosition(symbol.declarations ?? []).flatMap((declaration) => {
204
278
  if (ts.isMethodSignature(declaration))
205
279
  return [declaration];
206
280
  return (ts.isPropertySignature(declaration) || ts.isPropertyDeclaration(declaration)) &&
@@ -214,36 +288,51 @@ const declaredTypesOf = (symbol) => (symbol.declarations ?? []).flatMap((declara
214
288
  * between reads changes from one read to the next.
215
289
  *
216
290
  * @param declaredTypes - the prop's declared type nodes.
291
+ * @param generic - the checker and the bindings when the prop's type is still generic, to replace the type parameters
292
+ * its text uses; none to write it as it is.
217
293
  * @returns the text, or none when the prop writes no type (the caller falls back to the checker's).
218
294
  */
219
- const writtenTypeText = (declaredTypes) => {
295
+ const writtenTypeText = (declaredTypes, generic) => {
296
+ const text = (node) => nodeText(node, generic);
220
297
  const texts = declaredTypes.flatMap((declared) => {
221
298
  if (!ts.isMethodSignature(declared))
222
- return declaredMembers(declared).map(nodeText);
223
- const parameters = declared.parameters.map(nodeText).join(", ");
224
- return [`(${parameters}) => ${declared.type === undefined ? "void" : nodeText(declared.type)}`];
299
+ return declaredMembers(declared).map(text);
300
+ const parameters = declared.parameters.map(text).join(", ");
301
+ return [`(${parameters}) => ${declared.type === undefined ? "void" : text(declared.type)}`];
225
302
  });
226
303
  // each branch's members once, in the order the branches write them
227
304
  const unique = [...new Set(texts)];
228
305
  return unique.length === 0 ? undefined : unique.join(" | ");
229
306
  };
307
+ /**
308
+ * A prop's type as the source writes it, or none for the checker's: a text naming a type parameter the component
309
+ * instantiates (`value: TValue` in `BaseProps<string>`) says less than the checker's `string`.
310
+ *
311
+ * @param declared - the prop's declared types.
312
+ * @param generic - the checker and the bindings when the prop's type is still generic.
313
+ * @param checker - the program's checker.
314
+ */
315
+ const writtenText = (declared, generic, checker) => generic === undefined && usesTypeParameter(declared, checker)
316
+ ? undefined
317
+ : writtenTypeText(declared, generic);
230
318
  /**
231
319
  * An event's signature as the source writes it: a function type among the prop's declared members, or a method.
232
320
  *
233
321
  * @param declaredTypes - the event prop's declared type nodes.
322
+ * @param generic - the checker and the bindings when the event's type is still generic, as `writtenTypeText` takes them.
234
323
  * @returns the signature, or none when the source writes none in place (a named handler type).
235
324
  */
236
- const writtenSignature = (declaredTypes) => {
325
+ const writtenSignature = (declaredTypes, generic) => {
237
326
  const nodes = declaredTypes.flatMap((declared) => ts.isMethodSignature(declared) ? [declared] : declaredMembers(declared));
238
327
  const fn = nodes.find((node) => ts.isMethodSignature(node) || ts.isFunctionTypeNode(node));
239
328
  if (fn === undefined)
240
329
  return undefined;
241
330
  return {
242
331
  parameters: fn.parameters.map((parameter) => ({
243
- name: nodeText(parameter.name),
244
- type: parameter.type === undefined ? "unknown" : nodeText(parameter.type)
332
+ name: nodeText(parameter.name, undefined),
333
+ type: parameter.type === undefined ? "unknown" : nodeText(parameter.type, generic)
245
334
  })),
246
- returns: fn.type === undefined ? "void" : nodeText(fn.type)
335
+ returns: fn.type === undefined ? "void" : nodeText(fn.type, generic)
247
336
  };
248
337
  };
249
338
  /** An event's signature. */
@@ -259,20 +348,6 @@ const signatureOf = (type, checker, node) => {
259
348
  returns: checker.typeToString(signature.getReturnType())
260
349
  };
261
350
  };
262
- /** A prop's kind, from its name and its type without `undefined`. */
263
- const kindOf = (name, type, eventName) => {
264
- if (eventName.test(name) && type.getCallSignatures().length > 0)
265
- return "event";
266
- if (type.flags & ts.TypeFlags.Boolean || type.flags & ts.TypeFlags.BooleanLiteral)
267
- return "toggle";
268
- if (literalValues(type) !== undefined)
269
- return "choice";
270
- if (type.flags & ts.TypeFlags.String)
271
- return "text";
272
- if (type.flags & ts.TypeFlags.Number)
273
- return "number";
274
- return "other";
275
- };
276
351
  /** Whether a symbol is declared outside the package (a DOM attribute from React's types). */
277
352
  export const isForeign = (symbol) => (symbol.declarations ?? []).every((declaration) => declaration.getSourceFile().fileName.includes("/node_modules/"));
278
353
  /**
@@ -334,6 +409,22 @@ const groupingOf = (symbol, kind, type, checker, node) => {
334
409
  ...(members === undefined ? {} : { members })
335
410
  };
336
411
  };
412
+ /**
413
+ * A choice's values across the variants' types that declare it, each once, in the order the source writes them.
414
+ *
415
+ * @param kind - the prop's kind: only a choice has values.
416
+ * @param types - its type in each variant, its own first.
417
+ * @param declared - its declared types, for their order.
418
+ * @param checker - the program's checker.
419
+ */
420
+ const choicesOf = (kind, types, declared, checker) => {
421
+ if (kind !== "choice")
422
+ return undefined;
423
+ const lists = types.map(literalValues);
424
+ return lists.every((list) => list !== undefined)
425
+ ? writtenOrderOf(declared, checker)([...new Set(lists.flat())])
426
+ : undefined;
427
+ };
337
428
  /**
338
429
  * One prop's docs.
339
430
  *
@@ -343,31 +434,67 @@ const groupingOf = (symbol, kind, type, checker, node) => {
343
434
  * @param reading - how the framework's props differ from a plain function's; none for a plain prop.
344
435
  */
345
436
  export const propDocs = (symbol, checker, node, reading = {}) => {
346
- const { taken, eventName = EVENT_NAME } = reading;
347
- const type = checker.getNonNullableType(taken?.type ?? checker.getTypeOfSymbolAtLocation(symbol, node));
437
+ const { taken, variants = [] } = reading;
348
438
  const takenNodes = taken?.typeNode === undefined ? [] : [taken.typeNode];
349
- const declared = taken === undefined ? declaredTypesOf(symbol) : takenNodes;
439
+ const declared = taken === undefined ? [symbol, ...variants].flatMap(declaredTypesOf) : takenNodes;
440
+ const { type, variantTypes, isMixed, kind, generic } = typeAndKind(symbol, reading, checker, node);
350
441
  const name = symbol.getName();
351
- const kind = kindOf(name, type, eventName);
352
442
  const defaultValue = tagOf(symbol, checker, "defaultValue");
353
- const checkerChoices = kind === "choice" ? literalValues(type) : undefined;
354
- const choices = checkerChoices === undefined ? undefined : writtenOrder(checkerChoices, declared, checker);
355
- const signature = kind === "event" ? (writtenSignature(declared) ?? signatureOf(type, checker, node)) : undefined;
443
+ const choices = choicesOf(kind, [type, ...variantTypes], declared, checker);
444
+ // what one variant's type says of its values is not true of the others'
445
+ const signature = kind === "event" && !isMixed
446
+ ? (writtenSignature(declared, generic) ?? signatureOf(type, checker, node))
447
+ : undefined;
356
448
  // a node takes a text: the panel can set it as one, which covers labels, titles and children
357
- const canTakeText = kind === "other" && checker.isTypeAssignableTo(checker.getStringType(), type);
449
+ const canTakeText = kind === "other" &&
450
+ [type, ...variantTypes].every((each) => checker.isTypeAssignableTo(checker.getStringType(), each));
451
+ const notes = propTypeNotes(declared, type, checker, generic);
452
+ const typeText = choices === undefined
453
+ ? (writtenText(declared, generic, checker) ?? checker.typeToString(type))
454
+ : choiceTypeText(choices);
455
+ const typeNames = writtenTypeNames(declared, checker);
358
456
  return {
359
457
  name,
360
458
  kind,
361
- type: choices === undefined
362
- ? (writtenTypeText(declared) ?? checker.typeToString(type))
363
- : choiceTypeText(choices),
459
+ type: typeText,
460
+ // only when they say more than the type's text
461
+ ...(typeNames.some((each) => each !== typeText) ? { typeNames } : {}),
364
462
  description: summaryOf(symbol, checker),
365
463
  isRequired: (symbol.flags & ts.SymbolFlags.Optional) === 0,
366
464
  ...(defaultValue === undefined ? {} : { defaultValue }),
367
465
  ...(choices === undefined ? {} : { choices }),
368
466
  ...(signature === undefined ? {} : { signature }),
369
467
  ...(canTakeText ? { canTakeText } : {}),
370
- ...groupingOf(symbol, kind, type, checker, node)
468
+ ...(isMixed
469
+ ? {}
470
+ : {
471
+ ...editingOf(symbol, { kind, type, canTakeText, declared, checker, node }),
472
+ ...groupingOf(symbol, kind, type, checker, node)
473
+ }),
474
+ ...(notes.length === 0 ? {} : { notes })
475
+ };
476
+ };
477
+ /**
478
+ * How a prop's value is edited, beyond its kind: what it looks like, and the tokens its TSDoc asks for.
479
+ *
480
+ * @param symbol - the prop.
481
+ * @param prop - what is known of it.
482
+ */
483
+ const editingOf = (symbol, prop) => {
484
+ const { kind, type, canTakeText, declared, checker, node } = prop;
485
+ const shape = kind === "other"
486
+ ? shapeOfProp(type, canTakeText, {
487
+ checker,
488
+ node,
489
+ order: writtenOrderOf(declared, checker),
490
+ typeText: (member) => writtenTypeText(declaredTypesOf(member)),
491
+ description: (member) => summaryOf(member, checker)
492
+ })
493
+ : undefined;
494
+ const token = tagOf(symbol, checker, "token");
495
+ return {
496
+ ...(shape === undefined ? {} : { shape }),
497
+ ...(token === undefined || token === "" ? {} : { token })
371
498
  };
372
499
  };
373
500
  /** The props whose keys are the component's parts. */