forgebook 0.0.0-stage → 0.1.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 (493) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -2
  3. package/dist/bin/forgebook/catalogueVite.d.ts +16 -0
  4. package/dist/bin/forgebook/catalogueVite.d.ts.map +1 -0
  5. package/dist/bin/forgebook/catalogueVite.js +15 -0
  6. package/dist/bin/forgebook/catalogueVite.js.map +1 -0
  7. package/dist/bin/forgebook/forgebook.d.mts +3 -0
  8. package/dist/bin/forgebook/forgebook.d.mts.map +1 -0
  9. package/dist/bin/forgebook/forgebook.mjs +93 -0
  10. package/dist/bin/forgebook/forgebook.mjs.map +1 -0
  11. package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts +90 -0
  12. package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts.map +1 -0
  13. package/dist/bin/forgebook-docs/catalogueDocs.types.js +1 -0
  14. package/dist/bin/forgebook-docs/catalogueDocs.types.js.map +1 -0
  15. package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts +9 -0
  16. package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts.map +1 -0
  17. package/dist/bin/forgebook-docs/catalogueMarkdown.js +132 -0
  18. package/dist/bin/forgebook-docs/catalogueMarkdown.js.map +1 -0
  19. package/dist/bin/forgebook-docs/collectDocs.d.ts +17 -0
  20. package/dist/bin/forgebook-docs/collectDocs.d.ts.map +1 -0
  21. package/dist/bin/forgebook-docs/collectDocs.js +115 -0
  22. package/dist/bin/forgebook-docs/collectDocs.js.map +1 -0
  23. package/dist/bin/forgebook-docs/forgebook-docs.d.mts +3 -0
  24. package/dist/bin/forgebook-docs/forgebook-docs.d.mts.map +1 -0
  25. package/dist/bin/forgebook-docs/forgebook-docs.mjs +115 -0
  26. package/dist/bin/forgebook-docs/forgebook-docs.mjs.map +1 -0
  27. package/dist/bin/forgebook-docs/moduleDocs.d.ts +9 -0
  28. package/dist/bin/forgebook-docs/moduleDocs.d.ts.map +1 -0
  29. package/dist/bin/forgebook-docs/moduleDocs.js +62 -0
  30. package/dist/bin/forgebook-docs/moduleDocs.js.map +1 -0
  31. package/dist/bin/forgebook-docs/sassDocs.d.ts +20 -0
  32. package/dist/bin/forgebook-docs/sassDocs.d.ts.map +1 -0
  33. package/dist/bin/forgebook-docs/sassDocs.js +77 -0
  34. package/dist/bin/forgebook-docs/sassDocs.js.map +1 -0
  35. package/dist/bin/forgebook-texts/forgebook-texts.d.mts +3 -0
  36. package/dist/bin/forgebook-texts/forgebook-texts.d.mts.map +1 -0
  37. package/dist/bin/forgebook-texts/forgebook-texts.mjs +94 -0
  38. package/dist/bin/forgebook-texts/forgebook-texts.mjs.map +1 -0
  39. package/dist/bin/forgebook-texts/storyTextsReport.d.ts +26 -0
  40. package/dist/bin/forgebook-texts/storyTextsReport.d.ts.map +1 -0
  41. package/dist/bin/forgebook-texts/storyTextsReport.js +35 -0
  42. package/dist/bin/forgebook-texts/storyTextsReport.js.map +1 -0
  43. package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts +25 -0
  44. package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts.map +1 -0
  45. package/dist/bin/forgebook-texts/storyTextsReport.types.js +7 -0
  46. package/dist/bin/forgebook-texts/storyTextsReport.types.js.map +1 -0
  47. package/dist/src/a11y.d.ts +28 -0
  48. package/dist/src/a11y.d.ts.map +1 -0
  49. package/dist/src/a11y.js +29 -0
  50. package/dist/src/a11y.js.map +1 -0
  51. package/dist/src/argTypes.d.ts +114 -0
  52. package/dist/src/argTypes.d.ts.map +1 -0
  53. package/dist/src/argTypes.js +254 -0
  54. package/dist/src/argTypes.js.map +1 -0
  55. package/dist/src/backdrops.d.ts +88 -0
  56. package/dist/src/backdrops.d.ts.map +1 -0
  57. package/dist/src/backdrops.js +202 -0
  58. package/dist/src/backdrops.js.map +1 -0
  59. package/dist/src/catalogue.d.ts +120 -0
  60. package/dist/src/catalogue.d.ts.map +1 -0
  61. package/dist/src/catalogue.js +80 -0
  62. package/dist/src/catalogue.js.map +1 -0
  63. package/dist/src/componentDocs.d.ts +98 -0
  64. package/dist/src/componentDocs.d.ts.map +1 -0
  65. package/dist/src/componentDocs.js +47 -0
  66. package/dist/src/componentDocs.js.map +1 -0
  67. package/dist/src/frame/checkStory.d.ts +20 -0
  68. package/dist/src/frame/checkStory.d.ts.map +1 -0
  69. package/dist/src/frame/checkStory.js +31 -0
  70. package/dist/src/frame/checkStory.js.map +1 -0
  71. package/dist/src/frame/frame.css +51 -0
  72. package/dist/src/frame/frameClock.d.ts +53 -0
  73. package/dist/src/frame/frameClock.d.ts.map +1 -0
  74. package/dist/src/frame/frameClock.js +80 -0
  75. package/dist/src/frame/frameClock.js.map +1 -0
  76. package/dist/src/frame/frameStatus.d.ts +8 -0
  77. package/dist/src/frame/frameStatus.d.ts.map +1 -0
  78. package/dist/src/frame/frameStatus.js +8 -0
  79. package/dist/src/frame/frameStatus.js.map +1 -0
  80. package/dist/src/frame/frameView.d.ts +33 -0
  81. package/dist/src/frame/frameView.d.ts.map +1 -0
  82. package/dist/src/frame/frameView.js +134 -0
  83. package/dist/src/frame/frameView.js.map +1 -0
  84. package/dist/src/frame/matrixLayout.d.ts +36 -0
  85. package/dist/src/frame/matrixLayout.d.ts.map +1 -0
  86. package/dist/src/frame/matrixLayout.js +87 -0
  87. package/dist/src/frame/matrixLayout.js.map +1 -0
  88. package/dist/src/frame/measureTools.d.ts +24 -0
  89. package/dist/src/frame/measureTools.d.ts.map +1 -0
  90. package/dist/src/frame/measureTools.js +141 -0
  91. package/dist/src/frame/measureTools.js.map +1 -0
  92. package/dist/src/frame/mountFrame.d.ts +47 -0
  93. package/dist/src/frame/mountFrame.d.ts.map +1 -0
  94. package/dist/src/frame/mountFrame.js +229 -0
  95. package/dist/src/frame/mountFrame.js.map +1 -0
  96. package/dist/src/frame/playStory.d.ts +40 -0
  97. package/dist/src/frame/playStory.d.ts.map +1 -0
  98. package/dist/src/frame/playStory.js +55 -0
  99. package/dist/src/frame/playStory.js.map +1 -0
  100. package/dist/src/frame/renderer.d.ts +85 -0
  101. package/dist/src/frame/renderer.d.ts.map +1 -0
  102. package/dist/src/frame/renderer.js +18 -0
  103. package/dist/src/frame/renderer.js.map +1 -0
  104. package/dist/src/frame/settle.d.ts +24 -0
  105. package/dist/src/frame/settle.d.ts.map +1 -0
  106. package/dist/src/frame/settle.js +25 -0
  107. package/dist/src/frame/settle.js.map +1 -0
  108. package/dist/src/frame/staleModule.d.ts +40 -0
  109. package/dist/src/frame/staleModule.d.ts.map +1 -0
  110. package/dist/src/frame/staleModule.js +74 -0
  111. package/dist/src/frame/staleModule.js.map +1 -0
  112. package/dist/src/frame/storyCanvas.d.ts +21 -0
  113. package/dist/src/frame/storyCanvas.d.ts.map +1 -0
  114. package/dist/src/frame/storyCanvas.js +30 -0
  115. package/dist/src/frame/storyCanvas.js.map +1 -0
  116. package/dist/src/frame/storyHooks.d.ts +31 -0
  117. package/dist/src/frame/storyHooks.d.ts.map +1 -0
  118. package/dist/src/frame/storyHooks.js +59 -0
  119. package/dist/src/frame/storyHooks.js.map +1 -0
  120. package/dist/src/frame/storyModule.d.ts +104 -0
  121. package/dist/src/frame/storyModule.d.ts.map +1 -0
  122. package/dist/src/frame/storyModule.js +205 -0
  123. package/dist/src/frame/storyModule.js.map +1 -0
  124. package/dist/src/frame/storyRun.d.ts +96 -0
  125. package/dist/src/frame/storyRun.d.ts.map +1 -0
  126. package/dist/src/frame/storyRun.js +318 -0
  127. package/dist/src/frame/storyRun.js.map +1 -0
  128. package/dist/src/languages.d.ts +15 -0
  129. package/dist/src/languages.d.ts.map +1 -0
  130. package/dist/src/languages.js +8 -0
  131. package/dist/src/languages.js.map +1 -0
  132. package/dist/src/matrix.d.ts +56 -0
  133. package/dist/src/matrix.d.ts.map +1 -0
  134. package/dist/src/matrix.js +61 -0
  135. package/dist/src/matrix.js.map +1 -0
  136. package/dist/src/messages.d.ts +203 -0
  137. package/dist/src/messages.d.ts.map +1 -0
  138. package/dist/src/messages.js +193 -0
  139. package/dist/src/messages.js.map +1 -0
  140. package/dist/src/namedValues.d.ts +38 -0
  141. package/dist/src/namedValues.d.ts.map +1 -0
  142. package/dist/src/namedValues.js +48 -0
  143. package/dist/src/namedValues.js.map +1 -0
  144. package/dist/src/pageConfig.d.ts +23 -0
  145. package/dist/src/pageConfig.d.ts.map +1 -0
  146. package/dist/src/pageConfig.js +1 -0
  147. package/dist/src/pageConfig.js.map +1 -0
  148. package/dist/src/playTrace.d.ts +41 -0
  149. package/dist/src/playTrace.d.ts.map +1 -0
  150. package/dist/src/playTrace.js +35 -0
  151. package/dist/src/playTrace.js.map +1 -0
  152. package/dist/src/shell/A11yTab.d.ts +44 -0
  153. package/dist/src/shell/A11yTab.d.ts.map +1 -0
  154. package/dist/src/shell/A11yTab.js +30 -0
  155. package/dist/src/shell/A11yTab.js.map +1 -0
  156. package/dist/src/shell/ApiReference.d.ts +18 -0
  157. package/dist/src/shell/ApiReference.d.ts.map +1 -0
  158. package/dist/src/shell/ApiReference.js +41 -0
  159. package/dist/src/shell/ApiReference.js.map +1 -0
  160. package/dist/src/shell/ClockControls.d.ts +43 -0
  161. package/dist/src/shell/ClockControls.d.ts.map +1 -0
  162. package/dist/src/shell/ClockControls.js +53 -0
  163. package/dist/src/shell/ClockControls.js.map +1 -0
  164. package/dist/src/shell/Code.d.ts +16 -0
  165. package/dist/src/shell/Code.d.ts.map +1 -0
  166. package/dist/src/shell/Code.js +9 -0
  167. package/dist/src/shell/Code.js.map +1 -0
  168. package/dist/src/shell/CodeTab.d.ts +17 -0
  169. package/dist/src/shell/CodeTab.d.ts.map +1 -0
  170. package/dist/src/shell/CodeTab.js +17 -0
  171. package/dist/src/shell/CodeTab.js.map +1 -0
  172. package/dist/src/shell/CodeText.d.ts +16 -0
  173. package/dist/src/shell/CodeText.d.ts.map +1 -0
  174. package/dist/src/shell/CodeText.js +10 -0
  175. package/dist/src/shell/CodeText.js.map +1 -0
  176. package/dist/src/shell/ComponentPage.d.ts +38 -0
  177. package/dist/src/shell/ComponentPage.d.ts.map +1 -0
  178. package/dist/src/shell/ComponentPage.js +146 -0
  179. package/dist/src/shell/ComponentPage.js.map +1 -0
  180. package/dist/src/shell/Dock.d.ts +42 -0
  181. package/dist/src/shell/Dock.d.ts.map +1 -0
  182. package/dist/src/shell/Dock.js +90 -0
  183. package/dist/src/shell/Dock.js.map +1 -0
  184. package/dist/src/shell/EventsTab.d.ts +25 -0
  185. package/dist/src/shell/EventsTab.d.ts.map +1 -0
  186. package/dist/src/shell/EventsTab.js +26 -0
  187. package/dist/src/shell/EventsTab.js.map +1 -0
  188. package/dist/src/shell/FrameView.d.ts +49 -0
  189. package/dist/src/shell/FrameView.d.ts.map +1 -0
  190. package/dist/src/shell/FrameView.js +29 -0
  191. package/dist/src/shell/FrameView.js.map +1 -0
  192. package/dist/src/shell/HomePage.d.ts +39 -0
  193. package/dist/src/shell/HomePage.d.ts.map +1 -0
  194. package/dist/src/shell/HomePage.js +85 -0
  195. package/dist/src/shell/HomePage.js.map +1 -0
  196. package/dist/src/shell/InteractionsTab.d.ts +28 -0
  197. package/dist/src/shell/InteractionsTab.d.ts.map +1 -0
  198. package/dist/src/shell/InteractionsTab.js +17 -0
  199. package/dist/src/shell/InteractionsTab.js.map +1 -0
  200. package/dist/src/shell/MatrixPicker.d.ts +24 -0
  201. package/dist/src/shell/MatrixPicker.d.ts.map +1 -0
  202. package/dist/src/shell/MatrixPicker.js +29 -0
  203. package/dist/src/shell/MatrixPicker.js.map +1 -0
  204. package/dist/src/shell/PackageHtml.d.ts +17 -0
  205. package/dist/src/shell/PackageHtml.d.ts.map +1 -0
  206. package/dist/src/shell/PackageHtml.js +13 -0
  207. package/dist/src/shell/PackageHtml.js.map +1 -0
  208. package/dist/src/shell/PartsTab.d.ts +23 -0
  209. package/dist/src/shell/PartsTab.d.ts.map +1 -0
  210. package/dist/src/shell/PartsTab.js +23 -0
  211. package/dist/src/shell/PartsTab.js.map +1 -0
  212. package/dist/src/shell/PropFields.d.ts +31 -0
  213. package/dist/src/shell/PropFields.d.ts.map +1 -0
  214. package/dist/src/shell/PropFields.js +81 -0
  215. package/dist/src/shell/PropFields.js.map +1 -0
  216. package/dist/src/shell/PropsTab.d.ts +45 -0
  217. package/dist/src/shell/PropsTab.d.ts.map +1 -0
  218. package/dist/src/shell/PropsTab.js +81 -0
  219. package/dist/src/shell/PropsTab.js.map +1 -0
  220. package/dist/src/shell/SchemeSwitches.d.ts +24 -0
  221. package/dist/src/shell/SchemeSwitches.d.ts.map +1 -0
  222. package/dist/src/shell/SchemeSwitches.js +36 -0
  223. package/dist/src/shell/SchemeSwitches.js.map +1 -0
  224. package/dist/src/shell/Segmented.d.ts +41 -0
  225. package/dist/src/shell/Segmented.d.ts.map +1 -0
  226. package/dist/src/shell/Segmented.js +19 -0
  227. package/dist/src/shell/Segmented.js.map +1 -0
  228. package/dist/src/shell/Shell.d.ts +49 -0
  229. package/dist/src/shell/Shell.d.ts.map +1 -0
  230. package/dist/src/shell/Shell.js +279 -0
  231. package/dist/src/shell/Shell.js.map +1 -0
  232. package/dist/src/shell/Sidebar.d.ts +52 -0
  233. package/dist/src/shell/Sidebar.d.ts.map +1 -0
  234. package/dist/src/shell/Sidebar.js +132 -0
  235. package/dist/src/shell/Sidebar.js.map +1 -0
  236. package/dist/src/shell/SidebarHandle.d.ts +29 -0
  237. package/dist/src/shell/SidebarHandle.d.ts.map +1 -0
  238. package/dist/src/shell/SidebarHandle.js +46 -0
  239. package/dist/src/shell/SidebarHandle.js.map +1 -0
  240. package/dist/src/shell/Stage.d.ts +68 -0
  241. package/dist/src/shell/Stage.d.ts.map +1 -0
  242. package/dist/src/shell/Stage.js +218 -0
  243. package/dist/src/shell/Stage.js.map +1 -0
  244. package/dist/src/shell/StageTools.d.ts +27 -0
  245. package/dist/src/shell/StageTools.d.ts.map +1 -0
  246. package/dist/src/shell/StageTools.js +34 -0
  247. package/dist/src/shell/StageTools.js.map +1 -0
  248. package/dist/src/shell/StageViewport.d.ts +47 -0
  249. package/dist/src/shell/StageViewport.d.ts.map +1 -0
  250. package/dist/src/shell/StageViewport.js +174 -0
  251. package/dist/src/shell/StageViewport.js.map +1 -0
  252. package/dist/src/shell/StoryCodeBlock.d.ts +35 -0
  253. package/dist/src/shell/StoryCodeBlock.d.ts.map +1 -0
  254. package/dist/src/shell/StoryCodeBlock.js +27 -0
  255. package/dist/src/shell/StoryCodeBlock.js.map +1 -0
  256. package/dist/src/shell/StoryPicker.d.ts +26 -0
  257. package/dist/src/shell/StoryPicker.d.ts.map +1 -0
  258. package/dist/src/shell/StoryPicker.js +32 -0
  259. package/dist/src/shell/StoryPicker.js.map +1 -0
  260. package/dist/src/shell/Toolbar.d.ts +40 -0
  261. package/dist/src/shell/Toolbar.d.ts.map +1 -0
  262. package/dist/src/shell/Toolbar.js +125 -0
  263. package/dist/src/shell/Toolbar.js.map +1 -0
  264. package/dist/src/shell/WidthField.d.ts +24 -0
  265. package/dist/src/shell/WidthField.d.ts.map +1 -0
  266. package/dist/src/shell/WidthField.js +40 -0
  267. package/dist/src/shell/WidthField.js.map +1 -0
  268. package/dist/src/shell/catalogueContext.d.ts +6 -0
  269. package/dist/src/shell/catalogueContext.d.ts.map +1 -0
  270. package/dist/src/shell/catalogueContext.js +14 -0
  271. package/dist/src/shell/catalogueContext.js.map +1 -0
  272. package/dist/src/shell/codeTokens.d.ts +23 -0
  273. package/dist/src/shell/codeTokens.d.ts.map +1 -0
  274. package/dist/src/shell/codeTokens.js +48 -0
  275. package/dist/src/shell/codeTokens.js.map +1 -0
  276. package/dist/src/shell/codeWriter.d.ts +6 -0
  277. package/dist/src/shell/codeWriter.d.ts.map +1 -0
  278. package/dist/src/shell/codeWriter.js +14 -0
  279. package/dist/src/shell/codeWriter.js.map +1 -0
  280. package/dist/src/shell/compareVariants.d.ts +35 -0
  281. package/dist/src/shell/compareVariants.d.ts.map +1 -0
  282. package/dist/src/shell/compareVariants.js +68 -0
  283. package/dist/src/shell/compareVariants.js.map +1 -0
  284. package/dist/src/shell/dockTabs.d.ts +63 -0
  285. package/dist/src/shell/dockTabs.d.ts.map +1 -0
  286. package/dist/src/shell/dockTabs.js +140 -0
  287. package/dist/src/shell/dockTabs.js.map +1 -0
  288. package/dist/src/shell/icons.d.ts +47 -0
  289. package/dist/src/shell/icons.d.ts.map +1 -0
  290. package/dist/src/shell/icons.js +36 -0
  291. package/dist/src/shell/icons.js.map +1 -0
  292. package/dist/src/shell/keyboard.d.ts +35 -0
  293. package/dist/src/shell/keyboard.d.ts.map +1 -0
  294. package/dist/src/shell/keyboard.js +51 -0
  295. package/dist/src/shell/keyboard.js.map +1 -0
  296. package/dist/src/shell/mountShell.d.ts +22 -0
  297. package/dist/src/shell/mountShell.d.ts.map +1 -0
  298. package/dist/src/shell/mountShell.js +39 -0
  299. package/dist/src/shell/mountShell.js.map +1 -0
  300. package/dist/src/shell/shell.css +1831 -0
  301. package/dist/src/shell/strings.d.ts +184 -0
  302. package/dist/src/shell/strings.d.ts.map +1 -0
  303. package/dist/src/shell/strings.js +188 -0
  304. package/dist/src/shell/strings.js.map +1 -0
  305. package/dist/src/shell/switchView.d.ts +23 -0
  306. package/dist/src/shell/switchView.d.ts.map +1 -0
  307. package/dist/src/shell/switchView.js +19 -0
  308. package/dist/src/shell/switchView.js.map +1 -0
  309. package/dist/src/shell/treeSearch.d.ts +35 -0
  310. package/dist/src/shell/treeSearch.d.ts.map +1 -0
  311. package/dist/src/shell/treeSearch.js +60 -0
  312. package/dist/src/shell/treeSearch.js.map +1 -0
  313. package/dist/src/shell/useComponentDocs.d.ts +16 -0
  314. package/dist/src/shell/useComponentDocs.d.ts.map +1 -0
  315. package/dist/src/shell/useComponentDocs.js +25 -0
  316. package/dist/src/shell/useComponentDocs.js.map +1 -0
  317. package/dist/src/shell/useCopy.d.ts +10 -0
  318. package/dist/src/shell/useCopy.d.ts.map +1 -0
  319. package/dist/src/shell/useCopy.js +23 -0
  320. package/dist/src/shell/useCopy.js.map +1 -0
  321. package/dist/src/shell/useFrameMessages.d.ts +54 -0
  322. package/dist/src/shell/useFrameMessages.d.ts.map +1 -0
  323. package/dist/src/shell/useFrameMessages.js +90 -0
  324. package/dist/src/shell/useFrameMessages.js.map +1 -0
  325. package/dist/src/shell/useFrameQueue.d.ts +29 -0
  326. package/dist/src/shell/useFrameQueue.d.ts.map +1 -0
  327. package/dist/src/shell/useFrameQueue.js +72 -0
  328. package/dist/src/shell/useFrameQueue.js.map +1 -0
  329. package/dist/src/shell/useLiveView.d.ts +29 -0
  330. package/dist/src/shell/useLiveView.d.ts.map +1 -0
  331. package/dist/src/shell/useLiveView.js +51 -0
  332. package/dist/src/shell/useLiveView.js.map +1 -0
  333. package/dist/src/shell/useLoaded.d.ts +20 -0
  334. package/dist/src/shell/useLoaded.d.ts.map +1 -0
  335. package/dist/src/shell/useLoaded.js +40 -0
  336. package/dist/src/shell/useLoaded.js.map +1 -0
  337. package/dist/src/shell/usePageDoc.d.ts +20 -0
  338. package/dist/src/shell/usePageDoc.d.ts.map +1 -0
  339. package/dist/src/shell/usePageDoc.js +21 -0
  340. package/dist/src/shell/usePageDoc.js.map +1 -0
  341. package/dist/src/shell/usePopover.d.ts +23 -0
  342. package/dist/src/shell/usePopover.d.ts.map +1 -0
  343. package/dist/src/shell/usePopover.js +39 -0
  344. package/dist/src/shell/usePopover.js.map +1 -0
  345. package/dist/src/shell/useRecentPages.d.ts +21 -0
  346. package/dist/src/shell/useRecentPages.d.ts.map +1 -0
  347. package/dist/src/shell/useRecentPages.js +62 -0
  348. package/dist/src/shell/useRecentPages.js.map +1 -0
  349. package/dist/src/shell/useScrollMemory.d.ts +40 -0
  350. package/dist/src/shell/useScrollMemory.d.ts.map +1 -0
  351. package/dist/src/shell/useScrollMemory.js +69 -0
  352. package/dist/src/shell/useScrollMemory.js.map +1 -0
  353. package/dist/src/shell/useSidebarLayout.d.ts +14 -0
  354. package/dist/src/shell/useSidebarLayout.d.ts.map +1 -0
  355. package/dist/src/shell/useSidebarLayout.js +19 -0
  356. package/dist/src/shell/useSidebarLayout.js.map +1 -0
  357. package/dist/src/shell/useStored.d.ts +11 -0
  358. package/dist/src/shell/useStored.d.ts.map +1 -0
  359. package/dist/src/shell/useStored.js +68 -0
  360. package/dist/src/shell/useStored.js.map +1 -0
  361. package/dist/src/shell/useStoryCode.d.ts +14 -0
  362. package/dist/src/shell/useStoryCode.d.ts.map +1 -0
  363. package/dist/src/shell/useStoryCode.js +29 -0
  364. package/dist/src/shell/useStoryCode.js.map +1 -0
  365. package/dist/src/shell/useStoryHeights.d.ts +9 -0
  366. package/dist/src/shell/useStoryHeights.d.ts.map +1 -0
  367. package/dist/src/shell/useStoryHeights.js +31 -0
  368. package/dist/src/shell/useStoryHeights.js.map +1 -0
  369. package/dist/src/shell/useStoryIdsElement.d.ts +7 -0
  370. package/dist/src/shell/useStoryIdsElement.d.ts.map +1 -0
  371. package/dist/src/shell/useStoryIdsElement.js +29 -0
  372. package/dist/src/shell/useStoryIdsElement.js.map +1 -0
  373. package/dist/src/shell/useStoryKeys.d.ts +11 -0
  374. package/dist/src/shell/useStoryKeys.d.ts.map +1 -0
  375. package/dist/src/shell/useStoryKeys.js +40 -0
  376. package/dist/src/shell/useStoryKeys.js.map +1 -0
  377. package/dist/src/shell/useSystemDark.d.ts +3 -0
  378. package/dist/src/shell/useSystemDark.d.ts.map +1 -0
  379. package/dist/src/shell/useSystemDark.js +19 -0
  380. package/dist/src/shell/useSystemDark.js.map +1 -0
  381. package/dist/src/sourceFiles.d.ts +18 -0
  382. package/dist/src/sourceFiles.d.ts.map +1 -0
  383. package/dist/src/sourceFiles.js +22 -0
  384. package/dist/src/sourceFiles.js.map +1 -0
  385. package/dist/src/storyBackground.d.ts +21 -0
  386. package/dist/src/storyBackground.d.ts.map +1 -0
  387. package/dist/src/storyBackground.js +27 -0
  388. package/dist/src/storyBackground.js.map +1 -0
  389. package/dist/src/storyClock.d.ts +62 -0
  390. package/dist/src/storyClock.d.ts.map +1 -0
  391. package/dist/src/storyClock.js +51 -0
  392. package/dist/src/storyClock.js.map +1 -0
  393. package/dist/src/storyGlobals.d.ts +60 -0
  394. package/dist/src/storyGlobals.d.ts.map +1 -0
  395. package/dist/src/storyGlobals.js +117 -0
  396. package/dist/src/storyGlobals.js.map +1 -0
  397. package/dist/src/storyHeights.d.ts +37 -0
  398. package/dist/src/storyHeights.d.ts.map +1 -0
  399. package/dist/src/storyHeights.js +53 -0
  400. package/dist/src/storyHeights.js.map +1 -0
  401. package/dist/src/storyIdsElement.d.ts +9 -0
  402. package/dist/src/storyIdsElement.d.ts.map +1 -0
  403. package/dist/src/storyIdsElement.js +9 -0
  404. package/dist/src/storyIdsElement.js.map +1 -0
  405. package/dist/src/storyTexts.d.ts +43 -0
  406. package/dist/src/storyTexts.d.ts.map +1 -0
  407. package/dist/src/storyTexts.js +71 -0
  408. package/dist/src/storyTexts.js.map +1 -0
  409. package/dist/src/storyTree.d.ts +215 -0
  410. package/dist/src/storyTree.d.ts.map +1 -0
  411. package/dist/src/storyTree.js +308 -0
  412. package/dist/src/storyTree.js.map +1 -0
  413. package/dist/src/switches.d.ts +156 -0
  414. package/dist/src/switches.d.ts.map +1 -0
  415. package/dist/src/switches.js +193 -0
  416. package/dist/src/switches.js.map +1 -0
  417. package/dist/src/viewState.d.ts +194 -0
  418. package/dist/src/viewState.d.ts.map +1 -0
  419. package/dist/src/viewState.js +303 -0
  420. package/dist/src/viewState.js.map +1 -0
  421. package/dist/src/vite/adapter.d.ts +70 -0
  422. package/dist/src/vite/adapter.d.ts.map +1 -0
  423. package/dist/src/vite/adapter.js +22 -0
  424. package/dist/src/vite/adapter.js.map +1 -0
  425. package/dist/src/vite/autoTitle.d.ts +28 -0
  426. package/dist/src/vite/autoTitle.d.ts.map +1 -0
  427. package/dist/src/vite/autoTitle.js +44 -0
  428. package/dist/src/vite/autoTitle.js.map +1 -0
  429. package/dist/src/vite/componentPage.d.ts +34 -0
  430. package/dist/src/vite/componentPage.d.ts.map +1 -0
  431. package/dist/src/vite/componentPage.js +94 -0
  432. package/dist/src/vite/componentPage.js.map +1 -0
  433. package/dist/src/vite/config.d.ts +72 -0
  434. package/dist/src/vite/config.d.ts.map +1 -0
  435. package/dist/src/vite/config.js +25 -0
  436. package/dist/src/vite/config.js.map +1 -0
  437. package/dist/src/vite/configFile.d.ts +76 -0
  438. package/dist/src/vite/configFile.d.ts.map +1 -0
  439. package/dist/src/vite/configFile.js +190 -0
  440. package/dist/src/vite/configFile.js.map +1 -0
  441. package/dist/src/vite/docsExtractor.d.ts +46 -0
  442. package/dist/src/vite/docsExtractor.d.ts.map +1 -0
  443. package/dist/src/vite/docsExtractor.js +88 -0
  444. package/dist/src/vite/docsExtractor.js.map +1 -0
  445. package/dist/src/vite/docsProgram.d.ts +42 -0
  446. package/dist/src/vite/docsProgram.d.ts.map +1 -0
  447. package/dist/src/vite/docsProgram.js +144 -0
  448. package/dist/src/vite/docsProgram.js.map +1 -0
  449. package/dist/src/vite/docsWorker.d.ts +2 -0
  450. package/dist/src/vite/docsWorker.d.ts.map +1 -0
  451. package/dist/src/vite/docsWorker.js +68 -0
  452. package/dist/src/vite/docsWorker.js.map +1 -0
  453. package/dist/src/vite/forcedStates.d.ts +27 -0
  454. package/dist/src/vite/forcedStates.d.ts.map +1 -0
  455. package/dist/src/vite/forcedStates.js +60 -0
  456. package/dist/src/vite/forcedStates.js.map +1 -0
  457. package/dist/src/vite/forgebookPlugin.d.ts +28 -0
  458. package/dist/src/vite/forgebookPlugin.d.ts.map +1 -0
  459. package/dist/src/vite/forgebookPlugin.js +375 -0
  460. package/dist/src/vite/forgebookPlugin.js.map +1 -0
  461. package/dist/src/vite/highlightCode.d.ts +16 -0
  462. package/dist/src/vite/highlightCode.d.ts.map +1 -0
  463. package/dist/src/vite/highlightCode.js +82 -0
  464. package/dist/src/vite/highlightCode.js.map +1 -0
  465. package/dist/src/vite/indexStoryFile.d.ts +35 -0
  466. package/dist/src/vite/indexStoryFile.d.ts.map +1 -0
  467. package/dist/src/vite/indexStoryFile.js +458 -0
  468. package/dist/src/vite/indexStoryFile.js.map +1 -0
  469. package/dist/src/vite/pages.d.ts +49 -0
  470. package/dist/src/vite/pages.d.ts.map +1 -0
  471. package/dist/src/vite/pages.js +171 -0
  472. package/dist/src/vite/pages.js.map +1 -0
  473. package/dist/src/vite/prebundled.d.ts +30 -0
  474. package/dist/src/vite/prebundled.d.ts.map +1 -0
  475. package/dist/src/vite/prebundled.js +81 -0
  476. package/dist/src/vite/prebundled.js.map +1 -0
  477. package/dist/src/vite/storyCode.d.ts +28 -0
  478. package/dist/src/vite/storyCode.d.ts.map +1 -0
  479. package/dist/src/vite/storyCode.js +80 -0
  480. package/dist/src/vite/storyCode.js.map +1 -0
  481. package/dist/src/vite/storyFilesModule.d.ts +17 -0
  482. package/dist/src/vite/storyFilesModule.d.ts.map +1 -0
  483. package/dist/src/vite/storyFilesModule.js +64 -0
  484. package/dist/src/vite/storyFilesModule.js.map +1 -0
  485. package/dist/src/vite/storyMeta.d.ts +34 -0
  486. package/dist/src/vite/storyMeta.d.ts.map +1 -0
  487. package/dist/src/vite/storyMeta.js +74 -0
  488. package/dist/src/vite/storyMeta.js.map +1 -0
  489. package/dist/src/vite/typeScriptPieces.d.ts +23 -0
  490. package/dist/src/vite/typeScriptPieces.d.ts.map +1 -0
  491. package/dist/src/vite/typeScriptPieces.js +236 -0
  492. package/dist/src/vite/typeScriptPieces.js.map +1 -0
  493. package/package.json +202 -3
