forgebook 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +994 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +182 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +62 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +95 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +204 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +323 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +148 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +69 -185
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +18 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +141 -23
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +30 -0
- package/dist/src/shell/laterStrings.js +43 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +376 -169
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +148 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +354 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +21 -4
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +55 -73
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +119 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +187 -60
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { canOrderRequired, laidOutProps, propGroupOrder } from "../propGroups.js";
|
|
4
|
+
import { ApiTableBox } from "./ApiTableBox.js";
|
|
4
5
|
import { Code } from "./Code.js";
|
|
5
6
|
import { CodeText } from "./CodeText.js";
|
|
6
7
|
import { useCatalogue } from "./catalogueContext.js";
|
|
7
8
|
import { Icon } from "./icons.js";
|
|
8
9
|
import { LATER_STRINGS } from "./laterStrings.js";
|
|
10
|
+
import { propNoteTexts, propsNoteText } from "./propNotes.js";
|
|
9
11
|
import { RequiredFirstSwitch } from "./RequiredFirstSwitch.js";
|
|
10
12
|
import { SignatureReference } from "./SignatureReference.js";
|
|
11
13
|
import { STRINGS } from "./strings.js";
|
|
@@ -39,7 +41,7 @@ const RowPlace = ({ row }) => {
|
|
|
39
41
|
const Row = ({ row, hasDefaults, columns, part, showsGroup }) => {
|
|
40
42
|
const [isOpen, setOpen] = useState(false);
|
|
41
43
|
const { members } = row;
|
|
42
|
-
return (_jsxs(_Fragment, { children: [_jsxs("tr", { "data-prop": part === undefined ? row.name : `${part}.${row.name}`, children: [_jsxs("th", { scope: "row", children: [_jsx("code", { className: "forgebook-api__name", children: row.name }), row.isRequired ? (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" })) : null, showsGroup ? _jsx(RowPlace, { row: row }) : null] }), _jsxs("td", { className: "forgebook-api__type", children: [_jsx(Code, { text: typeText(row), names: row.signature?.parameters.map((parameter) => parameter.name) ?? [] }), members === undefined ? null : (_jsxs("button", { type: "button", className: "forgebook-api__members-toggle", "aria-expanded": isOpen, "aria-label": `${LATER_STRINGS.membersOf(row.type)}: ${LATER_STRINGS.memberCount(members.length)}`, onClick: () => setOpen(!isOpen), children: [_jsx(Icon, { name: "chevronRight", size: 12 }), LATER_STRINGS.memberCount(members.length)] }))] }), hasDefaults ? (_jsx("td", { children: row.defaultValue === undefined ? null : (_jsx("code", { className: "forgebook-inline-code", children: row.defaultValue })) })) : null,
|
|
44
|
+
return (_jsxs(_Fragment, { children: [_jsxs("tr", { "data-prop": part === undefined ? row.name : `${part}.${row.name}`, children: [_jsxs("th", { scope: "row", children: [_jsx("code", { className: "forgebook-api__name", children: row.name }), row.isRequired ? (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" })) : null, showsGroup ? _jsx(RowPlace, { row: row }) : null] }), _jsxs("td", { className: "forgebook-api__type", children: [_jsx(Code, { text: typeText(row), names: row.signature?.parameters.map((parameter) => parameter.name) ?? [] }), members === undefined ? null : (_jsxs("button", { type: "button", className: "forgebook-api__members-toggle", "aria-expanded": isOpen, "aria-label": `${LATER_STRINGS.membersOf(row.type)}: ${LATER_STRINGS.memberCount(members.length)}`, onClick: () => setOpen(!isOpen), children: [_jsx(Icon, { name: "chevronRight", size: 12 }), LATER_STRINGS.memberCount(members.length)] }))] }), hasDefaults ? (_jsx("td", { children: row.defaultValue === undefined ? null : (_jsx("code", { className: "forgebook-inline-code", children: row.defaultValue })) })) : null, _jsxs("td", { children: [_jsx(CodeText, { text: row.description }), propNoteTexts(row).map((note) => (_jsx("span", { className: "forgebook-api__note", children: _jsx(CodeText, { text: note }) }, note)))] })] }), members !== undefined && isOpen ? (_jsx("tr", { className: "forgebook-api__members", children: _jsx("td", { colSpan: columns, children: _jsx(PropTable, { rows: members, kind: "members", label: LATER_STRINGS.membersOf(row.type), part: part === undefined ? row.name : `${part}.${row.name}` }) }) })) : null] }));
|
|
43
45
|
};
|
|
44
46
|
/**
|
|
45
47
|
* A table of props, events or members: the Default column only when one of them has a default.
|
|
@@ -49,7 +51,7 @@ const Row = ({ row, hasDefaults, columns, part, showsGroup }) => {
|
|
|
49
51
|
*/
|
|
50
52
|
const PropTable = ({ rows, kind, label, part, showsGroups = false }) => {
|
|
51
53
|
const hasDefaults = kind !== "events" && rows.some((row) => row.defaultValue !== undefined);
|
|
52
|
-
return (_jsx(
|
|
54
|
+
return (_jsx(ApiTableBox, { children: _jsxs("table", { className: "forgebook-api__table", "aria-label": label, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: NAME_HEADINGS[kind]() }), _jsx("th", { scope: "col", children: kind === "events" ? LATER_STRINGS.apiSignature : LATER_STRINGS.apiType }), hasDefaults ? _jsx("th", { scope: "col", children: LATER_STRINGS.apiDefault }) : null, _jsx("th", { scope: "col", children: LATER_STRINGS.apiWhat })] }) }), _jsx("tbody", { children: rows.map((row) => (_jsx(Row, { row: row, hasDefaults: hasDefaults, columns: hasDefaults ? 4 : 3, part: part, showsGroup: showsGroups }, row.name))) })] }) }));
|
|
53
55
|
};
|
|
54
56
|
/**
|
|
55
57
|
* A group of props: the props that name none as a table alone, a named group under its heading, open until a reader
|
|
@@ -100,5 +102,6 @@ export const ApiReference = ({ docs, isLogic, componentGroups = NO_GROUPS, requi
|
|
|
100
102
|
...(isSignature ? [] : docs.props),
|
|
101
103
|
...docs.subcomponents.flatMap((subcomponent) => subcomponent.props)
|
|
102
104
|
];
|
|
103
|
-
|
|
105
|
+
const propsNote = isSignature ? undefined : propsNoteText(docs);
|
|
106
|
+
return (_jsxs("section", { className: "forgebook-doc__section", "aria-labelledby": "forgebook-api", children: [_jsxs("div", { className: "forgebook-api__head", children: [_jsx("h2", { id: "forgebook-api", children: LATER_STRINGS.apiReference }), canOrderRequired(shown) ? _jsx(RequiredFirstSwitch, { state: ordering }) : null] }), isSignature ? (_jsx(SignatureReference, { name: docs.name, signature: docs.signature })) : (_jsx(PropsAndEvents, { props: docs.props, groupOrder: groupOrder, layout: ordering.layout, level: 3 })), propsNote === undefined ? null : (_jsx("p", { className: "forgebook-api__note", children: _jsx(CodeText, { text: propsNote }) })), docs.subcomponents.map((subcomponent) => (_jsx(SubcomponentReference, { docs: subcomponent, groupOrder: groupOrder, layout: ordering.layout }, subcomponent.name)))] }));
|
|
104
107
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The box around a table of the API reference: a table wider than the page scrolls in it, never the page, by the
|
|
3
|
+
* pointer or from its Tab stop.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from "react";
|
|
8
|
+
/**
|
|
9
|
+
* A table's box.
|
|
10
|
+
*
|
|
11
|
+
* @param props - the table.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ApiTableBox: ({ children }: {
|
|
14
|
+
readonly children: ReactNode;
|
|
15
|
+
}) => ReactNode;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useScrollStops } from "./useScrollStops.js";
|
|
3
|
+
/**
|
|
4
|
+
* A table's box.
|
|
5
|
+
*
|
|
6
|
+
* @param props - the table.
|
|
7
|
+
*/
|
|
8
|
+
export const ApiTableBox = ({ children }) => {
|
|
9
|
+
const boxRef = useScrollStops();
|
|
10
|
+
return (_jsx("div", { ref: boxRef, className: "forgebook-api", children: children }));
|
|
11
|
+
};
|
|
@@ -11,4 +11,7 @@ import type { AppearanceState } from "./useAppearance.ts";
|
|
|
11
11
|
*
|
|
12
12
|
* @param props - the appearance shown and its setter.
|
|
13
13
|
*/
|
|
14
|
-
export declare const AppearanceMenu: ({ appearance, setAppearance, offered }: AppearanceState
|
|
14
|
+
export declare const AppearanceMenu: ({ appearance, setAppearance, offered, onShowKeys }: AppearanceState & {
|
|
15
|
+
/** Opens the list of the shell's keys, which a reader who turned them off reaches here. */
|
|
16
|
+
readonly onShowKeys: () => void;
|
|
17
|
+
}) => ReactNode;
|
|
@@ -21,11 +21,14 @@ const ICONS = {
|
|
|
21
21
|
*
|
|
22
22
|
* @param props - the appearance shown and its setter.
|
|
23
23
|
*/
|
|
24
|
-
export const AppearanceMenu = ({ appearance, setAppearance, offered }) => {
|
|
25
|
-
const { isOpen, isDrawn, setIsOpen, buttonRef, panelRef, panelId } = usePopover();
|
|
24
|
+
export const AppearanceMenu = ({ appearance, setAppearance, offered, onShowKeys }) => {
|
|
25
|
+
const { isOpen, isDrawn, setIsOpen, closeAfterChoice, buttonRef, panelRef, panelId } = usePopover();
|
|
26
26
|
const name = useId();
|
|
27
|
-
return (_jsxs("div", { className: "forgebook-appearance", children: [_jsxs("button", { ref: buttonRef, type: "button", className: "forgebook-button forgebook-button--quiet", "aria-expanded": isOpen, "aria-controls": panelId, onClick: (event) => setIsOpen(!isOpen, event), children: [_jsx(Icon, { name: ICONS[appearance], size: 14 }), STRINGS.appearanceOf(STRINGS.appearances[appearance])] }), isDrawn ? (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
return (_jsxs("div", { className: "forgebook-appearance", children: [_jsxs("button", { ref: buttonRef, type: "button", className: "forgebook-button forgebook-button--quiet", "aria-expanded": isOpen, "aria-controls": panelId, onClick: (event) => setIsOpen(!isOpen, event), children: [_jsx(Icon, { name: ICONS[appearance], size: 14 }), STRINGS.appearanceOf(STRINGS.appearances[appearance])] }), isDrawn ? (_jsxs("div", { ref: panelRef, id: panelId, className: "forgebook-popover forgebook-popover--up", role: "dialog", "aria-label": STRINGS.appearance, children: [_jsxs("fieldset", { className: "forgebook-choices", children: [_jsx("legend", { className: "forgebook-visually-hidden", children: STRINGS.appearance }), offered.map((each) => (_jsxs("label", { className: "forgebook-choice", children: [_jsx("input", { type: "radio", name: name, checked: each === appearance, onChange: () => {
|
|
28
|
+
setAppearance(each);
|
|
29
|
+
closeAfterChoice();
|
|
30
|
+
} }), _jsx(Icon, { name: ICONS[each], size: 14 }), STRINGS.appearances[each]] }, each)))] }), _jsx("button", { type: "button", className: "forgebook-button forgebook-button--quiet", onClick: (event) => {
|
|
31
|
+
setIsOpen(false, event);
|
|
32
|
+
onShowKeys();
|
|
33
|
+
}, children: STRINGS.keys })] })) : null] }));
|
|
31
34
|
};
|
|
@@ -20,6 +20,7 @@ import { findStory } from "../storyTree.js";
|
|
|
20
20
|
import { CodeText } from "./CodeText.js";
|
|
21
21
|
import { useCatalogue } from "./catalogueContext.js";
|
|
22
22
|
import { blockPlaces, catalogueValues, DocBlocks, queuedBlocks } from "./DocBlocks.js";
|
|
23
|
+
import { usePageWidth } from "./PageWidth.js";
|
|
23
24
|
import { PAGE_STRINGS } from "./pageStrings.js";
|
|
24
25
|
import { useLoaded } from "./useLoaded.js";
|
|
25
26
|
import { usePageFrames } from "./usePageFrames.js";
|
|
@@ -53,6 +54,7 @@ export const AuthoredHome = ({ load, title, plugins, tree, sources, recent, href
|
|
|
53
54
|
const places = useMemo(() => blockPlaces(content.blocks), [content.blocks]);
|
|
54
55
|
const values = useMemo(() => catalogueValues(title, tree), [title, tree]);
|
|
55
56
|
const frames = usePageFrames({ stories, queued, pageRef, view, touchOverrides });
|
|
57
|
+
const pageWidth = usePageWidth();
|
|
56
58
|
useScrollMemory(pageRef, scroll);
|
|
57
59
|
const openLink = useCallback((href) => {
|
|
58
60
|
if (href.startsWith("#")) {
|
|
@@ -84,7 +86,7 @@ export const AuthoredHome = ({ load, title, plugins, tree, sources, recent, href
|
|
|
84
86
|
plugins,
|
|
85
87
|
strings: catalogue.strings
|
|
86
88
|
};
|
|
87
|
-
return (_jsxs("div", { className: "forgebook-workspace", children: [header,
|
|
89
|
+
return (_jsxs("div", { className: "forgebook-workspace", children: [header, _jsxs("div", { ref: pageRef, className: "forgebook-scroll", children: [_jsx("div", { className: "forgebook-home__tools", children: pageWidth.toggle }), _jsxs("div", { ref: bodyRef, className: "forgebook-home forgebook-home--written", "data-page-width": pageWidth.width, children: [loaded.status === "loading" ? null : (_jsxs("header", { className: "forgebook-home__head", children: [_jsx("h1", { className: "forgebook-home__title", children: filledText(content.title ?? title, values) }), content.description === undefined ? null : (_jsx("p", { className: "forgebook-doc__lead", children: _jsx(CodeText, { text: filledText(content.description, values) }) }))] })), loaded.status === "error" ? (_jsxs("p", { className: "forgebook-problems", role: "alert", children: [PAGE_STRINGS.homeError, ": ", loaded.message] })) : null, _jsx(HomeNotes, { notes: content.notes }), _jsx(DocBlocks, { blocks: content.blocks, context: context })] })] })] }));
|
|
88
90
|
};
|
|
89
91
|
/**
|
|
90
92
|
* The written home as the shell draws it, its loader bound: what the page's entry hands the shell, so the shell's own
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The panel's Code tab: the story's `render` as written in its file, or, for a story drawn from its args, the
|
|
3
|
-
* component's JSX with the values of the moment (the story's and the Props
|
|
3
|
+
* component's JSX with the args its file writes as code and the values of the moment (the story's and the Props
|
|
4
|
+
* tab's), with a button that copies it. A value a custom control sets is written as the code its control's `toCode`
|
|
5
|
+
* gives (`icon={IconStar}`), its module loaded as the panel loads it.
|
|
4
6
|
*
|
|
5
7
|
* @module
|
|
6
8
|
*/
|
|
7
|
-
import type
|
|
8
|
-
import { type StoryCodeSource } from "
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import { type ReactNode } from "react";
|
|
10
|
+
import { type StoryCodeSource } from "../storyCodeText.ts";
|
|
11
|
+
import type { DockTabsInput } from "./dockTabs.tsx";
|
|
12
|
+
/** The tab's props: the story whose code it shows, and what the panel knows of its props. */
|
|
13
|
+
export type CodeTabProps = StoryCodeSource & {
|
|
14
|
+
/** The component's docs, the story's `argTypes` and the catalogue's custom controls; none writes every value as JSON. */
|
|
15
|
+
readonly panel?: Pick<DockTabsInput, "docs" | "argTypes" | "storyArgs" | "controls" | "argControls">;
|
|
16
|
+
};
|
|
11
17
|
/**
|
|
12
18
|
* The Code tab.
|
|
13
19
|
*
|
|
14
20
|
* @param props - the file's code, the story, the component's name and the args.
|
|
15
21
|
*/
|
|
16
|
-
export declare const CodeTab: (
|
|
22
|
+
export declare const CodeTab: (tab: CodeTabProps) => ReactNode;
|
|
@@ -1,17 +1,61 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The panel's Code tab: the story's `render` as written in its file, or, for a story drawn from its args, the
|
|
4
|
+
* component's JSX with the args its file writes as code and the values of the moment (the story's and the Props
|
|
5
|
+
* tab's), with a button that copies it. A value a custom control sets is written as the code its control's `toCode`
|
|
6
|
+
* gives (`icon={IconStar}`), its module loaded as the panel loads it.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { useEffect, useMemo, useState } from "react";
|
|
11
|
+
import { panelProps, settableProps } from "../argTypes.js";
|
|
12
|
+
import { controlCodeOf } from "../controlCode.js";
|
|
13
|
+
import { storyCodeText } from "../storyCodeText.js";
|
|
2
14
|
import { useCodeWriter } from "./codeWriter.js";
|
|
3
15
|
import { LATER_STRINGS } from "./laterStrings.js";
|
|
4
|
-
import {
|
|
16
|
+
import { hasRenderCode, StoryCodeBlock } from "./StoryCodeBlock.js";
|
|
5
17
|
import { STRINGS } from "./strings.js";
|
|
6
18
|
import { useCopy } from "./useCopy.js";
|
|
19
|
+
/**
|
|
20
|
+
* The code the story's custom controls write its values as, once their modules are loaded.
|
|
21
|
+
*
|
|
22
|
+
* @param props - the story and what the panel knows of its props.
|
|
23
|
+
*/
|
|
24
|
+
const useArgCode = ({ panel, args }) => {
|
|
25
|
+
const props = useMemo(() => panel === undefined || panel.docs.status !== "ready"
|
|
26
|
+
? []
|
|
27
|
+
: settableProps(panelProps(panel.docs.value.props, panel.argTypes, panel.storyArgs), panel.controls, {}), [panel]);
|
|
28
|
+
const names = [...new Set(props.flatMap((prop) => prop.customControl ?? []))].join("\n");
|
|
29
|
+
const [coders, setCoders] = useState({});
|
|
30
|
+
const loaders = panel?.argControls;
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (names === "" || loaders === undefined)
|
|
33
|
+
return;
|
|
34
|
+
let isCurrent = true;
|
|
35
|
+
void import("./customControls.js")
|
|
36
|
+
.then(({ loadControl }) => Promise.all(names.split("\n").map(async (name) => [name, await loadControl(name, loaders)])))
|
|
37
|
+
.then((loaded) => {
|
|
38
|
+
if (!isCurrent)
|
|
39
|
+
return;
|
|
40
|
+
setCoders(Object.fromEntries(loaded.flatMap(([name, control]) => control.status === "ready" ? [[name, control.module.toCode]] : [])));
|
|
41
|
+
});
|
|
42
|
+
return () => {
|
|
43
|
+
isCurrent = false;
|
|
44
|
+
};
|
|
45
|
+
}, [names, loaders]);
|
|
46
|
+
return useMemo(() => controlCodeOf(props, args, coders), [props, args, coders]);
|
|
47
|
+
};
|
|
7
48
|
/**
|
|
8
49
|
* The Code tab.
|
|
9
50
|
*
|
|
10
51
|
* @param props - the file's code, the story, the component's name and the args.
|
|
11
52
|
*/
|
|
12
|
-
export const CodeTab = (
|
|
53
|
+
export const CodeTab = (tab) => {
|
|
13
54
|
const { isCopied, copy } = useCopy();
|
|
14
55
|
const write = useCodeWriter();
|
|
15
|
-
const
|
|
56
|
+
const argCode = useArgCode(tab);
|
|
57
|
+
const { panel: _panel, ...source } = tab;
|
|
58
|
+
const props = { ...source, argCode };
|
|
59
|
+
const hasRender = hasRenderCode(props);
|
|
16
60
|
return (_jsxs("div", { className: "forgebook-prop-group", children: [_jsxs("div", { className: "forgebook-calls__head", children: [_jsx("h3", { className: "forgebook-prop-group__title", children: hasRender ? LATER_STRINGS.codeRender : LATER_STRINGS.codeFromArgs }), _jsx("button", { type: "button", className: "forgebook-text-button", onClick: () => copy(storyCodeText(props, write)), "aria-live": "polite", children: isCopied ? STRINGS.copied : LATER_STRINGS.copy })] }), _jsx(StoryCodeBlock, { ...props })] }));
|
|
17
61
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A TSDoc or Markdown sentence with its code spans shown as code: what is between backticks (as `href` is written in
|
|
3
|
-
* a TSDoc) is set in the code face, the rest stays text.
|
|
3
|
+
* a TSDoc) is set in the code face, the rest stays text. Spans are read as CommonMark reads them (`codeSpans.ts`).
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { sentencePieces } from "./codeSpans.js";
|
|
2
3
|
/**
|
|
3
4
|
* A sentence, its backtick spans as code.
|
|
4
5
|
*
|
|
5
6
|
* @param props - the sentence.
|
|
6
7
|
*/
|
|
7
|
-
export const CodeText = ({ text }) =>
|
|
8
|
-
// a split on the backticks alternates text and code: the odd pieces were between backticks
|
|
9
|
-
text.split("`").map((piece, index) => index % 2 === 1 ? (_jsx("code", { className: "forgebook-inline-code", children: piece }, index)) : (piece));
|
|
8
|
+
export const CodeText = ({ text }) => sentencePieces(text).map((piece, index) => piece.isCode ? (_jsx("code", { className: "forgebook-inline-code", children: piece.text }, index)) : (piece.text));
|
|
@@ -14,7 +14,7 @@ export const CompareGrid = ({ story, title, view, frameUrl, framed, heights, set
|
|
|
14
14
|
const catalogue = useCatalogue();
|
|
15
15
|
const { switches } = catalogue;
|
|
16
16
|
const isSystemDark = useSystemDark();
|
|
17
|
-
return (_jsx("div", { className: "forgebook-compare", ...framed?.parts.compareGridProps(framed.drawing), children: compareVariants(view.compare, catalogue).map((variant) => {
|
|
17
|
+
return (_jsx("div", { className: "forgebook-compare", ...framed?.parts.compareGridProps(framed.drawing), children: compareVariants(view.compare, catalogue, view).map((variant) => {
|
|
18
18
|
const cellView = variant.viewOf(view);
|
|
19
19
|
// the label (the shell's text) reads on the page's colour, or on the shell's around a device, whose screen
|
|
20
20
|
// has it; the frame draws the backdrop
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A component's page, as a library documents a component: what it is, its demo (the story marked `main`) with
|
|
2
|
+
* A component's page, as a library documents a component: its status, what it is, its demo (the story marked `main`) with
|
|
3
3
|
* its code, the text of its documentation file, its API reference drawn from its types, then every other story as an
|
|
4
4
|
* example.
|
|
5
5
|
*
|
|
6
6
|
* @remarks
|
|
7
|
-
* The frames load a few at a time (`useFrameQueue`),
|
|
8
|
-
*
|
|
7
|
+
* The frames load a few at a time (`useFrameQueue`), each as it comes near the visible part of the page, the nearest
|
|
8
|
+
* first and the demo first among those in view: a component may have a hundred stories. The view's live part reaches every frame as a message, as
|
|
9
9
|
* on the story page; the props panel and Replay belong to a story's own page, which each story's name links to. The
|
|
10
10
|
* documentation file's HTML is the package's own, made at build time (`vite/componentPage.ts`). Who reads the page
|
|
11
11
|
* reorders and filters what goes around the frames (`audienceLayout.ts`); what only one audience wants loads on first use,
|
|
@@ -51,8 +51,8 @@ export type ComponentPageProps = {
|
|
|
51
51
|
readonly heightOf: (storyId: string) => number | undefined;
|
|
52
52
|
/** The colour the stories' page has in the view (their source's), which each box waits on; none without one. */
|
|
53
53
|
readonly background: string | undefined;
|
|
54
|
-
/** What stays above the page while it scrolls: the component's header. */
|
|
55
|
-
readonly
|
|
54
|
+
/** What stays above the page while it scrolls: the component's header, with the page's tools beside its picker. */
|
|
55
|
+
readonly headerWith: (tools: ReactNode) => ReactNode;
|
|
56
56
|
/** Where its scrolling part starts: the shell's visit of the page and every page's last position. */
|
|
57
57
|
readonly scroll: PageScroll;
|
|
58
58
|
/** What "Used in" reads and opens; none when the catalogue turned it off. */
|
|
@@ -97,4 +97,4 @@ export declare const PageApi: ({ docs, isLogic, componentGroups, requiredFirst }
|
|
|
97
97
|
*
|
|
98
98
|
* @param props - the component, the view, its loaders and how to open a story.
|
|
99
99
|
*/
|
|
100
|
-
export declare const ComponentPage: ({ component, anchor, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background,
|
|
100
|
+
export declare const ComponentPage: ({ component, anchor, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, headerWith, scroll, usedIn, onViewChange, tree, componentId, pageHrefOf, onOpenPage, loadTokens }: ComponentPageProps) => ReactNode;
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { lazy, Suspense, useEffect, useMemo, useRef } from "react";
|
|
3
3
|
import { groupLabel } from "../catalogue.js";
|
|
4
4
|
import { codeNameOf } from "../componentDocs.js";
|
|
5
|
+
import { hasFilterTags } from "../storyTagNames.js";
|
|
5
6
|
import { groupedStories, isLogicComponent, mainStory } from "../storyTree.js";
|
|
6
7
|
import { usageLoader } from "../usedIn.js";
|
|
7
8
|
import { viewParams } from "../viewState.js";
|
|
@@ -13,6 +14,8 @@ import { Example } from "./Example.js";
|
|
|
13
14
|
import { LATER_STRINGS } from "./laterStrings.js";
|
|
14
15
|
import { LazyView, lazyModule } from "./lazyModule.js";
|
|
15
16
|
import { PackageHtml } from "./PackageHtml.js";
|
|
17
|
+
import { usePageWidth } from "./PageWidth.js";
|
|
18
|
+
import { PageTagView } from "./pageTagView.js";
|
|
16
19
|
import { UsedIn } from "./UsedIn.js";
|
|
17
20
|
import { useComponentDocs } from "./useComponentDocs.js";
|
|
18
21
|
import { usePageDoc } from "./usePageDoc.js";
|
|
@@ -89,14 +92,17 @@ export const PageApi = ({ docs, isLogic, componentGroups, requiredFirst }) => do
|
|
|
89
92
|
*
|
|
90
93
|
* @param props - the component, the view, its loaders and how to open a story.
|
|
91
94
|
*/
|
|
92
|
-
export const ComponentPage = ({ component, anchor, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background,
|
|
95
|
+
export const ComponentPage = ({ component, anchor, view, touchOverrides, onTouchChange, frameUrl, hrefOf, onOpen, loadDocs, loadCode, loadPage, heightOf, background, headerWith, scroll, usedIn, onViewChange, tree, componentId, pageHrefOf, onOpenPage, loadTokens }) => {
|
|
93
96
|
const pageRef = useRef(null);
|
|
94
97
|
const docs = useComponentDocs(loadDocs);
|
|
95
98
|
const code = useStoryCode(loadCode);
|
|
96
99
|
const page = usePageDoc(loadPage);
|
|
100
|
+
const pageWidth = usePageWidth();
|
|
97
101
|
const demo = mainStory(component);
|
|
98
102
|
const examples = useMemo(() => component.stories.filter((story) => story.id !== demo?.id), [component, demo]);
|
|
99
103
|
const catalogue = useCatalogue();
|
|
104
|
+
// statuses are tags: a catalogue with none draws none, and loads nothing for them
|
|
105
|
+
const hasTags = useMemo(() => hasFilterTags(tree), [tree]);
|
|
100
106
|
// the demo first in the queue, at the top of the page, and counted in it: a frame of a library served as source asks
|
|
101
107
|
// for thousands of modules, and one more beside those the queue allows makes the browser refuse some of them
|
|
102
108
|
const queued = useMemo(() => [...(demo === undefined ? [] : [demo.id]), ...examples.map((story) => story.id)], [demo, examples]);
|
|
@@ -159,5 +165,5 @@ export const ComponentPage = ({ component, anchor, view, touchOverrides, onTouch
|
|
|
159
165
|
usedIn,
|
|
160
166
|
pageRef
|
|
161
167
|
};
|
|
162
|
-
return (_jsxs("div", { className: "forgebook-workspace", children: [
|
|
168
|
+
return (_jsxs("div", { className: "forgebook-workspace", children: [headerWith(pageWidth.toggle), anchor === undefined ? null : (_jsx(Suspense, { fallback: null, children: _jsx(AnchorScroll, { pageRef: pageRef, anchor: anchor, visit: scroll.visit, isReady: docs.status !== "loading" && page.status !== "loading" }) })), _jsx("div", { ref: pageRef, className: "forgebook-scroll", children: _jsxs("div", { className: "forgebook-doc", "data-audience": view.audience === "everyone" ? undefined : view.audience, "data-page-width": pageWidth.width, children: [hasTags ? _jsx(PageTagView, { place: "page", component: component, loadDocs: loadDocs }) : null, _jsx(AudienceSlot, { place: "beforeDemo", audience: audienceProps, children: _jsx(Lead, { page: page, docs: componentDocs }) }), demo === undefined ? null : (_jsx(Example, { ...context, story: demo, isDemo: true, isMounted: queue.mounted.has(demo.id), observe: queue.observerOf(demo.id) })), _jsxs(AudienceSlot, { place: "afterDemo", audience: audienceProps, children: [_jsx(Prose, { page: page }), _jsx(PageApi, { docs: componentDocs, isLogic: isLogic, componentGroups: component.propGroups, requiredFirst: component.requiredFirst })] }), examples.length === 0 ? null : (_jsxs("section", { className: "forgebook-doc__section", "aria-labelledby": "forgebook-examples", children: [_jsx("h2", { id: "forgebook-examples", children: LATER_STRINGS.examples }), groupedStories(examples, catalogue.storyGroups.map((group) => group.id)).map((section) => (_jsxs("section", { className: "forgebook-doc__group", children: [section.group === undefined ? null : (_jsx("h3", { className: "forgebook-doc__group-name", children: groupLabel(catalogue.storyGroups, section.group) })), section.stories.map((story) => (_jsx(Example, { ...context, story: story, isDemo: false, titleTag: section.group === undefined ? "h3" : "h4", isMounted: queue.mounted.has(story.id), observe: queue.observerOf(story.id) }, story.id)))] }, section.group ?? "")))] })), _jsx(AudienceSlot, { place: "afterExamples", audience: audienceProps, children: usedIn === undefined ? null : _jsx(UsedIn, { title: component.title, ...usedIn }) })] }, `${component.file}|${component.title}`) })] }));
|
|
163
169
|
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The element a custom control draws in, and what stands between it and the panel: its value checked both ways, and its
|
|
3
|
+
* failures kept beside the field. Loaded with the first story that names such a control.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The control keeps what it draws: mounting it again on each of its own changes would take the focus out of it. So it is
|
|
7
|
+
* mounted again only when the value differs from the one it last gave, which is a change from outside (Reset, a link). An error it throws later, in its own event handler, is out of reach here: the page's own, as a plugin's.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { type ReactNode } from "react";
|
|
12
|
+
import type { PanelProp } from "../argTypes.ts";
|
|
13
|
+
import { type ArgValue } from "../messages.ts";
|
|
14
|
+
import { type ArgControlLoaders } from "./customControls.ts";
|
|
15
|
+
import type { OnValueChange } from "./PropFields.tsx";
|
|
16
|
+
/** The host's props. */
|
|
17
|
+
export type CustomControlProps = {
|
|
18
|
+
/** The prop. */
|
|
19
|
+
readonly prop: PanelProp;
|
|
20
|
+
/** The name of the control it asks for. */
|
|
21
|
+
readonly name: string;
|
|
22
|
+
/** Its value. */
|
|
23
|
+
readonly value: ArgValue | undefined;
|
|
24
|
+
/** The catalogue's custom controls. */
|
|
25
|
+
readonly loaders: ArgControlLoaders;
|
|
26
|
+
/** Called with a changed value. */
|
|
27
|
+
readonly onValueChange: OnValueChange;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* A custom control, or why there is none.
|
|
31
|
+
*
|
|
32
|
+
* @param props - the prop, the control's name, its value, and the catalogue's controls.
|
|
33
|
+
*/
|
|
34
|
+
export declare const CustomControl: ({ loaders, ...props }: CustomControlProps) => ReactNode;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The element a custom control draws in, and what stands between it and the panel: its value checked both ways, and its
|
|
4
|
+
* failures kept beside the field. Loaded with the first story that names such a control.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The control keeps what it draws: mounting it again on each of its own changes would take the focus out of it. So it is
|
|
8
|
+
* mounted again only when the value differs from the one it last gave, which is a change from outside (Reset, a link). An error it throws later, in its own event handler, is out of reach here: the page's own, as a plugin's.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
13
|
+
import { controlArgTypeOf } from "../controlCode.js";
|
|
14
|
+
import { isArgValue, UNSET_ARG } from "../messages.js";
|
|
15
|
+
import { useCatalogue } from "./catalogueContext.js";
|
|
16
|
+
import { CONTROL_STRINGS, controlStringsOf, controlValueProblem, loadControl } from "./customControls.js";
|
|
17
|
+
/** The value as text, to tell whether it is still the one the control gave. */
|
|
18
|
+
const textOf = (value) => JSON.stringify(value) ?? "";
|
|
19
|
+
/** A value a control gave, checked: what to send, or what is wrong with it. */
|
|
20
|
+
const checkedChange = (module, next) => {
|
|
21
|
+
if (next === undefined)
|
|
22
|
+
return { value: undefined };
|
|
23
|
+
if (!isArgValue(next))
|
|
24
|
+
return { problem: "not plain JSON" };
|
|
25
|
+
const problem = controlValueProblem(module, next);
|
|
26
|
+
return problem === undefined ? { value: next } : { problem };
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The element one mount of a control draws in. It is given a new key for each mount, so nothing it holds outlives one.
|
|
30
|
+
*
|
|
31
|
+
* @param props - the module, the value it starts from, and what it reports to.
|
|
32
|
+
*/
|
|
33
|
+
const ControlRoom = ({ module, name, value, argType, strings, onAccepted, onProblem }) => {
|
|
34
|
+
const element = useRef(null);
|
|
35
|
+
const start = useRef({ value, argType, strings, onAccepted, onProblem });
|
|
36
|
+
start.current = { value, argType, strings, onAccepted, onProblem };
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
const host = element.current;
|
|
39
|
+
if (host === null)
|
|
40
|
+
return;
|
|
41
|
+
const { value: shown, argType: told, strings: words, onProblem: say } = start.current;
|
|
42
|
+
const refusal = shown === undefined ? undefined : controlValueProblem(module, shown);
|
|
43
|
+
say(refusal === undefined ? undefined : CONTROL_STRINGS.controlValue(name, refusal));
|
|
44
|
+
let isMounted = true;
|
|
45
|
+
let unmount;
|
|
46
|
+
try {
|
|
47
|
+
unmount = module.mount(host, {
|
|
48
|
+
// what does not fit never reaches a control that wrote its schema so as not to expect it
|
|
49
|
+
value: refusal === undefined ? shown : undefined,
|
|
50
|
+
onChange: (next) => {
|
|
51
|
+
if (!isMounted)
|
|
52
|
+
return;
|
|
53
|
+
const change = checkedChange(module, next);
|
|
54
|
+
if ("problem" in change)
|
|
55
|
+
start.current.onProblem(CONTROL_STRINGS.controlValue(name, change.problem));
|
|
56
|
+
else {
|
|
57
|
+
start.current.onProblem(undefined);
|
|
58
|
+
start.current.onAccepted(change.value);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
argType: told,
|
|
62
|
+
strings: words
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
say(CONTROL_STRINGS.controlThrew(name, error instanceof Error ? error.message : String(error)));
|
|
67
|
+
}
|
|
68
|
+
return () => {
|
|
69
|
+
isMounted = false;
|
|
70
|
+
// after this commit: a control written in React cannot take its own root away while the shell's is rendering
|
|
71
|
+
queueMicrotask(() => {
|
|
72
|
+
try {
|
|
73
|
+
if (typeof unmount === "function")
|
|
74
|
+
unmount();
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// it is leaving: there is no field left to say so beside, and the next mount says what is still wrong
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
}, [module, name]);
|
|
82
|
+
return _jsx("div", { ref: element, className: "forgebook-custom-control", "data-control": name });
|
|
83
|
+
};
|
|
84
|
+
/** A loaded control, and what it last said. */
|
|
85
|
+
const MountedControl = ({ module, prop, name, value, onValueChange }) => {
|
|
86
|
+
const [problem, setProblem] = useState(undefined);
|
|
87
|
+
const given = useRef(textOf(value));
|
|
88
|
+
// counts the changes from outside: each is a new mount, which reads the value of its moment
|
|
89
|
+
const [mounts, setMounts] = useState(0);
|
|
90
|
+
if (textOf(value) !== given.current) {
|
|
91
|
+
given.current = textOf(value);
|
|
92
|
+
setMounts(mounts + 1);
|
|
93
|
+
}
|
|
94
|
+
const argType = controlArgTypeOf(prop);
|
|
95
|
+
const { strings: catalogueStrings } = useCatalogue();
|
|
96
|
+
const strings = useMemo(() => controlStringsOf(catalogueStrings, name), [catalogueStrings, name]);
|
|
97
|
+
return (_jsxs(_Fragment, { children: [_jsx(ControlRoom, { module: module, name: name, value: value, argType: argType, strings: strings, onProblem: setProblem, onAccepted: (next) => {
|
|
98
|
+
given.current = textOf(next);
|
|
99
|
+
onValueChange(prop.name, next ?? UNSET_ARG);
|
|
100
|
+
} }, `${mounts}|${JSON.stringify(argType)}`), problem === undefined ? null : (_jsx("p", { className: "forgebook-prop__description forgebook-prop__problem", role: "alert", children: problem }))] }));
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* A custom control, or why there is none.
|
|
104
|
+
*
|
|
105
|
+
* @param props - the prop, the control's name, its value, and the catalogue's controls.
|
|
106
|
+
*/
|
|
107
|
+
export const CustomControl = ({ loaders, ...props }) => {
|
|
108
|
+
const [loaded, setLoaded] = useState(undefined);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
let isCurrent = true;
|
|
111
|
+
void loadControl(props.name, loaders).then((control) => {
|
|
112
|
+
if (isCurrent)
|
|
113
|
+
setLoaded(control);
|
|
114
|
+
});
|
|
115
|
+
return () => {
|
|
116
|
+
isCurrent = false;
|
|
117
|
+
};
|
|
118
|
+
}, [props.name, loaders]);
|
|
119
|
+
if (loaded === undefined)
|
|
120
|
+
return null;
|
|
121
|
+
if (loaded.status === "failed") {
|
|
122
|
+
return (_jsx("p", { className: "forgebook-prop__description forgebook-prop__problem", role: "alert", children: loaded.message }));
|
|
123
|
+
}
|
|
124
|
+
return _jsx(MountedControl, { ...props, module: loaded.module });
|
|
125
|
+
};
|
|
@@ -22,7 +22,7 @@ import { useSyncedTab } from "./useSyncedTab.js";
|
|
|
22
22
|
*/
|
|
23
23
|
export const AsideBlock = ({ tone, title, children }) => {
|
|
24
24
|
const id = useId();
|
|
25
|
-
return (_jsxs("aside", { className: "forgebook-aside", "data-tone": tone, "aria-labelledby": id, children: [_jsx("p", { id: id, className: "forgebook-aside__title", children: title ?? PAGE_STRINGS.asides[tone] }), children] }));
|
|
25
|
+
return (_jsxs("aside", { className: "forgebook-aside", role: "note", "data-tone": tone, "aria-labelledby": id, children: [_jsx("p", { id: id, className: "forgebook-aside__title", children: title ?? PAGE_STRINGS.asides[tone] }), children] }));
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
28
|
* The tab a key moves to in a tab list: the next or the one before, round the ends, or the first or the last.
|
|
@@ -21,8 +21,8 @@ import { useCatalogue } from "./catalogueContext.js";
|
|
|
21
21
|
import { blockPlaces, catalogueValues, DocBlocks, queuedBlocks } from "./DocBlocks.js";
|
|
22
22
|
import { DocContents } from "./DocContents.js";
|
|
23
23
|
import { Icon } from "./icons.js";
|
|
24
|
+
import { LATER_STRINGS } from "./laterStrings.js";
|
|
24
25
|
import { PAGE_STRINGS } from "./pageStrings.js";
|
|
25
|
-
import { STRINGS } from "./strings.js";
|
|
26
26
|
import { useAnchorScroll } from "./useAnchorScroll.js";
|
|
27
27
|
import { useLoaded } from "./useLoaded.js";
|
|
28
28
|
import { usePageFrames } from "./usePageFrames.js";
|
|
@@ -58,7 +58,7 @@ const PageFoot = ({ previous, next, hrefOf, onOpen }) => {
|
|
|
58
58
|
event.preventDefault();
|
|
59
59
|
onOpen(page.id);
|
|
60
60
|
}, children: [_jsx("span", { className: "forgebook-docs__around-label", children: label }), _jsxs("span", { className: "forgebook-docs__around-name", children: [page.name, side === "next" ? _jsx(Icon, { name: "chevronRight", size: 12 }) : null] })] }));
|
|
61
|
-
return previous === undefined && next === undefined ? null : (_jsxs("nav", { className: "forgebook-docs__foot", "aria-label":
|
|
61
|
+
return previous === undefined && next === undefined ? null : (_jsxs("nav", { className: "forgebook-docs__foot", "aria-label": LATER_STRINGS.docsNav, children: [link(previous, PAGE_STRINGS.previousPage, "previous"), link(next, PAGE_STRINGS.nextPage, "next")] }));
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
64
|
* The page's width, followed as the window or the sidebar changes it.
|
|
@@ -15,8 +15,8 @@ import type { DroppedArg } from "../addressArgs.ts";
|
|
|
15
15
|
export type DroppedArgsListProps = {
|
|
16
16
|
/** The values left out. */
|
|
17
17
|
readonly dropped: readonly DroppedArg[];
|
|
18
|
-
/** Removes them from the address. */
|
|
19
|
-
readonly onRemove
|
|
18
|
+
/** Removes them from the address; none where nothing can rewrite it (an embed's is its author's). */
|
|
19
|
+
readonly onRemove?: () => void;
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
22
|
* The note.
|
|
@@ -5,4 +5,4 @@ import { LATER_STRINGS } from "./laterStrings.js";
|
|
|
5
5
|
*
|
|
6
6
|
* @param props - the values left out and the remover.
|
|
7
7
|
*/
|
|
8
|
-
export const DroppedArgsList = ({ dropped, onRemove }) => (_jsxs("div", { className: "forgebook-dropped-args", role: "status", children: [_jsx("p", { className: "forgebook-dropped-args__text", children: LATER_STRINGS.droppedArgs }), _jsx("ul", { className: "forgebook-dropped-args__list", children: dropped.map(({ name, reason }) => (_jsxs("li", { children: [_jsx("code", { children: name }), " ", LATER_STRINGS.droppedArgReasons[reason]] }, name))) }), _jsx("button", { type: "button", className: "forgebook-text-button", onClick: onRemove, children: LATER_STRINGS.removeDroppedArgs })] }));
|
|
8
|
+
export const DroppedArgsList = ({ dropped, onRemove }) => (_jsxs("div", { className: "forgebook-dropped-args", role: "status", children: [_jsx("p", { className: "forgebook-dropped-args__text", children: LATER_STRINGS.droppedArgs }), _jsx("ul", { className: "forgebook-dropped-args__list", children: dropped.map(({ name, reason }) => (_jsxs("li", { children: [_jsx("code", { children: name }), " ", LATER_STRINGS.droppedArgReasons[reason]] }, name))) }), onRemove === undefined ? null : (_jsx("button", { type: "button", className: "forgebook-text-button", onClick: onRemove, children: LATER_STRINGS.removeDroppedArgs }))] }));
|