forgebook 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/README.md +917 -74
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +54 -6
  187. package/dist/src/addressArgs.js +72 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +58 -14
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PluginBlockHost.js +2 -1
  307. package/dist/src/shell/PluginTabHost.js +19 -2
  308. package/dist/src/shell/PropFields.d.ts +3 -1
  309. package/dist/src/shell/PropFields.js +9 -6
  310. package/dist/src/shell/PropRows.d.ts +23 -2
  311. package/dist/src/shell/PropRows.js +58 -19
  312. package/dist/src/shell/PropsTab.d.ts +12 -5
  313. package/dist/src/shell/PropsTab.js +9 -21
  314. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  315. package/dist/src/shell/RefStoryPage.js +123 -0
  316. package/dist/src/shell/SearchPanel.js +51 -24
  317. package/dist/src/shell/Shell.d.ts +18 -0
  318. package/dist/src/shell/Shell.js +137 -22
  319. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  320. package/dist/src/shell/ShortcutHelp.js +66 -0
  321. package/dist/src/shell/Sidebar.d.ts +17 -4
  322. package/dist/src/shell/Sidebar.js +92 -41
  323. package/dist/src/shell/SidebarDocs.js +2 -2
  324. package/dist/src/shell/SidebarEntries.js +5 -3
  325. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  326. package/dist/src/shell/SidebarHandle.js +4 -4
  327. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  328. package/dist/src/shell/SidebarRefs.js +99 -0
  329. package/dist/src/shell/SidebarSearch.js +37 -9
  330. package/dist/src/shell/SignatureReference.js +3 -1
  331. package/dist/src/shell/Stage.d.ts +10 -2
  332. package/dist/src/shell/Stage.js +35 -60
  333. package/dist/src/shell/StatusBadges.d.ts +54 -0
  334. package/dist/src/shell/StatusBadges.js +77 -0
  335. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  336. package/dist/src/shell/StoryCodeBlock.js +7 -6
  337. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  338. package/dist/src/shell/SwitchGallery.js +17 -0
  339. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  340. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  341. package/dist/src/shell/TagFilter.d.ts +24 -0
  342. package/dist/src/shell/TagFilter.js +45 -0
  343. package/dist/src/shell/TagViews.d.ts +39 -0
  344. package/dist/src/shell/TagViews.js +20 -0
  345. package/dist/src/shell/Toolbar.d.ts +4 -1
  346. package/dist/src/shell/Toolbar.js +17 -7
  347. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  348. package/dist/src/shell/ToolbarControl.js +23 -6
  349. package/dist/src/shell/ViewMenuPanel.js +6 -1
  350. package/dist/src/shell/argChecks.d.ts +22 -0
  351. package/dist/src/shell/argChecks.js +20 -0
  352. package/dist/src/shell/asideStory.d.ts +17 -4
  353. package/dist/src/shell/asideStory.js +21 -4
  354. package/dist/src/shell/audienceSections.css +9 -9
  355. package/dist/src/shell/catalogueContext.d.ts +1 -1
  356. package/dist/src/shell/catalogueContext.js +6 -1
  357. package/dist/src/shell/codeSpans.d.ts +27 -0
  358. package/dist/src/shell/codeSpans.js +76 -0
  359. package/dist/src/shell/compareVariants.d.ts +4 -2
  360. package/dist/src/shell/compareVariants.js +16 -8
  361. package/dist/src/shell/composition.d.ts +23 -0
  362. package/dist/src/shell/composition.js +26 -0
  363. package/dist/src/shell/controlCycle.d.ts +1 -1
  364. package/dist/src/shell/controlCycle.js +3 -2
  365. package/dist/src/shell/customControls.d.ts +55 -0
  366. package/dist/src/shell/customControls.js +70 -0
  367. package/dist/src/shell/docPage.css +22 -22
  368. package/dist/src/shell/dockTabs.d.ts +19 -3
  369. package/dist/src/shell/dockTabs.js +28 -20
  370. package/dist/src/shell/embed.css +7 -7
  371. package/dist/src/shell/framesOrigin.d.ts +7 -0
  372. package/dist/src/shell/framesOrigin.js +1 -1
  373. package/dist/src/shell/galleryPlace.d.ts +20 -0
  374. package/dist/src/shell/galleryPlace.js +26 -0
  375. package/dist/src/shell/icons.d.ts +1 -0
  376. package/dist/src/shell/icons.js +1 -0
  377. package/dist/src/shell/keyboard.d.ts +14 -12
  378. package/dist/src/shell/keyboard.js +21 -6
  379. package/dist/src/shell/laterStrings.d.ts +29 -0
  380. package/dist/src/shell/laterStrings.js +42 -3
  381. package/dist/src/shell/mountShell.js +3 -0
  382. package/dist/src/shell/pageStrings.d.ts +4 -0
  383. package/dist/src/shell/pageStrings.js +4 -0
  384. package/dist/src/shell/pageTagView.d.ts +18 -0
  385. package/dist/src/shell/pageTagView.js +10 -0
  386. package/dist/src/shell/playMemory.d.ts +14 -0
  387. package/dist/src/shell/playMemory.js +8 -0
  388. package/dist/src/shell/propNotes.d.ts +23 -0
  389. package/dist/src/shell/propNotes.js +37 -0
  390. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  391. package/dist/src/shell/refIndexLoad.js +38 -0
  392. package/dist/src/shell/refParts.d.ts +34 -0
  393. package/dist/src/shell/refParts.js +9 -0
  394. package/dist/src/shell/refStory.css +21 -0
  395. package/dist/src/shell/refStrings.d.ts +13 -0
  396. package/dist/src/shell/refStrings.js +21 -0
  397. package/dist/src/shell/search.css +11 -11
  398. package/dist/src/shell/shell.css +348 -168
  399. package/dist/src/shell/shellScheme.js +2 -2
  400. package/dist/src/shell/shortcutHelp.css +64 -0
  401. package/dist/src/shell/stageArgs.d.ts +53 -0
  402. package/dist/src/shell/stageArgs.js +64 -0
  403. package/dist/src/shell/statusBadges.css +51 -0
  404. package/dist/src/shell/strings.d.ts +7 -16
  405. package/dist/src/shell/strings.js +12 -17
  406. package/dist/src/shell/switchGallery.css +104 -0
  407. package/dist/src/shell/tagFilter.css +46 -0
  408. package/dist/src/shell/tagView.d.ts +20 -0
  409. package/dist/src/shell/tagView.js +10 -0
  410. package/dist/src/shell/useAddressArgs.d.ts +27 -2
  411. package/dist/src/shell/useAddressArgs.js +71 -14
  412. package/dist/src/shell/useControlKeys.js +2 -2
  413. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  414. package/dist/src/shell/useEditedProblems.js +40 -0
  415. package/dist/src/shell/useFrameMessages.js +3 -0
  416. package/dist/src/shell/useListedTree.d.ts +13 -0
  417. package/dist/src/shell/useListedTree.js +32 -0
  418. package/dist/src/shell/usePageFrames.js +2 -2
  419. package/dist/src/shell/usePopover.d.ts +5 -0
  420. package/dist/src/shell/usePopover.js +7 -1
  421. package/dist/src/shell/useRefIndex.d.ts +22 -0
  422. package/dist/src/shell/useRefIndex.js +36 -0
  423. package/dist/src/shell/useScrollStops.d.ts +20 -0
  424. package/dist/src/shell/useScrollStops.js +41 -0
  425. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  426. package/dist/src/shell/useShortcutHelp.js +32 -0
  427. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  428. package/dist/src/shell/useSidebarOverlay.js +12 -4
  429. package/dist/src/shell/useStoryCode.d.ts +2 -1
  430. package/dist/src/shell/useStoryCode.js +12 -7
  431. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  432. package/dist/src/shell/useToolbarLayout.js +2 -2
  433. package/dist/src/shell/useWorstCase.d.ts +8 -2
  434. package/dist/src/shell/useWorstCase.js +2 -2
  435. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  436. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  437. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  438. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  439. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  440. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  441. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  442. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  443. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  444. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  445. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  446. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  447. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  448. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  449. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  450. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  451. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  452. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  453. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  454. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  455. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  456. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  457. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  458. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  459. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  460. package/dist/src/shell/worstArgs.d.ts +8 -5
  461. package/dist/src/shell/worstArgs.js +14 -7
  462. package/dist/src/shellTheme.d.ts +1 -1
  463. package/dist/src/shellTheme.js +15 -1
  464. package/dist/src/shellTheme.types.d.ts +4 -0
  465. package/dist/src/shellWord.d.ts +12 -0
  466. package/dist/src/shellWord.js +15 -0
  467. package/dist/src/sourceFiles.js +2 -1
  468. package/dist/src/storyArgTypes.d.ts +57 -0
  469. package/dist/src/storyArgTypes.js +195 -0
  470. package/dist/src/storyBackground.js +14 -3
  471. package/dist/src/storyCheck.d.ts +85 -3
  472. package/dist/src/storyCheck.js +23 -1
  473. package/dist/src/storyCodeText.d.ts +46 -0
  474. package/dist/src/storyCodeText.js +27 -0
  475. package/dist/src/storyControls.d.ts +100 -0
  476. package/dist/src/storyControls.js +100 -0
  477. package/dist/src/storyStatuses.d.ts +55 -0
  478. package/dist/src/storyStatuses.js +104 -0
  479. package/dist/src/storyTagNames.d.ts +25 -0
  480. package/dist/src/storyTagNames.js +25 -0
  481. package/dist/src/storyTags.d.ts +29 -0
  482. package/dist/src/storyTags.js +85 -0
  483. package/dist/src/storyTree.d.ts +13 -0
  484. package/dist/src/storyTree.js +24 -4
  485. package/dist/src/storybookArgs.d.ts +24 -0
  486. package/dist/src/storybookArgs.js +185 -0
  487. package/dist/src/switches.d.ts +66 -3
  488. package/dist/src/switches.js +42 -1
  489. package/dist/src/valueSchema.d.ts +28 -0
  490. package/dist/src/valueSchema.js +196 -0
  491. package/dist/src/valueShape.d.ts +94 -0
  492. package/dist/src/valueShape.js +25 -0
  493. package/dist/src/viewState.d.ts +8 -3
  494. package/dist/src/viewState.js +27 -10
  495. package/dist/src/vite/adapter.d.ts +40 -2
  496. package/dist/src/vite/adapter.js +1 -0
  497. package/dist/src/vite/agent.types.d.ts +347 -7
  498. package/dist/src/vite/agentApi.d.ts +23 -0
  499. package/dist/src/vite/agentApi.js +90 -17
  500. package/dist/src/vite/agentIndex.d.ts +0 -2
  501. package/dist/src/vite/agentIndex.js +5 -6
  502. package/dist/src/vite/agentRoutes.d.ts +20 -1
  503. package/dist/src/vite/agentRoutes.js +106 -65
  504. package/dist/src/vite/agentStatuses.d.ts +42 -0
  505. package/dist/src/vite/agentStatuses.js +67 -0
  506. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  507. package/dist/src/vite/agentStoryCode.js +38 -0
  508. package/dist/src/vite/agentVisibility.d.ts +47 -0
  509. package/dist/src/vite/agentVisibility.js +174 -0
  510. package/dist/src/vite/appAudit.d.ts +134 -0
  511. package/dist/src/vite/appAudit.js +333 -0
  512. package/dist/src/vite/appBuildOption.d.ts +53 -0
  513. package/dist/src/vite/appBuildOption.js +55 -0
  514. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  515. package/dist/src/vite/appTokenFiles.js +433 -0
  516. package/dist/src/vite/appTokens.d.ts +23 -0
  517. package/dist/src/vite/appTokens.js +275 -0
  518. package/dist/src/vite/builtTexts.d.ts +10 -0
  519. package/dist/src/vite/builtTexts.js +59 -22
  520. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  521. package/dist/src/vite/catalogueConfig.js +15 -3
  522. package/dist/src/vite/changeCoverage.d.ts +74 -0
  523. package/dist/src/vite/changeCoverage.js +120 -0
  524. package/dist/src/vite/changedRoute.d.ts +30 -0
  525. package/dist/src/vite/changedRoute.js +197 -0
  526. package/dist/src/vite/checkCode.d.ts +105 -3
  527. package/dist/src/vite/checkCode.js +323 -36
  528. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  529. package/dist/src/vite/checkoutWatch.js +287 -0
  530. package/dist/src/vite/closeWatch.d.ts +8 -0
  531. package/dist/src/vite/closeWatch.js +1 -1
  532. package/dist/src/vite/componentCache.d.ts +8 -0
  533. package/dist/src/vite/componentCache.js +66 -0
  534. package/dist/src/vite/componentGraph.d.ts +71 -0
  535. package/dist/src/vite/componentGraph.js +133 -0
  536. package/dist/src/vite/componentRules.d.ts +33 -0
  537. package/dist/src/vite/componentRules.js +105 -0
  538. package/dist/src/vite/componentScan.d.ts +69 -0
  539. package/dist/src/vite/componentScan.js +418 -0
  540. package/dist/src/vite/compositionCheck.d.ts +15 -0
  541. package/dist/src/vite/compositionCheck.js +243 -0
  542. package/dist/src/vite/config.d.ts +32 -1
  543. package/dist/src/vite/configFile.d.ts +14 -2
  544. package/dist/src/vite/configFile.js +124 -40
  545. package/dist/src/vite/configKeys.d.ts +15 -0
  546. package/dist/src/vite/configKeys.js +171 -0
  547. package/dist/src/vite/configLoadError.d.ts +23 -0
  548. package/dist/src/vite/configLoadError.js +71 -0
  549. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  550. package/dist/src/vite/cssDeclarations.js +290 -0
  551. package/dist/src/vite/cssImports.d.ts +14 -0
  552. package/dist/src/vite/cssImports.js +48 -0
  553. package/dist/src/vite/cssReferences.d.ts +54 -0
  554. package/dist/src/vite/cssReferences.js +157 -0
  555. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  556. package/dist/src/vite/cssTokenValues.js +233 -0
  557. package/dist/src/vite/designTokens.d.ts +24 -0
  558. package/dist/src/vite/designTokens.js +5 -1
  559. package/dist/src/vite/docsExtractor.d.ts +9 -3
  560. package/dist/src/vite/docsExtractor.js +11 -3
  561. package/dist/src/vite/docsProgram.d.ts +17 -4
  562. package/dist/src/vite/docsProgram.js +52 -11
  563. package/dist/src/vite/docsWorker.js +7 -2
  564. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  565. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  566. package/dist/src/vite/fileImports.d.ts +17 -0
  567. package/dist/src/vite/fileImports.js +57 -0
  568. package/dist/src/vite/findComponent.d.ts +10 -2
  569. package/dist/src/vite/findComponent.js +27 -22
  570. package/dist/src/vite/findRoute.js +3 -2
  571. package/dist/src/vite/forcedStates.d.ts +9 -2
  572. package/dist/src/vite/forcedStates.js +12 -3
  573. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  574. package/dist/src/vite/forgebookPlugin.js +52 -72
  575. package/dist/src/vite/frameErrors.d.ts +19 -0
  576. package/dist/src/vite/frameErrors.js +70 -0
  577. package/dist/src/vite/framesServer.d.ts +12 -0
  578. package/dist/src/vite/framesServer.js +21 -4
  579. package/dist/src/vite/functionComponentDocs.js +81 -12
  580. package/dist/src/vite/generatedModules.js +4 -2
  581. package/dist/src/vite/gitChange.d.ts +38 -5
  582. package/dist/src/vite/gitChange.js +71 -11
  583. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  584. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  585. package/dist/src/vite/hotSnippets.d.ts +38 -14
  586. package/dist/src/vite/hotSnippets.js +137 -39
  587. package/dist/src/vite/importedNames.d.ts +37 -0
  588. package/dist/src/vite/importedNames.js +138 -0
  589. package/dist/src/vite/indexFields.d.ts +6 -0
  590. package/dist/src/vite/indexFields.js +21 -0
  591. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  592. package/dist/src/vite/indexStoryFile.js +22 -157
  593. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  594. package/dist/src/vite/jsxCallSites.js +200 -0
  595. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  596. package/dist/src/vite/jsxInScripts.js +138 -0
  597. package/dist/src/vite/jsxTree.d.ts +20 -0
  598. package/dist/src/vite/jsxTree.js +163 -0
  599. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  600. package/dist/src/vite/lineAndColumn.js +18 -0
  601. package/dist/src/vite/lookAlikes.d.ts +65 -0
  602. package/dist/src/vite/lookAlikes.js +228 -0
  603. package/dist/src/vite/nearestToken.d.ts +17 -0
  604. package/dist/src/vite/nearestToken.js +9 -2
  605. package/dist/src/vite/packageEntries.d.ts +42 -0
  606. package/dist/src/vite/packageEntries.js +127 -0
  607. package/dist/src/vite/pages.d.ts +9 -1
  608. package/dist/src/vite/pages.js +108 -4
  609. package/dist/src/vite/pluginConfig.js +4 -0
  610. package/dist/src/vite/pluginIds.d.ts +2 -0
  611. package/dist/src/vite/pluginIds.js +5 -1
  612. package/dist/src/vite/pluginModules.d.ts +81 -11
  613. package/dist/src/vite/pluginModules.js +109 -21
  614. package/dist/src/vite/prebundled.d.ts +57 -15
  615. package/dist/src/vite/prebundled.js +80 -0
  616. package/dist/src/vite/previewTags.d.ts +25 -0
  617. package/dist/src/vite/previewTags.js +56 -0
  618. package/dist/src/vite/projectFiles.d.ts +54 -0
  619. package/dist/src/vite/projectFiles.js +116 -0
  620. package/dist/src/vite/projectPostcss.d.ts +70 -0
  621. package/dist/src/vite/projectPostcss.js +250 -0
  622. package/dist/src/vite/propDocs.d.ts +12 -0
  623. package/dist/src/vite/propDocs.js +130 -58
  624. package/dist/src/vite/propKind.d.ts +40 -0
  625. package/dist/src/vite/propKind.js +71 -0
  626. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  627. package/dist/src/vite/propTypeNotes.js +51 -0
  628. package/dist/src/vite/publishedExports.d.ts +27 -0
  629. package/dist/src/vite/publishedExports.js +298 -0
  630. package/dist/src/vite/realFolder.d.ts +6 -0
  631. package/dist/src/vite/realFolder.js +25 -0
  632. package/dist/src/vite/refsConfig.d.ts +39 -0
  633. package/dist/src/vite/refsConfig.js +54 -0
  634. package/dist/src/vite/reuseCheck.d.ts +45 -0
  635. package/dist/src/vite/reuseCheck.js +260 -0
  636. package/dist/src/vite/runningVersions.d.ts +33 -0
  637. package/dist/src/vite/runningVersions.js +25 -0
  638. package/dist/src/vite/scriptProblems.d.ts +60 -0
  639. package/dist/src/vite/scriptProblems.js +155 -0
  640. package/dist/src/vite/searchModule.js +3 -2
  641. package/dist/src/vite/searchRoute.js +4 -2
  642. package/dist/src/vite/shapeDocs.d.ts +36 -0
  643. package/dist/src/vite/shapeDocs.js +177 -0
  644. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  645. package/dist/src/vite/singleFileComponent.js +83 -0
  646. package/dist/src/vite/sourceText.d.ts +34 -0
  647. package/dist/src/vite/sourceText.js +72 -0
  648. package/dist/src/vite/sourceTokens.d.ts +7 -0
  649. package/dist/src/vite/sourceTokens.js +7 -2
  650. package/dist/src/vite/stackLines.d.ts +49 -0
  651. package/dist/src/vite/stackLines.js +96 -0
  652. package/dist/src/vite/storyCode.d.ts +22 -7
  653. package/dist/src/vite/storyCode.js +263 -37
  654. package/dist/src/vite/storyCoverage.d.ts +48 -0
  655. package/dist/src/vite/storyCoverage.js +179 -0
  656. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  657. package/dist/src/vite/storyFilesModule.js +105 -15
  658. package/dist/src/vite/storyPatterns.d.ts +31 -0
  659. package/dist/src/vite/storyPatterns.js +140 -5
  660. package/dist/src/vite/storyReach.d.ts +10 -2
  661. package/dist/src/vite/storyReach.js +15 -11
  662. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  663. package/dist/src/vite/storyTopLevel.js +146 -0
  664. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  665. package/dist/src/vite/storylessRoutes.js +210 -19
  666. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  667. package/dist/src/vite/switchValuesCheck.js +164 -0
  668. package/dist/src/vite/switchesDocument.d.ts +15 -0
  669. package/dist/src/vite/switchesDocument.js +47 -0
  670. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  671. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  672. package/dist/src/vite/textImports.d.ts +15 -0
  673. package/dist/src/vite/textImports.js +58 -0
  674. package/dist/src/vite/textModules.d.ts +6 -5
  675. package/dist/src/vite/textModules.js +13 -8
  676. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  677. package/dist/src/vite/tokenAnswers.js +11 -7
  678. package/dist/src/vite/typeParameters.d.ts +83 -0
  679. package/dist/src/vite/typeParameters.js +270 -0
  680. package/dist/src/vite/unionProps.d.ts +37 -0
  681. package/dist/src/vite/unionProps.js +121 -0
  682. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  683. package/dist/src/vite/unresolvedTokens.js +193 -0
  684. package/dist/src/vite/usageGraph.js +10 -52
  685. package/dist/src/vite/usageGuidance.d.ts +9 -2
  686. package/dist/src/vite/usageGuidance.js +36 -8
  687. package/dist/src/vite/usageImports.d.ts +35 -0
  688. package/dist/src/vite/usageImports.js +280 -0
  689. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  690. package/dist/src/vite/visibilityRoute.js +320 -0
  691. package/dist/src/worstCase.d.ts +2 -0
  692. package/dist/src/worstCase.js +2 -0
  693. package/package.json +28 -8