@@ -0,0 +1,375 @@
1
+ /**
2
+ * The Vite plugin an app adds to show a catalogue: the story files of every source, and the forced-states rewrite of
3
+ * every style sheet.
4
+ *
5
+ * @remarks
6
+ * A source names its story files with `import files from "<pattern>?forgebook-files"`: the plugin answers each with
7
+ * one module (`storyFilesModule.ts`) holding every matched file's index, read from its source with Vite's parser, and
8
+ * the loaders of its module, of its component's docs and of its code (D-438). Those loaders ask for
9
+ * `?forgebook-docs`, answered with the component's props as the framework reads them (`adapter.ts`, in a worker) or
10
+ * `{ error }` for the panel, `?forgebook-code`, answered with each story's `render` as written (`storyCode.ts`),
11
+ * `?forgebook-page`, answered with the component's documentation file as HTML (`componentPage.ts`), and
12
+ * `?forgebook-markdown`, a source's own Markdown file (its introduction on the home) as HTML. It also sets
13
+ * Lightning CSS as the CSS transformer with the forced-states visitor (`forcedStates.ts`) and lets Sass resolve
14
+ * `pkg:` URLs, which the library's style sheets use.
15
+ *
16
+ * A pattern's module watches its story files, so an edit renews it. Vite watches only its root for new files, and the
17
+ * sources' story files live in other packages: `watch` names their folders, and a story file added or removed there
18
+ * renews every pattern's module and reloads the page, so the sidebar lists it at once.
19
+ *
20
+ * @module
21
+ */
22
+ import { existsSync, readFileSync } from "node:fs";
23
+ import { dirname, join, resolve } from "node:path";
24
+ import ts from "typescript-6";
25
+ import { STORY_FILE } from "./autoTitle.js";
26
+ import { componentPage, markdownHtml } from "./componentPage.js";
27
+ import { findConfigFile, loadConfigFile, packageResolver } from "./configFile.js";
28
+ import { createDocsExtractor } from "./docsExtractor.js";
29
+ import { moduleSummaryOf } from "./docsProgram.js";
30
+ import { FORCED_STATES_VISITOR } from "./forcedStates.js";
31
+ import { highlightCode } from "./highlightCode.js";
32
+ import { CONFIG_MODULE, configModule, frameEntry, PAGE_ENTRIES, PAGE_FILES, pageHtml, STORIES_SOURCE_FILE, shellEntry, storiesSourceModule } from "./pages.js";
33
+ import { prebundled, scannedEntries } from "./prebundled.js";
34
+ import { storyCode } from "./storyCode.js";
35
+ import { storyFilesModule } from "./storyFilesModule.js";
36
+ import { componentImport } from "./storyMeta.js";
37
+ /**
38
+ * A file's text, or none when it cannot be read.
39
+ *
40
+ * @param file - the file.
41
+ */
42
+ const readTextFile = (file) => {
43
+ try {
44
+ return readFileSync(file, "utf8");
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ };
50
+ /** This module's folder, in the core's package: the core's own dependencies resolve from here, not the project's. */
51
+ const PACKAGE_DIR = import.meta.dirname;
52
+ /**
53
+ * Sass's `pkg:` importer, when the project installs Sass (`sass-embedded`, an optional peer): a library's styles
54
+ * import its packages' with `pkg:` URLs. Without Sass, Vite compiles no `.scss` and needs none.
55
+ */
56
+ const sassOptions = async () => {
57
+ if (packageResolver(PACKAGE_DIR)("sass-embedded") === undefined)
58
+ return {};
59
+ const { NodePackageImporter } = await import("sass-embedded");
60
+ return { preprocessorOptions: { scss: { importers: [new NodePackageImporter()] } } };
61
+ };
62
+ /** The query that asks for the story files a pattern matches (`../src/**\/*.stories.tsx?forgebook-files`). */
63
+ const FILES_QUERY = "?forgebook-files";
64
+ /** The id of a pattern's module: virtual, with the declaring module's folder and the pattern after it. */
65
+ const FILES_PREFIX = "\0forgebook-files:";
66
+ /** Between the folder and the pattern in a pattern module's id: no path or pattern holds it. */
67
+ const FILES_SEPARATOR = "::";
68
+ /** The query that asks for a story file's code: each story's `render` as written. */
69
+ const CODE_QUERY = "?forgebook-code";
70
+ /** The query that asks for a story file's component page: its documentation file as HTML. */
71
+ const PAGE_QUERY = "?forgebook-page";
72
+ /** The query a source's Markdown file is imported with (its introduction on the home), answered with its HTML. */
73
+ const MARKDOWN_QUERY = "?forgebook-markdown";
74
+ /** A TypeScript source file, whose edit may change a component's docs. */
75
+ const SOURCE_FILE = /\.tsx?$/;
76
+ /** The query that asks for a story file's component docs. */
77
+ const DOCS_QUERY = "?forgebook-docs";
78
+ /**
79
+ * The module that answers a `?forgebook-docs` import: the story file's component docs, or `{ error }` for the panel.
80
+ *
81
+ * @param component - what the extractor read for the story file.
82
+ * @param watch - adds a file whose edit renews the module.
83
+ */
84
+ const docsModule = (component, watch) => {
85
+ // the docs come from the component's files, not the story file the id names: Vite renews them on an edit only if
86
+ // it watches those files too
87
+ if (typeof component !== "string" && "sources" in component) {
88
+ for (const file of component.sources)
89
+ watch(file);
90
+ }
91
+ const value = typeof component === "string" ? { error: component } : component.docs;
92
+ return { code: `export default ${JSON.stringify(value)};`, moduleType: "js" };
93
+ };
94
+ /**
95
+ * The module that answers a `?forgebook-code` import: each story's `render` text and its coloured HTML, or `{ error }`
96
+ * for the card.
97
+ *
98
+ * @param storyFile - the story file's absolute path; Vite renews the module when it changes, as the id names it.
99
+ */
100
+ const codeModule = (storyFile) => {
101
+ const code = storyCode(storyFile, readFileSync(storyFile, "utf8"));
102
+ const value = typeof code === "string"
103
+ ? { error: code }
104
+ : Object.fromEntries(Object.entries(code).map(([name, text]) => [name, { text, html: highlightCode(text, "tsx") }]));
105
+ return { code: `export default ${JSON.stringify(value)};`, moduleType: "js" };
106
+ };
107
+ /**
108
+ * The file of a story file's component, from the meta's import, resolved as the app resolves it.
109
+ *
110
+ * @param storyFile - the story file's absolute path.
111
+ * @param resolve - resolves an import of the story file to its file; none when it does not resolve.
112
+ * @returns the component's file, or none when the meta names no imported component.
113
+ */
114
+ const componentFileOf = async (storyFile, resolve) => {
115
+ const specifier = componentImport(storyFile, readFileSync(storyFile, "utf8"));
116
+ return specifier === undefined ? undefined : resolve(specifier);
117
+ };
118
+ /**
119
+ * The module that answers a `?forgebook-page` import: the component's documentation file as HTML (empty without
120
+ * one), and its file's summary, the first paragraph of its `@module` comment, for the page's lead.
121
+ *
122
+ * @remarks
123
+ * The summary is read here, from the component's file alone, rather than with the docs: the docs wait for the
124
+ * package's TypeScript program, and the lead would come seconds after the rest of the page.
125
+ *
126
+ * @param storyFile - the story file's absolute path.
127
+ * @param componentFile - the component's file, as the story file's import resolves; none when it names none.
128
+ * @param watch - adds a file whose edit renews the module (the documentation file, the component's file).
129
+ */
130
+ const pageModule = (storyFile, componentFile, watch) => {
131
+ const page = componentPage(storyFile);
132
+ if (page !== undefined)
133
+ watch(page.file);
134
+ if (componentFile !== undefined)
135
+ watch(componentFile);
136
+ const summary = componentFile === undefined
137
+ ? ""
138
+ : moduleSummaryOf(ts.createSourceFile(componentFile, readFileSync(componentFile, "utf8"), ts.ScriptTarget.Latest, true));
139
+ const value = { html: page?.html ?? "", summary };
140
+ return { code: `export default ${JSON.stringify(value)};`, moduleType: "js" };
141
+ };
142
+ /**
143
+ * The module that answers a `?forgebook-markdown` import: a source's Markdown file (its introduction) as HTML.
144
+ *
145
+ * @param file - the Markdown file's absolute path.
146
+ * @param watch - adds a file whose edit renews the module (the Markdown file).
147
+ */
148
+ const markdownModule = (file, watch) => {
149
+ watch(file);
150
+ const value = { html: markdownHtml(readFileSync(file, "utf8")) };
151
+ return { code: `export default ${JSON.stringify(value)};`, moduleType: "js" };
152
+ };
153
+ /**
154
+ * The module of a `?forgebook-files` pattern: every matched story file's index and loaders.
155
+ *
156
+ * @param id - the module's id (`FILES_PREFIX`, the importer's folder, `FILES_SEPARATOR`, the pattern).
157
+ * @param watch - adds a file whose edit renews the module (each story file).
158
+ * @param warm - builds the program that holds a story file, so the package's docs are ready before a page asks.
159
+ * @throws when a story file cannot be indexed.
160
+ */
161
+ const patternModule = (id, watch, warm) => {
162
+ const [root = "", pattern = ""] = id.slice(FILES_PREFIX.length).split(FILES_SEPARATOR);
163
+ let first;
164
+ const code = storyFilesModule(root, pattern, (file) => {
165
+ first ??= file;
166
+ watch(file);
167
+ });
168
+ if (first !== undefined)
169
+ warm(first);
170
+ return { code, moduleType: "js" };
171
+ };
172
+ /** The resolved id of the configuration's data module. */
173
+ const CONFIG_ID = `\0${CONFIG_MODULE}`;
174
+ /**
175
+ * The page a request names, when it names one: `/` is the shell's.
176
+ *
177
+ * @param url - the request's address.
178
+ */
179
+ const requestedPage = (url) => {
180
+ const path = url.split("?")[0] ?? "";
181
+ const name = path === "/" ? "index.html" : path.replace(/^\//, "");
182
+ return PAGE_FILES.find((page) => page === name);
183
+ };
184
+ /**
185
+ * A module the plugin answers from a file's text alone, when the id asks for one: a story file's code, or a Markdown
186
+ * file as HTML.
187
+ *
188
+ * @param id - the module's id.
189
+ * @param watch - adds a file whose edit renews the module.
190
+ */
191
+ const textModule = (id, watch) => {
192
+ if (id.endsWith(CODE_QUERY))
193
+ return codeModule(id.slice(0, -CODE_QUERY.length));
194
+ if (id.endsWith(MARKDOWN_QUERY))
195
+ return markdownModule(id.slice(0, -MARKDOWN_QUERY.length), watch);
196
+ return undefined;
197
+ };
198
+ /**
199
+ * A module the plugin generates for a catalogue's pages, when the id names one: the configuration's data, an entry,
200
+ * the project's own stories' source, or a page's HTML (unless the folder has one of its own).
201
+ *
202
+ * @param id - the module's id.
203
+ * @param config - the catalogue's configuration.
204
+ */
205
+ const generatedModule = (id, config) => {
206
+ if (id === CONFIG_ID)
207
+ return { code: configModule(config), moduleType: "js" };
208
+ if (id === join(config.dir, PAGE_ENTRIES["index.html"]))
209
+ return { code: shellEntry(config), moduleType: "js" };
210
+ if (id === join(config.dir, PAGE_ENTRIES["frame.html"]))
211
+ return { code: frameEntry(config), moduleType: "js" };
212
+ if (id === join(config.dir, STORIES_SOURCE_FILE))
213
+ return { code: storiesSourceModule(config), moduleType: "js" };
214
+ const page = PAGE_FILES.find((candidate) => id === join(config.dir, candidate));
215
+ return page !== undefined && !existsSync(id) ? pageHtml(page, config) : undefined;
216
+ };
217
+ /**
218
+ * The catalogue's Vite plugin: the story index, the docs, the code and the Markdown of the stories, the forced-states
219
+ * rewrite of every style sheet and, with a configuration, the catalogue's two pages.
220
+ *
221
+ * @param options - the configuration (read from Vite's root when not given), or the framework alone, and the folders
222
+ * to watch.
223
+ * @returns the plugin, for the app's `plugins`.
224
+ */
225
+ export const forgebookPlugin = (options = {}) => {
226
+ /** The modules of the patterns, renewed when a story file is added or removed. */
227
+ const filesModules = new Set();
228
+ let config = options.config;
229
+ // the docs are read in a worker, made once the framework is known: a package's TypeScript program takes seconds to
230
+ // build and would hold every other answer of the dev server meanwhile
231
+ let docs;
232
+ const extractor = () => {
233
+ const framework = config?.framework ?? options.framework;
234
+ if (framework === undefined)
235
+ throw new Error("Forgebook has no framework: add forgebook.config.ts, or give the plugin `framework`");
236
+ docs ??= createDocsExtractor(framework.docsModule);
237
+ return docs;
238
+ };
239
+ const pagePath = (page) => config === undefined ? undefined : join(config.dir, page);
240
+ const entryPath = (page) => config === undefined ? undefined : join(config.dir, PAGE_ENTRIES[page]);
241
+ const storiesSource = () => config === undefined ? undefined : join(config.dir, STORIES_SOURCE_FILE);
242
+ /**
243
+ * A module a story file's query asks for (`?forgebook-docs`, `-code`, `-page`, `-markdown`), when the id is one.
244
+ *
245
+ * @param id - the module's id.
246
+ * @param watch - adds a file whose edit renews the module.
247
+ * @param resolveImport - resolves an import of a file as the app resolves it.
248
+ */
249
+ const queryModule = async (id, watch, resolveImport) => {
250
+ if (id.endsWith(DOCS_QUERY)) {
251
+ return docsModule(await extractor().extract(id.slice(0, -DOCS_QUERY.length)), watch);
252
+ }
253
+ if (id.endsWith(PAGE_QUERY)) {
254
+ const storyFile = id.slice(0, -PAGE_QUERY.length);
255
+ const componentFile = await componentFileOf(storyFile, (specifier) => resolveImport(specifier, storyFile));
256
+ return pageModule(storyFile, componentFile, watch);
257
+ }
258
+ return textModule(id, watch);
259
+ };
260
+ return {
261
+ name: "forgebook",
262
+ enforce: "pre",
263
+ config: async (userConfig) => {
264
+ if (config === undefined && options.framework === undefined) {
265
+ const file = findConfigFile(resolve(userConfig.root ?? process.cwd()));
266
+ if (file !== undefined)
267
+ config = await loadConfigFile(file);
268
+ }
269
+ const pages = config === undefined
270
+ ? {}
271
+ : {
272
+ root: config.dir,
273
+ // the pages are generated, so Vite's scanner cannot find what they import: it is named here, and the
274
+ // story files (the project's and the sources') are scanned for what their components import
275
+ optimizeDeps: {
276
+ include: prebundled(config, packageResolver(config.dir), packageResolver(PACKAGE_DIR)),
277
+ entries: scannedEntries(config, packageResolver(config.dir), readTextFile)
278
+ },
279
+ build: {
280
+ rolldownOptions: {
281
+ input: { index: join(config.dir, "index.html"), frame: join(config.dir, "frame.html") }
282
+ }
283
+ }
284
+ };
285
+ return {
286
+ ...pages,
287
+ css: {
288
+ transformer: "lightningcss",
289
+ lightningcss: { visitor: FORCED_STATES_VISITOR },
290
+ ...(await sassOptions())
291
+ }
292
+ };
293
+ },
294
+ resolveId(source, importer) {
295
+ if (source === CONFIG_MODULE)
296
+ return CONFIG_ID;
297
+ const entry = PAGE_FILES.find((page) => source === `/${PAGE_ENTRIES[page]}` || source === entryPath(page));
298
+ if (entry !== undefined)
299
+ return entryPath(entry) ?? null;
300
+ if (source === storiesSource())
301
+ return source;
302
+ const page = PAGE_FILES.find((candidate) => source === pagePath(candidate) || source === `/${candidate}`);
303
+ if (page !== undefined)
304
+ return pagePath(page) ?? null;
305
+ if (!source.endsWith(FILES_QUERY) || importer === undefined)
306
+ return null;
307
+ return `${FILES_PREFIX}${dirname(importer)}${FILES_SEPARATOR}${source.slice(0, -FILES_QUERY.length)}`;
308
+ },
309
+ configureServer: (server) => {
310
+ server.httpServer?.on("close", () => void docs?.close());
311
+ // an edited component or type file changes its docs: the worker renews its programs on their next read
312
+ server.watcher.on("change", (file) => {
313
+ if (SOURCE_FILE.test(file))
314
+ docs?.changed();
315
+ });
316
+ // the catalogue's pages, made here: no HTML file is written
317
+ server.middlewares.use((request, response, next) => {
318
+ const page = requestedPage(request.url ?? "/");
319
+ if (config === undefined || page === undefined) {
320
+ next();
321
+ return;
322
+ }
323
+ server
324
+ .transformIndexHtml(request.url ?? "/", pageHtml(page, config))
325
+ .then((html) => {
326
+ response.setHeader("Content-Type", "text/html");
327
+ response.end(html);
328
+ })
329
+ .catch(next);
330
+ });
331
+ const watched = [...(config?.watch ?? []), ...(options.watch ?? [])];
332
+ if (watched.length === 0)
333
+ return;
334
+ server.watcher.add(watched);
335
+ const refresh = (file) => {
336
+ if (!STORY_FILE.test(file))
337
+ return;
338
+ const graph = server.environments.client.moduleGraph;
339
+ for (const id of filesModules) {
340
+ const module = graph.getModuleById(id);
341
+ if (module !== undefined)
342
+ graph.invalidateModule(module);
343
+ }
344
+ server.ws.send({ type: "full-reload" });
345
+ };
346
+ server.watcher.on("add", refresh);
347
+ server.watcher.on("unlink", refresh);
348
+ },
349
+ closeBundle: async () => {
350
+ await docs?.close();
351
+ },
352
+ async load(id) {
353
+ const generated = config === undefined ? undefined : generatedModule(id, config);
354
+ if (generated !== undefined)
355
+ return generated;
356
+ const watch = (file) => this.addWatchFile(file);
357
+ const answered = await queryModule(id, watch, async (specifier, importer) => {
358
+ const resolved = await this.resolve(specifier, importer);
359
+ return resolved?.id;
360
+ });
361
+ if (answered !== undefined)
362
+ return answered;
363
+ if (!id.startsWith(FILES_PREFIX))
364
+ return null;
365
+ filesModules.add(id);
366
+ try {
367
+ return patternModule(id, watch, extractor().warm);
368
+ }
369
+ catch (error) {
370
+ this.error(error instanceof Error ? error.message : String(error));
371
+ }
372
+ }
373
+ };
374
+ };
375
+ //# sourceMappingURL=forgebookPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgebookPlugin.js","sourceRoot":"","sources":["../../../src/vite/forgebookPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** The class prefix of every coloured piece. */
2
+ export declare const HIGHLIGHT_PREFIX = "forgebook-hl-";
3
+ /**
4
+ * A text as HTML that shows it as written.
5
+ *
6
+ * @param text - the text.
7
+ */
8
+ export declare const escapeHtml: (text: string) => string;
9
+ /**
10
+ * Code as HTML, coloured when its language is known.
11
+ *
12
+ * @param code - the code.
13
+ * @param language - its language as a Markdown fence names it (`tsx`, `ts`, `scss`, `sh`); none leaves it plain.
14
+ */
15
+ export declare const highlightCode: (code: string, language: string | undefined) => string;
16
+ //# sourceMappingURL=highlightCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlightCode.d.ts","sourceRoot":"","sources":["../../../src/vite/highlightCode.ts"],"names":[],"mappings":"AAuBA,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAoBhD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MACiC,CAAC;AA0B5E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAK1E,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Code as coloured HTML, at build time: the code blocks of a component's documentation file and each story's
3
+ * `render`, so the page shows them coloured without a highlighter in the browser.
4
+ *
5
+ * @remarks
6
+ * The TypeScript family (TypeScript, TSX, JavaScript, JSX) is split by the TypeScript compiler
7
+ * (`typeScriptPieces.ts`): highlight.js reads JSX as HTML and loses the rest of the example at the first function or
8
+ * `>` in an attribute (D-690). highlight.js keeps the other languages a component's documentation writes (CSS, SCSS,
9
+ * JSON, bash, HTML), on its own instance, so nothing else that uses highlight.js in the same process sees these
10
+ * settings. Both write the same classes, with the catalogue's prefix (`forgebook-hl-keyword`), coloured by the
11
+ * shell's style sheet with its code palette. A language neither knows is escaped and left plain.
12
+ *
13
+ * @module
14
+ */
15
+ import hljs from "highlight.js/lib/core";
16
+ import bash from "highlight.js/lib/languages/bash";
17
+ import css from "highlight.js/lib/languages/css";
18
+ import json from "highlight.js/lib/languages/json";
19
+ import scss from "highlight.js/lib/languages/scss";
20
+ import xml from "highlight.js/lib/languages/xml";
21
+ import { isTypeScriptLanguage, typeScriptPieces } from "./typeScriptPieces.js";
22
+ /** The class prefix of every coloured piece. */
23
+ export const HIGHLIGHT_PREFIX = "forgebook-hl-";
24
+ /** The catalogue's own highlighter: the languages outside the TypeScript family a component's documentation writes. */
25
+ const highlighter = hljs.newInstance();
26
+ highlighter.configure({ classPrefix: HIGHLIGHT_PREFIX });
27
+ highlighter.registerLanguage("xml", xml);
28
+ highlighter.registerLanguage("css", css);
29
+ highlighter.registerLanguage("scss", scss);
30
+ highlighter.registerLanguage("json", json);
31
+ highlighter.registerLanguage("bash", bash);
32
+ /** The characters HTML gives a meaning to, as entities. */
33
+ const ENTITIES = {
34
+ "&": "&amp;",
35
+ "<": "&lt;",
36
+ ">": "&gt;",
37
+ '"': "&quot;",
38
+ "'": "&#39;"
39
+ };
40
+ /**
41
+ * A text as HTML that shows it as written.
42
+ *
43
+ * @param text - the text.
44
+ */
45
+ export const escapeHtml = (text) => text.replace(/[&<>"']/g, (character) => ENTITIES[character] ?? character);
46
+ /**
47
+ * The classes of each role a TypeScript piece can have: the ones highlight.js gives the same thing, so the palette
48
+ * colours both alike.
49
+ */
50
+ const ROLE_CLASSES = {
51
+ keyword: `${HIGHLIGHT_PREFIX}keyword`,
52
+ string: `${HIGHLIGHT_PREFIX}string`,
53
+ number: `${HIGHLIGHT_PREFIX}number`,
54
+ comment: `${HIGHLIGHT_PREFIX}comment`,
55
+ type: `${HIGHLIGHT_PREFIX}type`,
56
+ function: `${HIGHLIGHT_PREFIX}title function_`,
57
+ property: `${HIGHLIGHT_PREFIX}property`,
58
+ tag: `${HIGHLIGHT_PREFIX}name`,
59
+ attribute: `${HIGHLIGHT_PREFIX}attr`
60
+ };
61
+ /**
62
+ * A piece of code as HTML: escaped on its own, so a span never splits an entity.
63
+ *
64
+ * @param piece - the piece.
65
+ */
66
+ const pieceHtml = ({ text, role }) => role === undefined ? escapeHtml(text) : `<span class="${ROLE_CLASSES[role]}">${escapeHtml(text)}</span>`;
67
+ /**
68
+ * Code as HTML, coloured when its language is known.
69
+ *
70
+ * @param code - the code.
71
+ * @param language - its language as a Markdown fence names it (`tsx`, `ts`, `scss`, `sh`); none leaves it plain.
72
+ */
73
+ export const highlightCode = (code, language) => {
74
+ if (language === undefined)
75
+ return escapeHtml(code);
76
+ if (isTypeScriptLanguage(language))
77
+ return typeScriptPieces(code, language).map(pieceHtml).join("");
78
+ if (highlighter.getLanguage(language) === undefined)
79
+ return escapeHtml(code);
80
+ return highlighter.highlight(code, { language, ignoreIllegals: true }).value;
81
+ };
82
+ //# sourceMappingURL=highlightCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlightCode.js","sourceRoot":"","sources":["../../../src/vite/highlightCode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A story file's index, read from its source without running it: the meta's title and the stories with their names,
3
+ * as Forgebook's and Storybook's files write them.
4
+ *
5
+ * @remarks
6
+ * The sidebar lists every story before any is loaded, so the index comes from the code itself, parsed with Vite's
7
+ * parser (the same files Vite compiles). It reads a meta written inline or as a constant (`export default meta`), a
8
+ * story as an object (CSF 3) or as a function with its properties assigned after it (CSF 2: `A.storyName`,
9
+ * `A.parameters`), named exports and re-exports (`export { A as B }`), `includeStories`, `excludeStories`,
10
+ * `__namedExportsOrder`, the meta's and the stories' `tags`, the TSDoc above a story, and `parameters.docs.description`.
11
+ *
12
+ * A value the index needs (the title, a name, `parameters.controls`, `group`, `height`, `main`, the meta's `alsoIn`,
13
+ * `related`, `keywords`) is read when written plainly; written by code, it is left to the frame, which reads it when
14
+ * the story loads. A title written by code, or none, is the file's path (`autoTitle`, as Storybook's auto-title); one
15
+ * written by code is also noted, since the author meant another. A value written plainly but wrongly
16
+ * (`controls: true`) is a problem. Pure: text in, index or problem out.
17
+ *
18
+ * @module
19
+ */
20
+ import type { StoryFileIndex } from "@forgebook/story-format/source";
21
+ /** What the index is given besides the file: the title its path makes, for a meta that writes none. */
22
+ export type IndexOptions = {
23
+ /** The title from the file's path (`Inputs/Select`); none when the file's place gives none. */
24
+ readonly autoTitle?: string;
25
+ };
26
+ /**
27
+ * The index of one story file.
28
+ *
29
+ * @param file - the file's path, for the parser (its extension decides TypeScript and JSX) and the messages.
30
+ * @param text - the file's source.
31
+ * @param options - the title the file's path makes, for a meta that writes none.
32
+ * @returns the title and the stories, or a message saying why the file cannot be indexed.
33
+ */
34
+ export declare const indexStoryFile: (file: string, text: string, options?: IndexOptions) => StoryFileIndex | string;
35
+ //# sourceMappingURL=indexStoryFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexStoryFile.d.ts","sourceRoot":"","sources":["../../../src/vite/indexStoryFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAwB,cAAc,EAAmB,MAAM,gCAAgC,CAAC;AAG5G,uGAAuG;AACvG,MAAM,MAAM,YAAY,GAAG;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAueF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,UAAS,YAAiB,KACzB,cAAc,GAAG,MA6BnB,CAAC"}