@@ -51,7 +51,7 @@ const FRAME_PERMISSIONS = [
51
51
  * catalogue's, so the pair gives the story nothing of the catalogue's. Frames on the catalogue's own origin get none:
52
52
  * there the pair would let a story lift its own sandbox, and browsers warn of it.
53
53
  */
54
- const FRAME_SANDBOX = [
54
+ export const FRAME_SANDBOX = [
55
55
  "allow-scripts",
56
56
  "allow-same-origin",
57
57
  "allow-forms",
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Where a gallery's menu sits: under its button, or over it when only there it fits, always inside the window. Pure.
3
+ *
4
+ * @module
5
+ */
6
+ /**
7
+ * The menu's place, in CSS px from the window's corner.
8
+ *
9
+ * @param button - the button's box.
10
+ * @param panel - the menu's size.
11
+ * @param room - the window's size.
12
+ * @returns where its top and left corner go.
13
+ */
14
+ export declare const galleryPlace: (button: Pick<DOMRect, "top" | "bottom" | "left">, panel: Pick<DOMRect, "width" | "height">, room: {
15
+ readonly width: number;
16
+ readonly height: number;
17
+ }) => {
18
+ readonly top: number;
19
+ readonly left: number;
20
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Where a gallery's menu sits: under its button, or over it when only there it fits, always inside the window. Pure.
3
+ *
4
+ * @module
5
+ */
6
+ /** The room kept between the menu and its button or the window's edge, in CSS px. */
7
+ const GAP = 6;
8
+ /**
9
+ * The menu's place, in CSS px from the window's corner.
10
+ *
11
+ * @param button - the button's box.
12
+ * @param panel - the menu's size.
13
+ * @param room - the window's size.
14
+ * @returns where its top and left corner go.
15
+ */
16
+ export const galleryPlace = (button, panel, room) => {
17
+ const below = button.bottom + GAP;
18
+ const above = button.top - GAP - panel.height;
19
+ const isBelowFit = below + panel.height <= room.height - GAP;
20
+ const top = isBelowFit || above < GAP ? below : above;
21
+ return {
22
+ // a menu taller than the room on both sides starts as high as it can and scrolls
23
+ top: Math.max(GAP, Math.min(top, room.height - GAP - panel.height)),
24
+ left: Math.max(GAP, Math.min(button.left, room.width - GAP - panel.width))
25
+ };
26
+ };
@@ -31,6 +31,7 @@ declare const PATHS: {
31
31
  readonly turn: "M2.5 9.5h7a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1ZM12 12.5a2.5 2.5 0 0 0 2.5-2.5V8.5M13.5 10l1-1.5 1 1.5";
32
32
  readonly device: "M5.5 1.5h5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1ZM7.25 3.5h1.5";
33
33
  readonly plus: "M8 3.5v9M3.5 8h9";
34
+ readonly noValue: "M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2ZM3.8 3.8l8.4 8.4";
34
35
  readonly minus: "M3.5 8h9";
35
36
  readonly hash: "M6 2.5 5 13.5M11 2.5l-1 11M3 6h10.5M2.5 10H13";
36
37
  readonly check: "m3.5 8.5 3 3 6-7";
@@ -26,6 +26,7 @@ const PATHS = {
26
26
  turn: "M2.5 9.5h7a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1ZM12 12.5a2.5 2.5 0 0 0 2.5-2.5V8.5M13.5 10l1-1.5 1 1.5",
27
27
  device: "M5.5 1.5h5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1ZM7.25 3.5h1.5",
28
28
  plus: "M8 3.5v9M3.5 8h9",
29
+ noValue: "M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2ZM3.8 3.8l8.4 8.4",
29
30
  minus: "M3.5 8h9",
30
31
  hash: "M6 2.5 5 13.5M11 2.5l-1 11M3 6h10.5M2.5 10H13",
31
32
  check: "m3.5 8.5 3 3 6-7",
@@ -1,20 +1,22 @@
1
+ /** Where this browser keeps the reader's choice: a person's habit, the same in every catalogue of an origin. */
2
+ export declare const SINGLE_KEYS_STORED = "forgebook-single-keys";
1
3
  /**
2
- * The shell's keys: `/` goes to the search, `[` and `]` open the previous and the next story in the sidebar's order.
3
- * A key typed into a field, or with a modifier, is the field's or the browser's.
4
+ * Whether a key event happens while the user types: in a field that takes text, a select or editable content, or in a
5
+ * custom element (a catalogue's control, a plugin's panel), whose keys are its own whatever it draws. A toolbar's segment
6
+ * (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
4
7
  *
5
- * @remarks
6
- * The keys work while the shell has the focus; a frame keeps its own keys, so a story's keyboard behaviour is never
7
- * taken over. Pure, apart from reading the event's target.
8
- *
9
- * @module
8
+ * @param target - the event's target.
10
9
  */
10
+ export declare const isTyping: (target: EventTarget | null) => boolean;
11
+ /** What a key without a modifier reads of its event. */
12
+ export type SingleKeyEvent = Pick<KeyboardEvent, "target"> & Partial<Pick<KeyboardEvent, "composedPath">>;
11
13
  /**
12
- * Whether a key event happens while the user types: in a field that takes text, a select or editable content. A
13
- * toolbar's segment (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
14
+ * Whether a key without a modifier is the shell's: the reader left them on and nothing is typed into. The whole path of
15
+ * the event is read: from inside a shadow root it names only the host, and a custom element keeps what is pressed in it.
14
16
  *
15
- * @param target - the event's target.
17
+ * @param event - the key's event.
16
18
  */
17
- export declare const isTyping: (target: EventTarget | null) => boolean;
19
+ export declare const isSingleKeyFree: (event: SingleKeyEvent) => boolean;
18
20
  /** The move a key asks for in the list of stories. */
19
21
  export type StoryStep = -1 | 1;
20
22
  /**
@@ -22,7 +24,7 @@ export type StoryStep = -1 | 1;
22
24
  *
23
25
  * @param event - the key, its modifiers and its target.
24
26
  */
25
- export declare const storyStep: (event: Pick<KeyboardEvent, "key" | "metaKey" | "ctrlKey" | "altKey" | "target">) => StoryStep | undefined;
27
+ export declare const storyStep: (event: Pick<KeyboardEvent, "key" | "metaKey" | "ctrlKey" | "altKey"> & SingleKeyEvent) => StoryStep | undefined;
26
28
  /**
27
29
  * The id a step leads to: the neighbour of the current story, or the first (or last) story from a page that is not
28
30
  * a story's; none past either end.
@@ -1,34 +1,49 @@
1
1
  /**
2
- * The shell's keys: `/` goes to the search, `[` and `]` open the previous and the next story in the sidebar's order.
3
- * A key typed into a field, or with a modifier, is the field's or the browser's.
2
+ * The shell's keys: `/` goes to the search, `[` and `]` open the previous and the next story in the sidebar's order,
3
+ * `?` lists them. A key typed into a field or a custom element, or with a modifier, is theirs or the browser's; a reader
4
+ * can turn every key without a modifier off.
4
5
  *
5
6
  * @remarks
6
7
  * The keys work while the shell has the focus; a frame keeps its own keys, so a story's keyboard behaviour is never
7
- * taken over. Pure, apart from reading the event's target.
8
+ * taken over. Pure, apart from reading the event's target and the reader's choice.
8
9
  *
9
10
  * @module
10
11
  */
12
+ import { readStored } from "./useStored.js";
13
+ /** Where this browser keeps the reader's choice: a person's habit, the same in every catalogue of an origin. */
14
+ export const SINGLE_KEYS_STORED = "forgebook-single-keys";
15
+ /** Whether the reader left the keys without a modifier on, as they are unless turned off. */
16
+ const areSingleKeysOn = () => readStored(SINGLE_KEYS_STORED) !== "off";
11
17
  /** The inputs that take no text: a key pressed on one is the page's, not the field's. */
12
18
  const NOT_TEXT_INPUTS = ["checkbox", "radio", "button", "submit", "reset", "range", "color", "file"];
13
19
  /**
14
- * Whether a key event happens while the user types: in a field that takes text, a select or editable content. A
15
- * toolbar's segment (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
20
+ * Whether a key event happens while the user types: in a field that takes text, a select or editable content, or in a
21
+ * custom element (a catalogue's control, a plugin's panel), whose keys are its own whatever it draws. A toolbar's segment
22
+ * (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
16
23
  *
17
24
  * @param target - the event's target.
18
25
  */
19
26
  export const isTyping = (target) => typeof HTMLElement !== "undefined" &&
20
27
  target instanceof HTMLElement &&
21
28
  (target.isContentEditable ||
29
+ target.localName.includes("-") ||
22
30
  (target instanceof HTMLInputElement && !NOT_TEXT_INPUTS.includes(target.type)) ||
23
31
  target instanceof HTMLTextAreaElement ||
24
32
  target instanceof HTMLSelectElement);
33
+ /**
34
+ * Whether a key without a modifier is the shell's: the reader left them on and nothing is typed into. The whole path of
35
+ * the event is read: from inside a shadow root it names only the host, and a custom element keeps what is pressed in it.
36
+ *
37
+ * @param event - the key's event.
38
+ */
39
+ export const isSingleKeyFree = (event) => areSingleKeysOn() && !(event.composedPath?.() ?? [event.target]).some(isTyping);
25
40
  /**
26
41
  * The step a key asks for: `[` the previous story, `]` the next; none for any other key or one with a modifier.
27
42
  *
28
43
  * @param event - the key, its modifiers and its target.
29
44
  */
30
45
  export const storyStep = (event) => {
31
- if (event.metaKey || event.ctrlKey || event.altKey || isTyping(event.target))
46
+ if (event.metaKey || event.ctrlKey || event.altKey || !isSingleKeyFree(event))
32
47
  return undefined;
33
48
  if (event.key === "[")
34
49
  return -1;
@@ -1,6 +1,17 @@
1
1
  /** The later parts' texts, as shown: Forgebook's, with the catalogue's replacements. */
2
2
  export declare const LATER_STRINGS: {
3
+ docsNav: string;
4
+ aboutControl: (control: string) => string;
5
+ signatureParameter: string;
6
+ signatureReturns: string;
7
+ signatureNone: string;
8
+ apiType: string;
9
+ apiWhat: string;
3
10
  audienceError: string;
11
+ controlMenu: (label: string) => string;
12
+ unpinControl: string;
13
+ hideInView: string;
14
+ showInView: string;
4
15
  controlKey: (control: string, key: string | undefined) => string;
5
16
  changeKey: string;
6
17
  pressAKey: string;
@@ -36,6 +47,14 @@ export declare const LATER_STRINGS: {
36
47
  playTitle: string;
37
48
  playTime: (ms: number) => string;
38
49
  playAgain: string;
50
+ playRun: string;
51
+ playOnOpen: string;
52
+ playOff: string;
53
+ playStepThrough: string;
54
+ playNext: string;
55
+ playContinue: string;
56
+ playPaused: (action: string) => string;
57
+ playActionsNote: string;
39
58
  playNoSteps: string;
40
59
  codeFromArgs: string;
41
60
  codeRender: string;
@@ -59,6 +78,13 @@ export declare const LATER_STRINGS: {
59
78
  apiMember: string;
60
79
  memberCount: (count: number) => string;
61
80
  membersOf: (type: string) => string;
81
+ propOnlyWhen: (prop: string, values: readonly string[], orOmitted: boolean) => string;
82
+ propGeneric: (parameter: string, type: string, shownAs: "constraint" | "default" | "unknown") => string;
83
+ propUnresolved: (name: string) => string;
84
+ propAny: string;
85
+ propsUntyped: string;
86
+ propsNoSignature: string;
87
+ propsOutsidePackage: (count: number) => string;
62
88
  showCode: string;
63
89
  hideCode: string;
64
90
  openStory: string;
@@ -79,6 +105,9 @@ export declare const LATER_STRINGS: {
79
105
  droppedArgReasons: {
80
106
  undeclared: string;
81
107
  type: string;
108
+ unreadable: string;
109
+ markup: string;
110
+ control: string;
82
111
  };
83
112
  removeDroppedArgs: string;
84
113
  events: string;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * The texts of the shell's parts that load after the first screen, but for the home and the docs pages
3
- * (`pageStrings.ts`): a component's page, the panel's tabs but Props, the View menu's panel, the embed panel and page,
3
+ * (`pageStrings.ts`): a component's page, the panel's tabs but Props, the View menu's panel, a pinned control's menu, the embed panel and page,
4
4
  * the comparison, the story clock's bar, the plugins' hosts and the note on args a link dropped. They load with the
5
5
  * first of those parts, so a first load carries none of them.
6
6
  *
@@ -14,7 +14,18 @@
14
14
  import { lateStrings } from "./strings.js";
15
15
  /** The later parts' texts, as shown: Forgebook's, with the catalogue's replacements. */
16
16
  export const LATER_STRINGS = lateStrings({
17
+ docsNav: "Docs",
18
+ aboutControl: (control) => `About ${control}`,
19
+ signatureParameter: "Parameter",
20
+ signatureReturns: "Returns",
21
+ signatureNone: "It takes no parameters.",
22
+ apiType: "Type",
23
+ apiWhat: "What it does",
17
24
  audienceError: "This part of the page could not be loaded",
25
+ controlMenu: (label) => `${label} on the toolbar`,
26
+ unpinControl: "Remove from the toolbar",
27
+ hideInView: "Hide in View",
28
+ showInView: "Show in View",
18
29
  controlKey: (control, key) => key === undefined ? `${control}: no key` : `${control}: key ${key.toUpperCase()}`,
19
30
  changeKey: "Change the key: press it, then the new key; Backspace takes it away",
20
31
  pressAKey: "Press a key",
@@ -50,6 +61,14 @@ export const LATER_STRINGS = lateStrings({
50
61
  playTitle: "Play function",
51
62
  playTime: (ms) => `${ms} ms`,
52
63
  playAgain: "Run again",
64
+ playRun: "Run",
65
+ playOnOpen: "Play stories when they open",
66
+ playOff: "This story has a play function. It has not run: run it, or have stories play when they open.",
67
+ playStepThrough: "Step through",
68
+ playNext: "Next",
69
+ playContinue: "Continue",
70
+ playPaused: (action) => `Next: ${action}`,
71
+ playActionsNote: "The log and the stepping follow the canvas and userEvent of the play's context; what a play imports itself runs unrecorded.",
53
72
  playNoSteps: "The play names no steps: wrap its parts in step(label, run) to see them here.",
54
73
  codeFromArgs: "from the args",
55
74
  codeRender: "the story's render",
@@ -73,6 +92,20 @@ export const LATER_STRINGS = lateStrings({
73
92
  apiMember: "Member",
74
93
  memberCount: (count) => `${count} ${count === 1 ? "member" : "members"}`,
75
94
  membersOf: (type) => `Members of ${type}`,
95
+ // the names and types below come written as code spans (`codeSpans.ts`), since a type may hold backticks
96
+ propOnlyWhen: (prop, values, orOmitted) => {
97
+ if (values.length === 0)
98
+ return `Only when ${prop} is left out.`;
99
+ return `Only when ${prop} is ${values.join(" or ")}${orOmitted ? ", or left out" : ""}.`;
100
+ },
101
+ propGeneric: (parameter, type, shownAs) => shownAs === "unknown"
102
+ ? `${parameter} is generic, with no constraint: shown as \`unknown\`.`
103
+ : `${parameter} is generic: shown as its ${shownAs}, ${type}.`,
104
+ propUnresolved: (name) => `${name} cannot be found, so this type is read as \`any\`.`,
105
+ propAny: "Typed `any`: nothing is known of its values.",
106
+ propsUntyped: "Its props are typed `any`, so none can be listed.",
107
+ propsNoSignature: "Its type cannot be called with props, so none can be listed.",
108
+ propsOutsidePackage: (count) => `${count === 1 ? "Its one prop comes" : `All ${count} of its props come`} from outside its package (an element's attributes), which the reference leaves out.`,
76
109
  showCode: "Show code",
77
110
  hideCode: "Hide code",
78
111
  openStory: "Open the story",
@@ -86,11 +119,17 @@ export const LATER_STRINGS = lateStrings({
86
119
  fillPage: "Fill the page",
87
120
  fillPageNamed: (name) => `Fill the page with ${name}`,
88
121
  backToPlace: "Back to its place",
89
- backToPlaceNamed: (name) => `Put ${name} back in its place`,
122
+ backToPlaceNamed: (name) => `Back to its place: ${name}`,
90
123
  examples: "Examples",
91
124
  pageError: "The component's page could not be read",
92
125
  droppedArgs: "The link sets values this story does not take; they were left out:",
93
- droppedArgReasons: { undeclared: "not one of its props", type: "not of the prop's type" },
126
+ droppedArgReasons: {
127
+ undeclared: "not one of its props",
128
+ type: "not of the prop's type",
129
+ unreadable: "its value could not be read",
130
+ markup: "this framework writes it into HTML, so a link may give only plain text",
131
+ control: "its control refuses it, or could not be loaded"
132
+ },
94
133
  removeDroppedArgs: "Remove them from the address",
95
134
  events: "Events",
96
135
  calls: "Calls",
@@ -10,6 +10,7 @@ import { createRoot } from "react-dom/client";
10
10
  import { isEmbedAddress } from "../embed.js";
11
11
  import { framePageAddress, pageOrigins, SAME_ORIGIN } from "../frameOrigins.js";
12
12
  import { CodeWriterContext } from "./codeWriter.js";
13
+ import { HAS_REFS, setShellRefs } from "./composition.js";
13
14
  import { FORGEBOOK_MARK_URL } from "./forgebookMark.js";
14
15
  import { setFramesOrigin } from "./framesOrigin.js";
15
16
  import { Shell } from "./Shell.js";
@@ -57,6 +58,8 @@ export const mountShell = (container, config) => {
57
58
  // set before anything renders, the embed included: its story's frame runs on the frames' origin too
58
59
  const origins = pageOrigins(frames, window.location, "catalogue");
59
60
  setFramesOrigin(origins.frames);
61
+ if (HAS_REFS)
62
+ setShellRefs(config.refs);
60
63
  const shell = {
61
64
  ...page,
62
65
  frameUrl: framePageAddress(page.frameUrl, origins.frames, window.location.pathname)
@@ -1,6 +1,10 @@
1
1
  /** The texts of the home and the docs pages, the catalogue's replacements applied. */
2
2
  export declare const PAGE_STRINGS: {
3
3
  homeEmpty: string;
4
+ homeNoStoryTitle: string;
5
+ homeNoStoryLead: string;
6
+ homeNoStoryHelp: string;
7
+ homeNoStoryCommand: string;
4
8
  homeSummary: (components: number, sources: number) => string;
5
9
  homeIntroError: string;
6
10
  recentlyOpened: string;
@@ -9,6 +9,10 @@ import { lateStrings } from "./strings.js";
9
9
  /** The texts of the home and the docs pages, the catalogue's replacements applied. */
10
10
  export const PAGE_STRINGS = lateStrings({
11
11
  homeEmpty: "No stories yet: a source with story files shows its families here.",
12
+ homeNoStoryTitle: "No stories yet",
13
+ homeNoStoryLead: "This catalogue lists the story files these patterns match, and none is there yet:",
14
+ homeNoStoryHelp: "Save a file one of them matches, and it shows here. To have one written from a component, run:",
15
+ homeNoStoryCommand: "npx forgebook new src/Button.tsx",
12
16
  homeSummary: (components, sources) => `${components} ${components === 1 ? "component" : "components"} in ${sources} ${sources === 1 ? "library" : "libraries"}.`,
13
17
  homeIntroError: "The library's introduction could not be read",
14
18
  recentlyOpened: "Recently opened",
@@ -0,0 +1,18 @@
1
+ /**
2
+ * What a story's tags draw on a component's page (its status, a story's own), loaded from the page's own chunk with the
3
+ * same module as the sidebar's (`TagViews.tsx`).
4
+ *
5
+ * @remarks
6
+ * Kept apart from `tagView.tsx`, which the first load carries: imported by the pages that load later too, that module
7
+ * would be split out of the first load's chunk into one of its own, a request and some bytes more on every first load.
8
+ *
9
+ * @module
10
+ */
11
+ import type { ReactNode } from "react";
12
+ import type { TagViewProps } from "./TagViews.tsx";
13
+ /**
14
+ * What the tags draw in one place of a component's page, once its code is there.
15
+ *
16
+ * @param props - the place, and what it reads.
17
+ */
18
+ export declare const PageTagView: (props: TagViewProps) => ReactNode;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LazyView, lazyModule } from "./lazyModule.js";
3
+ /** What the tags draw on the page, loaded on first use. */
4
+ const PAGE_TAG_VIEW = lazyModule(() => import("./TagViews.js").then((module) => module.TagView));
5
+ /**
6
+ * What the tags draw in one place of a component's page, once its code is there.
7
+ *
8
+ * @param props - the place, and what it reads.
9
+ */
10
+ export const PageTagView = (props) => (_jsx(LazyView, { module: PAGE_TAG_VIEW, props: props, loading: null, failed: () => null }));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Keeps a reader's play switch for their next visits, on what a browser keeps for a catalogue. Loaded with the parts that
3
+ * show the switch; the shell reads the choice back with its settings (`catalogueContext.ts`).
4
+ *
5
+ * @module
6
+ */
7
+ import type { CatalogueSettings, PlaySwitch } from "../catalogue.ts";
8
+ /**
9
+ * Keeps a reader's choice.
10
+ *
11
+ * @param catalogue - the catalogue, whose id the choice is kept under.
12
+ * @param play - the choice.
13
+ */
14
+ export declare const rememberPlay: (catalogue: Pick<CatalogueSettings, "id">, play: PlaySwitch) => void;
@@ -0,0 +1,8 @@
1
+ import { writeStored } from "./useStored.js";
2
+ /**
3
+ * Keeps a reader's choice.
4
+ *
5
+ * @param catalogue - the catalogue, whose id the choice is kept under.
6
+ * @param play - the choice.
7
+ */
8
+ export const rememberPlay = (catalogue, play) => writeStored(`${catalogue.id}:play`, play);
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The sentences the API reference writes under a prop, and under a component that lists none: when a variant's prop can
3
+ * be passed, why a type is not the one its source writes, why no props are listed. Used by `ApiReference.tsx`.
4
+ *
5
+ * @remarks
6
+ * The shell checks these fields loosely when the docs arrive, so a reason it does not know is left out here rather
7
+ * than drawn wrong.
8
+ *
9
+ * @module
10
+ */
11
+ import type { ComponentDocs, PropDocs } from "../componentDocs.ts";
12
+ /**
13
+ * A prop's notes, in the order they are drawn: when it can be passed, then each note on its type.
14
+ *
15
+ * @param prop - the prop's condition and notes.
16
+ */
17
+ export declare const propNoteTexts: (prop: Pick<PropDocs, "onlyWhen" | "notes">) => string[];
18
+ /**
19
+ * Why a component lists no props, or none when its props are read.
20
+ *
21
+ * @param docs - the component's docs.
22
+ */
23
+ export declare const propsNoteText: (docs: Pick<ComponentDocs, "propsNote">) => string | undefined;
@@ -0,0 +1,37 @@
1
+ import { codeSpan } from "./codeSpans.js";
2
+ import { LATER_STRINGS } from "./laterStrings.js";
3
+ /**
4
+ * A prop's notes, in the order they are drawn: when it can be passed, then each note on its type.
5
+ *
6
+ * @param prop - the prop's condition and notes.
7
+ */
8
+ export const propNoteTexts = (prop) => {
9
+ const { onlyWhen } = prop;
10
+ const condition = onlyWhen === undefined
11
+ ? []
12
+ : [
13
+ LATER_STRINGS.propOnlyWhen(codeSpan(onlyWhen.prop), onlyWhen.values.map((value) => codeSpan(typeof value === "string" ? JSON.stringify(value) : String(value))), onlyWhen.orOmitted === true)
14
+ ];
15
+ const types = (prop.notes ?? []).flatMap((note) => {
16
+ if (note.reason === "generic") {
17
+ return [LATER_STRINGS.propGeneric(codeSpan(note.parameter), codeSpan(note.type), note.shownAs)];
18
+ }
19
+ if (note.reason === "unresolved")
20
+ return [LATER_STRINGS.propUnresolved(codeSpan(note.name))];
21
+ return note.reason === "any" ? [LATER_STRINGS.propAny] : [];
22
+ });
23
+ return [...condition, ...types];
24
+ };
25
+ /**
26
+ * Why a component lists no props, or none when its props are read.
27
+ *
28
+ * @param docs - the component's docs.
29
+ */
30
+ export const propsNoteText = (docs) => {
31
+ const note = docs.propsNote;
32
+ if (note?.reason === "untyped")
33
+ return LATER_STRINGS.propsUntyped;
34
+ if (note?.reason === "no-signature")
35
+ return LATER_STRINGS.propsNoSignature;
36
+ return note?.reason === "outside-package" ? LATER_STRINGS.propsOutsidePackage(note.count) : undefined;
37
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A composed catalogue's index, fetched once per page when its section is first opened or one of its stories is shown.
3
+ *
4
+ * @remarks
5
+ * Read with no credentials: the index is public, and a cookie of the other host has nothing to do with it. A failure is
6
+ * kept too, so a section opened again says why without asking again; the page's next load tries once more.
7
+ *
8
+ * @module
9
+ */
10
+ import { type CatalogueRef, type RefIndex } from "../catalogueRefs.ts";
11
+ /**
12
+ * A composed catalogue's index.
13
+ *
14
+ * @param ref - the composed catalogue.
15
+ * @returns the index; rejected with the reason it could not be read.
16
+ */
17
+ export declare const loadRefIndex: (ref: CatalogueRef) => Promise<RefIndex>;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * A composed catalogue's index, fetched once per page when its section is first opened or one of its stories is shown.
3
+ *
4
+ * @remarks
5
+ * Read with no credentials: the index is public, and a cookie of the other host has nothing to do with it. A failure is
6
+ * kept too, so a section opened again says why without asking again; the page's next load tries once more.
7
+ *
8
+ * @module
9
+ */
10
+ import { refIndexAddress, refIndexOf } from "../catalogueRefs.js";
11
+ import { REF_STRINGS } from "./refStrings.js";
12
+ /** Each composed catalogue's index, by its address, as fetched once. */
13
+ const loads = new Map();
14
+ /** Fetches and reads an index. */
15
+ const fetchIndex = async (address) => {
16
+ const answer = await fetch(address, { credentials: "omit" });
17
+ if (!answer.ok)
18
+ throw new Error(`${answer.status} ${answer.statusText}`.trim());
19
+ const index = refIndexOf(await answer.json());
20
+ if (index === undefined)
21
+ throw new Error(REF_STRINGS.notIndex);
22
+ return index;
23
+ };
24
+ /**
25
+ * A composed catalogue's index.
26
+ *
27
+ * @param ref - the composed catalogue.
28
+ * @returns the index; rejected with the reason it could not be read.
29
+ */
30
+ export const loadRefIndex = (ref) => {
31
+ const address = refIndexAddress(ref);
32
+ const known = loads.get(address);
33
+ if (known !== undefined)
34
+ return known;
35
+ const load = fetchIndex(address);
36
+ loads.set(address, load);
37
+ return load;
38
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * What the shell draws of the composed catalogues (`refs`): their sidebar sections and the page of one of their stories.
3
+ * The generated page imports it (`forgebook/shell/refs`) only for a catalogue that composes one, so the others' first
4
+ * load carries not even the way to it.
5
+ *
6
+ * @remarks
7
+ * One module for both places, so a catalogue that composes others loads one chunk for them, and the shell keeps one
8
+ * slot type: a part drawn with the place it is drawn in.
9
+ *
10
+ * @module
11
+ */
12
+ import type { ComponentType, ReactNode } from "react";
13
+ import type { CatalogueRef } from "../catalogueRefs.ts";
14
+ import { type RefStoryPageProps } from "./RefStoryPage.tsx";
15
+ import { type SidebarRefsProps } from "./SidebarRefs.tsx";
16
+ /** A part of the composed catalogues, with the place it is drawn in. */
17
+ export type RefPartProps = ({
18
+ readonly place: "sidebar";
19
+ } & SidebarRefsProps) | ({
20
+ readonly place: "page";
21
+ } & RefStoryPageProps);
22
+ /** The composed catalogues, as the generated page hands them to the shell. */
23
+ export type ShellRefs = {
24
+ /** The catalogues, in the configuration's order. */
25
+ readonly catalogues: readonly CatalogueRef[];
26
+ /** Loads what draws them (`RefPart`). */
27
+ readonly load: () => Promise<ComponentType<RefPartProps>>;
28
+ };
29
+ /**
30
+ * A part of the composed catalogues: the sidebar's sections, or a story's page.
31
+ *
32
+ * @param props - the place, and that part's props.
33
+ */
34
+ export declare const RefPart: (props: RefPartProps) => ReactNode;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RefStoryPage } from "./RefStoryPage.js";
3
+ import { SidebarRefs } from "./SidebarRefs.js";
4
+ /**
5
+ * A part of the composed catalogues: the sidebar's sections, or a story's page.
6
+ *
7
+ * @param props - the place, and that part's props.
8
+ */
9
+ export const RefPart = (props) => props.place === "sidebar" ? _jsx(SidebarRefs, { ...props }) : _jsx(RefStoryPage, { ...props });
@@ -0,0 +1,21 @@
1
+ @layer catalogue {
2
+ .forgebook-ref-story {
3
+ overflow: auto;
4
+ }
5
+ .forgebook-ref-story__note {
6
+ margin: 0.25rem 0 0;
7
+ font: var(--forgebook-text-caption);
8
+ color: var(--forgebook-text-secondary);
9
+ }
10
+ .forgebook-ref-story__stage {
11
+ padding: 1rem;
12
+ }
13
+ .forgebook-ref-story__frame {
14
+ display: block;
15
+ width: 100%;
16
+ border: 0;
17
+ border-radius: var(--forgebook-radius-card);
18
+ box-shadow: 0 0 0 1px var(--forgebook-card-edge), 0 1px 3px var(--forgebook-shadow-soft);
19
+ background: var(--forgebook-surface);
20
+ }
21
+ }
@@ -0,0 +1,13 @@
1
+ /** The composed catalogues' texts, as shown: Forgebook's, with the catalogue's replacements. */
2
+ export declare const REF_STRINGS: {
3
+ section: (title: string) => string;
4
+ loading: string;
5
+ empty: string;
6
+ unreadable: (title: string, reason: string) => string;
7
+ notIndex: string;
8
+ storyTitle: (story: string, catalogue: string) => string;
9
+ openThere: (catalogue: string) => string;
10
+ readOnly: string;
11
+ onFramesOrigin: (title: string) => string;
12
+ unknownRef: (id: string) => string;
13
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The words of the composed catalogues (`refs`): their sidebar section and their story's page, loaded with them, so a
3
+ * catalogue that composes none carries none. A catalogue replaces them as any other text of the shell
4
+ * (`strings: { "refs.loading": "Caricamento…" }`).
5
+ *
6
+ * @module
7
+ */
8
+ import { textsOfGroup } from "./strings.js";
9
+ /** The composed catalogues' texts, as shown: Forgebook's, with the catalogue's replacements. */
10
+ export const REF_STRINGS = textsOfGroup("refs", {
11
+ section: (title) => `${title}, another catalogue`,
12
+ loading: "Loading its stories…",
13
+ empty: "It lists no story",
14
+ unreadable: (title, reason) => `${title} could not be read: ${reason}. It is built with forgebook build --agent-index, and its host lets this catalogue fetch its index (CORS).`,
15
+ notIndex: "its forgebook-agent.json is not an index this version reads",
16
+ storyTitle: (story, catalogue) => `${story}, from ${catalogue}`,
17
+ openThere: (catalogue) => `Open in ${catalogue}`,
18
+ readOnly: "Shown from another catalogue, read-only: its controls and panel are in its own page.",
19
+ onFramesOrigin: (title) => `${title} is served on the origin this catalogue's stories run on, where it would share their storage: serve it elsewhere.`,
20
+ unknownRef: (id) => `No composed catalogue "${id}" in this configuration: it may have been removed. Pick one in the sidebar.`
21
+ });