forgebook 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +914 -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 +175 -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 +57 -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 +90 -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 +196 -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 +297 -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 +100 -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 +66 -184
- 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 +71 -0
- package/dist/src/componentDocs.js +15 -2
- 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/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 +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- 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/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- 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 +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -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 +16 -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/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 +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- 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 +137 -22
- 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/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 +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- 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 +29 -0
- package/dist/src/shell/laterStrings.js +42 -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 +348 -168
- 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/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/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 +147 -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 +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -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 +347 -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 +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -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/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 +15 -3
- 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 +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -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 +52 -72
- 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 +108 -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 +130 -58
- 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/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
package/dist/src/shell/Shell.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { readArgsParam, readStorybookLink } from "../addressArgsParam.js";
|
|
4
|
+
import { addressArgsRead } from "../addressTexts.js";
|
|
4
5
|
import { deviceDefaultOf, pageDeviceDefault } from "../deviceView.js";
|
|
5
|
-
import { panelArgsParam
|
|
6
|
+
import { panelArgsParam } from "../messages.js";
|
|
6
7
|
import { anchorOf } from "../pageAddress.js";
|
|
7
8
|
import { findPage } from "../pageTree.js";
|
|
8
9
|
import { sourceFiles } from "../sourceFiles.js";
|
|
9
10
|
import { storyBackground } from "../storyBackground.js";
|
|
10
11
|
import { NOT_FIXED } from "../storyGlobals.js";
|
|
11
12
|
import { knownHeight } from "../storyHeights.js";
|
|
12
|
-
import { componentId, findComponent, findComponentByTitle, findStory, isLogicComponent, sidebarStoryIds, storyTree } from "../storyTree.js";
|
|
13
|
+
import { componentId, findComponent, findComponentByTitle, findStory, isLogicComponent, sidebarStoryIds, storyOfAddress, storyTree } from "../storyTree.js";
|
|
13
14
|
import { parseView, viewParams } from "../viewState.js";
|
|
14
15
|
import { CatalogueContext, NO_PLUGINS, useCatalogue, useConfiguredCatalogue } from "./catalogueContext.js";
|
|
16
|
+
import { HAS_REFS, shellRefs } from "./composition.js";
|
|
15
17
|
import { filesCodeLoader } from "./filesCode.js";
|
|
16
18
|
import { Icon } from "./icons.js";
|
|
17
19
|
import { LazyPage } from "./LazyPage.js";
|
|
@@ -19,16 +21,20 @@ import { LogicMark } from "./LogicMark.js";
|
|
|
19
21
|
import { lazyModule } from "./lazyModule.js";
|
|
20
22
|
import { PluginHostsContext } from "./pluginHostsContext.js";
|
|
21
23
|
import { Sidebar } from "./Sidebar.js";
|
|
22
|
-
import {
|
|
24
|
+
import { SidebarShade } from "./SidebarHandle.js";
|
|
23
25
|
import { Stage } from "./Stage.js";
|
|
24
26
|
import { StoryPicker } from "./StoryPicker.js";
|
|
25
27
|
import { STRINGS } from "./strings.js";
|
|
26
28
|
import { ShowSidebarButton, Toolbar } from "./Toolbar.js";
|
|
27
29
|
import { useAppearance } from "./useAppearance.js";
|
|
30
|
+
import { useEditedProblems } from "./useEditedProblems.js";
|
|
31
|
+
import { useListedTree } from "./useListedTree.js";
|
|
28
32
|
import { useRecentPages } from "./useRecentPages.js";
|
|
33
|
+
import { useShortcutHelp } from "./useShortcutHelp.js";
|
|
29
34
|
import { useShownView } from "./useShownView.js";
|
|
30
35
|
import { useSidebarLayout } from "./useSidebarLayout.js";
|
|
31
36
|
import { useSidebarOverlay } from "./useSidebarOverlay.js";
|
|
37
|
+
import { readStored } from "./useStored.js";
|
|
32
38
|
import { useStoryHeights } from "./useStoryHeights.js";
|
|
33
39
|
import { useStoryIdsElement } from "./useStoryIdsElement.js";
|
|
34
40
|
import { useStoryKeys } from "./useStoryKeys.js";
|
|
@@ -37,6 +43,15 @@ import { useSystemDark } from "./useSystemDark.js";
|
|
|
37
43
|
const DOC_PAGE = lazyModule(() => import("./DocPage.js").then((module) => module.DocPage));
|
|
38
44
|
/** The home, loaded when it is opened. */
|
|
39
45
|
const HOME_PAGE = lazyModule(() => import("./HomePage.js").then((module) => module.HomePage));
|
|
46
|
+
/** The address's parameter that names a composed catalogue; its story is in `story`, as a story of this one's is. */
|
|
47
|
+
const REF_PARAMETER = "ref";
|
|
48
|
+
/**
|
|
49
|
+
* A part of the composed catalogues, once its module is there; nothing for a catalogue that composes none, or on a page
|
|
50
|
+
* that shows none of their stories.
|
|
51
|
+
*
|
|
52
|
+
* @param props - the module, if any, and the part's props; none when there is nothing to draw.
|
|
53
|
+
*/
|
|
54
|
+
const RefSlot = ({ refs, part }) => refs === undefined || part === undefined ? null : (_jsx(LazyPage, { module: refsModuleOf(refs), header: null, pageProps: part }));
|
|
40
55
|
/** A component's page, loaded when one is opened. */
|
|
41
56
|
const COMPONENT_PAGE = lazyModule(() => import("./ComponentPage.js").then((module) => module.ComponentPage));
|
|
42
57
|
/**
|
|
@@ -51,6 +66,8 @@ const HOME = { kind: "home" };
|
|
|
51
66
|
const pageKey = (page) => {
|
|
52
67
|
if (page.kind === "home")
|
|
53
68
|
return page.kind;
|
|
69
|
+
if (HAS_REFS && page.kind === "ref")
|
|
70
|
+
return `ref:${page.ref}/${page.id}`;
|
|
54
71
|
// a heading is a place of its own in the history: Back from it returns to where the reader was
|
|
55
72
|
return page.kind === "story" ? `story:${page.id}` : `${page.kind}:${page.id}#${page.anchor ?? ""}`;
|
|
56
73
|
};
|
|
@@ -85,16 +102,20 @@ const drawnWidth = (width, fill) => (width === "fill" ? fill : width);
|
|
|
85
102
|
*/
|
|
86
103
|
const stageHeight = (heights, storyId, width, shownWidth) => knownHeight(heights, storyId, drawnWidth(width, shownWidth ?? FILL_WIDTH));
|
|
87
104
|
/**
|
|
88
|
-
* The page an address's query and fragment name: a story wins, then a component,
|
|
105
|
+
* The page an address's query and fragment name: a composed catalogue's story wins, then a story, a component, a docs
|
|
106
|
+
* page; none is the home.
|
|
89
107
|
*
|
|
90
108
|
* @param search - the address's query.
|
|
91
109
|
* @param hash - its fragment.
|
|
92
110
|
*/
|
|
93
111
|
const pageOf = (search, hash) => {
|
|
94
112
|
const params = new URLSearchParams(search);
|
|
95
|
-
const story = params
|
|
113
|
+
const story = storyOfAddress(params);
|
|
96
114
|
const component = params.get("component");
|
|
97
115
|
const page = params.get("page");
|
|
116
|
+
const ref = HAS_REFS ? params.get(REF_PARAMETER) : null;
|
|
117
|
+
if (ref !== null && story !== null)
|
|
118
|
+
return { kind: "ref", ref, id: story };
|
|
98
119
|
if (story !== null)
|
|
99
120
|
return { kind: "story", id: story };
|
|
100
121
|
const anchor = anchorOf(hash.replace(/^#/, ""));
|
|
@@ -112,32 +133,50 @@ const pageOf = (search, hash) => {
|
|
|
112
133
|
*/
|
|
113
134
|
const readAddress = (catalogue, addressTexts) => {
|
|
114
135
|
const params = new URLSearchParams(window.location.search);
|
|
136
|
+
const param = params.get("args");
|
|
115
137
|
return {
|
|
116
138
|
page: pageOf(window.location.search, window.location.hash),
|
|
117
139
|
view: parseView(window.location.search, catalogue),
|
|
118
|
-
|
|
119
|
-
matrix: (params.get("matrix") ?? "").split(",").filter((name) => name !== "")
|
|
140
|
+
...addressArgsRead(readArgsParam(param), param, addressTexts),
|
|
141
|
+
matrix: (params.get("matrix") ?? "").split(",").filter((name) => name !== ""),
|
|
142
|
+
tags: params.getAll("tag").filter((tag) => tag !== "" && tag !== "!")
|
|
120
143
|
};
|
|
121
144
|
};
|
|
145
|
+
/**
|
|
146
|
+
* Writes a composed catalogue's story into an address's parameters; nothing for another page.
|
|
147
|
+
*
|
|
148
|
+
* @param params - the parameters.
|
|
149
|
+
* @param page - the page.
|
|
150
|
+
*/
|
|
151
|
+
const writeRefPage = (params, page) => {
|
|
152
|
+
if (page.kind !== "ref")
|
|
153
|
+
return;
|
|
154
|
+
params.set(REF_PARAMETER, page.ref);
|
|
155
|
+
params.set("story", page.id);
|
|
156
|
+
};
|
|
122
157
|
/**
|
|
123
158
|
* The query of an address.
|
|
124
159
|
*
|
|
125
160
|
* @param address - the page, the view, the panel's values and the matrix's axes.
|
|
126
161
|
* @param catalogue - the catalogue's switches and default audience, for the view's values.
|
|
127
162
|
*/
|
|
128
|
-
const addressQuery = ({ page, view, panelArgs, matrix }, catalogue) => {
|
|
129
|
-
const params = viewParams(view, catalogue.switches, catalogue.audience);
|
|
163
|
+
const addressQuery = ({ page, view, panelArgs, link, matrix, tags }, catalogue) => {
|
|
164
|
+
const params = viewParams(view, catalogue.switches, catalogue.audience, catalogue.play);
|
|
165
|
+
if (HAS_REFS)
|
|
166
|
+
writeRefPage(params, page);
|
|
130
167
|
if (page.kind === "story")
|
|
131
168
|
params.set("story", page.id);
|
|
132
169
|
if (page.kind === "component")
|
|
133
170
|
params.set("component", page.id);
|
|
134
171
|
if (page.kind === "page")
|
|
135
172
|
params.set("page", page.id);
|
|
136
|
-
const args = page.kind === "story" ? panelArgsParam(panelArgs) : "";
|
|
173
|
+
const args = page.kind === "story" ? (link?.param ?? panelArgsParam(panelArgs)) : "";
|
|
137
174
|
if (args !== "")
|
|
138
175
|
params.set("args", args);
|
|
139
176
|
if (page.kind === "story" && matrix.length > 0)
|
|
140
177
|
params.set("matrix", matrix.join(","));
|
|
178
|
+
for (const tag of tags)
|
|
179
|
+
params.append("tag", tag);
|
|
141
180
|
const query = params.toString();
|
|
142
181
|
// the fragment is part of what is written back on every change of the view, or a change would lose the heading
|
|
143
182
|
const fragment = (page.kind === "page" || page.kind === "component") && page.anchor !== undefined
|
|
@@ -145,7 +184,27 @@ const addressQuery = ({ page, view, panelArgs, matrix }, catalogue) => {
|
|
|
145
184
|
: "";
|
|
146
185
|
return `${query === "" ? window.location.pathname : `?${query}`}${fragment}`;
|
|
147
186
|
};
|
|
148
|
-
/**
|
|
187
|
+
/**
|
|
188
|
+
* What the address's page shows in a catalogue that composes others: a composed catalogue's story, or what `shownPage`
|
|
189
|
+
* said. A `ref` that names no composed catalogue is another site's mark (`?ref=newsletter`): the story is this
|
|
190
|
+
* catalogue's.
|
|
191
|
+
*
|
|
192
|
+
* @param tree - the tree.
|
|
193
|
+
* @param page - the address's page.
|
|
194
|
+
* @param refs - the composed catalogues, if any.
|
|
195
|
+
* @param shown - what `shownPage` said of it.
|
|
196
|
+
*/
|
|
197
|
+
const shownRef = (tree, page, refs, shown) => {
|
|
198
|
+
if (page.kind !== "ref")
|
|
199
|
+
return shown;
|
|
200
|
+
return refs?.catalogues.some((each) => each.id === page.ref)
|
|
201
|
+
? { kind: "ref", place: { refId: page.ref, storyId: page.id } }
|
|
202
|
+
: shownPage(tree, { kind: "story", id: page.id });
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* What the address's page shows: a story or a component that is not there (renamed, removed) says so, never another. A
|
|
206
|
+
* composed catalogue's story is `shownRef`'s.
|
|
207
|
+
*/
|
|
149
208
|
const shownPage = (tree, page) => {
|
|
150
209
|
if (page.kind === "story") {
|
|
151
210
|
const location = findStory(tree, page.id);
|
|
@@ -188,6 +247,37 @@ const isLogicPage = (shown) => {
|
|
|
188
247
|
};
|
|
189
248
|
/** The shown component's place, a story's too; none on any other page. */
|
|
190
249
|
const componentLocationOf = (shown) => shown.kind === "story" || shown.kind === "component" ? shown.location : undefined;
|
|
250
|
+
/** The shown story of a composed catalogue; none on any other page. */
|
|
251
|
+
const refPlaceOf = (shown) => shown.kind === "ref" ? shown.place : undefined;
|
|
252
|
+
/** The page of a composed catalogue's story. */
|
|
253
|
+
const refPageOf = ({ refId, storyId }) => ({ kind: "ref", ref: refId, id: storyId });
|
|
254
|
+
/** The composed catalogues' code, once a part of it was first drawn: a page holds one shell, with one configuration. */
|
|
255
|
+
let refsModule;
|
|
256
|
+
/** The composed catalogues' code, loaded when a part of it is first drawn. */
|
|
257
|
+
const refsModuleOf = (refs) => {
|
|
258
|
+
refsModule ??= lazyModule(refs.load);
|
|
259
|
+
return refsModule;
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* What the composed catalogues add to the shown page: their sidebar sections, and a story's page when one is shown;
|
|
263
|
+
* nothing for a catalogue that composes none.
|
|
264
|
+
*
|
|
265
|
+
* @param refs - the composed catalogues, if any.
|
|
266
|
+
* @param current - the shown story of one of them, if any.
|
|
267
|
+
* @param links - how a story of theirs is linked and opened.
|
|
268
|
+
* @param switches - this catalogue's switches, with the view's values.
|
|
269
|
+
*/
|
|
270
|
+
const refSlotsOf = (refs, current, links, switches) => {
|
|
271
|
+
if (refs === undefined)
|
|
272
|
+
return { sidebar: {}, page: null };
|
|
273
|
+
const page = current === undefined ? undefined : { place: "page", refs: refs.catalogues, ...current, switches };
|
|
274
|
+
return {
|
|
275
|
+
sidebar: {
|
|
276
|
+
composed: _jsx(RefSlot, { refs: refs, part: { place: "sidebar", refs: refs.catalogues, current, ...links } })
|
|
277
|
+
},
|
|
278
|
+
page: _jsx(RefSlot, { refs: refs, part: page })
|
|
279
|
+
};
|
|
280
|
+
};
|
|
191
281
|
/** The shown docs page's place; none on any other page. */
|
|
192
282
|
const pageLocationOf = (shown) => shown.kind === "page" ? shown.location : undefined;
|
|
193
283
|
/** Whether nothing shown follows the view's switches: the home, or a docs page without a story. */
|
|
@@ -324,7 +414,7 @@ const RelatedLinks = ({ related, hrefOf, onOpen }) => related.length === 0 ? nul
|
|
|
324
414
|
* @param props - the problems, the shown component's place, the message when a named page is missing, the picker
|
|
325
415
|
* of the component's stories, and the related components.
|
|
326
416
|
*/
|
|
327
|
-
const ShellHeader = ({ problems, location, page, message, picker, related, isLogic }) => (_jsxs(_Fragment, { children: [problems.length > 0 ? (_jsxs("div", { className: "forgebook-problems", role: "alert", children: [_jsx("strong", { children: STRINGS.indexProblems }), _jsx("ul", { children: problems.map((problem) => (_jsx("li", { children: problem }, problem))) })] })) : null, message === undefined ? null : (_jsx("
|
|
417
|
+
const ShellHeader = ({ problems, location, page, message, picker, related, isLogic }) => (_jsxs(_Fragment, { children: [problems.length > 0 ? (_jsxs("div", { className: "forgebook-problems", role: "alert", children: [_jsx("strong", { children: STRINGS.indexProblems }), _jsx("ul", { children: problems.map((problem) => (_jsx("li", { children: problem }, problem))) })] })) : null, message === undefined ? null : (_jsx("div", { role: "alert", children: _jsx("h1", { className: "forgebook-empty", children: message }) })), location === undefined ? null : (_jsxs("header", { className: "forgebook-header", children: [_jsxs("p", { className: "forgebook-header__path", children: [[location.source.name, location.family.name, location.group.name]
|
|
328
418
|
.filter((part) => part !== undefined)
|
|
329
419
|
.join(" · "), location.component.alsoIn.length === 0 ? null : (_jsxs("span", { className: "forgebook-header__also-in", children: [" · ", STRINGS.alsoIn(location.component.alsoIn.map((place) => place.split("/").join(" › ")).join(", "))] }))] }), _jsxs("div", { className: "forgebook-header__row", children: [_jsx("h1", { className: "forgebook-header__title", children: location.component.name }), isLogic ? _jsx(LogicMark, {}) : null, picker, location.component.design === undefined ? null : (_jsxs("a", { className: "forgebook-button", href: location.component.design.url, target: "_blank", rel: "noopener noreferrer", children: [_jsx(Icon, { name: "external", size: 14 }), STRINGS.openInFigma] }))] }), related] })), page === undefined ? null : (_jsxs("header", { className: "forgebook-header", children: [_jsx("p", { className: "forgebook-header__path", children: [page.source.name, page.page.group].filter((part) => part !== undefined).join(" · ") }), _jsx("div", { className: "forgebook-header__row", children: _jsx("h1", { className: "forgebook-header__title", children: page.page.name }) })] }))] }));
|
|
330
420
|
/** A story's page. */
|
|
@@ -357,12 +447,23 @@ const useAddress = (catalogue, addressTexts) => {
|
|
|
357
447
|
window.addEventListener("popstate", onBack);
|
|
358
448
|
return () => window.removeEventListener("popstate", onBack);
|
|
359
449
|
}, [catalogue, addressTexts]);
|
|
450
|
+
// a link in Storybook's form has its reader loaded for it; a value changed meanwhile, or another page, has the last word
|
|
451
|
+
const waitingParam = address.link?.isWaiting === true ? address.link.param : undefined;
|
|
452
|
+
useEffect(() => {
|
|
453
|
+
if (waitingParam === undefined)
|
|
454
|
+
return;
|
|
455
|
+
void readStorybookLink(waitingParam, ({ readStorybookArgs }, param) => readStorybookArgs(param)).then((read) => setAddress((current) => current.link?.isWaiting === true && current.link.param === waitingParam
|
|
456
|
+
? { ...current, ...addressArgsRead(read, waitingParam, addressTexts) }
|
|
457
|
+
: current));
|
|
458
|
+
}, [waitingParam, addressTexts]);
|
|
360
459
|
// a height set with the foot handle belongs to the story it was set on: another page starts at its own
|
|
361
460
|
const pageAddress = (page) => ({
|
|
362
461
|
page,
|
|
363
462
|
view: { ...address.view, height: "auto" },
|
|
364
463
|
panelArgs: {},
|
|
365
|
-
|
|
464
|
+
link: undefined,
|
|
465
|
+
matrix: [],
|
|
466
|
+
tags: address.tags
|
|
366
467
|
});
|
|
367
468
|
const open = (page, movesFocus) => {
|
|
368
469
|
const next = pageAddress(page);
|
|
@@ -411,8 +512,9 @@ const useOwnPageId = (address, ownPage, replaceAddress) => {
|
|
|
411
512
|
*
|
|
412
513
|
* @param props - the configuration.
|
|
413
514
|
*/
|
|
414
|
-
const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addressTexts = "any", plugins = NO_PLUGINS, loadTokens, home }) => {
|
|
515
|
+
const ShellPage = ({ title, logo, hasBranding, heights, sources, storyGlobs, frameUrl, addressTexts = "any", plugins = NO_PLUGINS, loadTokens, loadSwitchPreviews, argControls, home }) => {
|
|
415
516
|
const tree = useMemo(() => storyTree(sources), [sources]);
|
|
517
|
+
const problems = useEditedProblems(tree.problems);
|
|
416
518
|
// the written home's module, loaded when the home is first opened
|
|
417
519
|
const writtenHome = useMemo(() => (home === undefined ? undefined : lazyModule(home)), [home]);
|
|
418
520
|
const idsByTitle = useMemo(() => componentIdsByTitle(tree), [tree]);
|
|
@@ -440,7 +542,18 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
440
542
|
const isSystemDark = useSystemDark();
|
|
441
543
|
const appearance = useAppearance(address.view, catalogue.switches);
|
|
442
544
|
useStoryIdsElement(useMemo(() => sidebarStoryIds(tree, catalogue.storyGroups.map((group) => group.id)), [tree, catalogue.storyGroups]));
|
|
443
|
-
const
|
|
545
|
+
const { help, showHelp } = useShortcutHelp();
|
|
546
|
+
let shown = shownPage(tree, address.page);
|
|
547
|
+
// what composition adds to the page; the build removes this whole block from a catalogue that composes none
|
|
548
|
+
let refSlots;
|
|
549
|
+
if (HAS_REFS) {
|
|
550
|
+
const refs = shellRefs();
|
|
551
|
+
shown = shownRef(tree, address.page, refs, shown);
|
|
552
|
+
refSlots = refSlotsOf(refs, refPlaceOf(shown), {
|
|
553
|
+
refStoryHref: (place) => addressQuery(pageAddress(refPageOf(place)), catalogue),
|
|
554
|
+
onOpenRefStory: (place) => openPage(refPageOf(place))
|
|
555
|
+
}, address.view.switches);
|
|
556
|
+
}
|
|
444
557
|
const location = componentLocationOf(shown);
|
|
445
558
|
const ownPage = recentPageOf(shown);
|
|
446
559
|
const recent = useRecentPages(ownPage);
|
|
@@ -463,16 +576,18 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
463
576
|
catalogueDevice: catalogue.device,
|
|
464
577
|
onAddressViewChange: changeView
|
|
465
578
|
});
|
|
466
|
-
|
|
579
|
+
const listedTree = useListedTree(tree, address.tags);
|
|
580
|
+
useStoryKeys(listedTree, shownStoryId, shown.kind === "component" ? shown.location.component.stories[0]?.id : undefined, (id) => openPage({ kind: "story", id }));
|
|
467
581
|
const source = sources.find((candidate) => candidate.id === location?.source.id);
|
|
468
582
|
const files = source === undefined ? undefined : sourceFiles(source);
|
|
469
583
|
const storyHrefOf = (story) => addressQuery(pageAddress(storyPage(story)), catalogue);
|
|
470
584
|
const columnHeightOf = (storyId) => knownHeight(storyHeights, storyId, drawnWidth(address.view.width, PAGE_COLUMN_WIDTH));
|
|
471
|
-
const header = (_jsx(ShellHeader, { problems:
|
|
585
|
+
const header = (_jsx(ShellHeader, { problems: problems, location: location, page: shownPageLocation, isLogic: isLogicPage(shown), message: shown.kind === "missing" ? shown.message : undefined, picker: location === undefined ? null : (_jsx(StoryPicker, { component: location.component, currentStoryId: shownStoryId, onOpenComponent: () => openPage(componentPage(location.component)), onOpenStory: (story) => openPage(storyPage(story)) })), related: _jsx(RelatedLinks, { related: relatedComponents(tree, location), hrefOf: (page) => addressQuery(pageAddress(page), catalogue), onOpen: openPage }) }));
|
|
472
586
|
const homeProps = {
|
|
473
587
|
title,
|
|
474
588
|
tree,
|
|
475
589
|
sources,
|
|
590
|
+
storyGlobs,
|
|
476
591
|
recent,
|
|
477
592
|
hrefOf: (page) => addressQuery(pageAddress(page), catalogue),
|
|
478
593
|
onOpen: (page) => openPage(page),
|
|
@@ -496,9 +611,9 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
496
611
|
header,
|
|
497
612
|
scroll
|
|
498
613
|
};
|
|
499
|
-
return (_jsxs("div", { className: "catalogue", children: [_jsx(Sidebar, { width: sidebarWidth, isOpen: isSidebarOpen, isOverlay: isSidebarOverlay, sidebarRef: sidebarRef, hideButtonRef: hideButtonRef, onHide: hideSidebar, onShow: showSidebar, appearance: appearance, title: title, logo: logo, hasBranding: hasBranding !== false, tree: tree, sources: sources, searchHref: (target) => addressQuery(pageAddress(target), catalogue), onOpenResult: openFound, isHome: shown.kind === "home", homeHref: addressQuery(pageAddress(HOME), catalogue), onOpenHome: () => openPage(HOME), current: sidebarCurrent(location, shownStoryId), currentPageId: shownPageLocation?.page.id, pageHref: (id) => addressQuery(pageAddress({ kind: "page", id }), catalogue), onOpenPage: (id) => openPage({ kind: "page", id }), componentHref: (sourceId, componentTitle) => addressQuery(pageAddress(titledPage(idsByTitle, sourceId, componentTitle)), catalogue), onOpenComponent: (sourceId, componentTitle) => openPage(titledPage(idsByTitle, sourceId, componentTitle)) }), _jsx(
|
|
614
|
+
return (_jsxs("div", { className: "catalogue", children: [_jsx(Sidebar, { width: sidebarWidth, onWidthChange: setSidebarWidth, isOpen: isSidebarOpen, isOverlay: isSidebarOverlay, sidebarRef: sidebarRef, hideButtonRef: hideButtonRef, onHide: hideSidebar, onShow: showSidebar, appearance: appearance, onShowKeys: showHelp, title: title, logo: logo, hasBranding: hasBranding !== false, tree: listedTree, wholeTree: tree, tags: address.tags, onTagsChange: (tags) => replaceAddress({ ...address, tags }), sources: sources, searchHref: (target) => addressQuery(pageAddress(target), catalogue), onOpenResult: openFound, isHome: shown.kind === "home", homeHref: addressQuery(pageAddress(HOME), catalogue), onOpenHome: () => openPage(HOME), current: sidebarCurrent(location, shownStoryId), currentPageId: shownPageLocation?.page.id, pageHref: (id) => addressQuery(pageAddress({ kind: "page", id }), catalogue), onOpenPage: (id) => openPage({ kind: "page", id }), ...refSlots?.sidebar, componentHref: (sourceId, componentTitle) => addressQuery(pageAddress(titledPage(idsByTitle, sourceId, componentTitle)), catalogue), onOpenComponent: (sourceId, componentTitle) => openPage(titledPage(idsByTitle, sourceId, componentTitle)) }), help, _jsx(SidebarShade, { isOverlay: isSidebarOverlay, isOpen: isSidebarOpen, onHide: hideSidebar }), _jsxs("main", { className: "forgebook-main", inert: isSidebarOver, children: [_jsx(ShellBar, { isHome: hasNoStories(shown), view: shownView, onViewChange: changeShownView, isStoryPage: shown.kind === "story", isComponentPage: shown.kind === "component", isLogic: isLogicPage(shown),
|
|
500
615
|
// under a sidebar lying over the page the button stays, so the bar's controls never move behind it
|
|
501
|
-
onShowSidebar: isSidebarOpen && !isSidebarOver ? undefined : showSidebar, showSidebarRef: showButtonRef, shownWidth: shown.kind === "story" ? shownWidth : undefined, fixed: fixedOfShown(fixedViews, shown), deviceDefault: deviceOfShown(catalogue.device, shown) }), shown.kind === "component" ? (_jsx(LazyPage, { module: COMPONENT_PAGE, header: header, pageProps: {
|
|
616
|
+
onShowSidebar: isSidebarOpen && !isSidebarOver ? undefined : showSidebar, showSidebarRef: showButtonRef, shownWidth: shown.kind === "story" ? shownWidth : undefined, fixed: fixedOfShown(fixedViews, shown), deviceDefault: deviceOfShown(catalogue.device, shown), loadSwitchPreviews: loadSwitchPreviews }), shown.kind === "component" ? (_jsx(LazyPage, { module: COMPONENT_PAGE, header: header, pageProps: {
|
|
502
617
|
component: shown.location.component,
|
|
503
618
|
anchor: shown.anchor,
|
|
504
619
|
view: address.view,
|
|
@@ -528,7 +643,7 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
528
643
|
anchor: shown.anchor,
|
|
529
644
|
onOpenPage: (id) => openPage({ kind: "page", id }),
|
|
530
645
|
onOpenAnchor: openAnchor
|
|
531
|
-
} }, shown.location.page.id)) : null, shown.kind === "story" ? (_jsx(Stage, { component: shown.location.component, story: shown.location.story, view: shownView, onViewChange: changeShownView, onFixedChange: (storyId, fixed) => setFixedViews((current) => new Map(current).set(storyId, fixed)), panelArgs: address.panelArgs, onPanelArgsChange: (panelArgs) => replaceAddress({ ...address, panelArgs }), matrixAxes: address.matrix, onMatrixAxesChange: (matrix) => replaceAddress({ ...address, matrix }), frameUrl: frameUrl, plugins: plugins, ...storyLoaders(files, shown.location.story), namedValues: source?.namedValues, header: header, onShownWidthChange: setShownWidth, scroll: scroll, backgroundOf: (view) => storyBackground(shown.location.source.background, view, catalogue, isSystemDark), measuredHeight: stageHeight(storyHeights, shown.location.story.id, address.view.width, shownWidth) })) : null, shown.kind === "missing" ? header : null] })] }));
|
|
646
|
+
} }, shown.location.page.id)) : null, shown.kind === "story" ? (_jsx(Stage, { loadTokens: loadTokens, argControls: argControls, component: shown.location.component, story: shown.location.story, view: shownView, onViewChange: changeShownView, onFixedChange: (storyId, fixed) => setFixedViews((current) => new Map(current).set(storyId, fixed)), panelArgs: address.panelArgs, addressLink: address.link, onPanelArgsChange: (panelArgs) => replaceAddress({ ...address, panelArgs, link: undefined }), matrixAxes: address.matrix, onMatrixAxesChange: (matrix) => replaceAddress({ ...address, matrix }), frameUrl: frameUrl, plugins: plugins, ...storyLoaders(files, shown.location.story), namedValues: source?.namedValues, header: header, onShownWidthChange: setShownWidth, scroll: scroll, backgroundOf: (view) => storyBackground(shown.location.source.background, view, catalogue, isSystemDark), measuredHeight: stageHeight(storyHeights, shown.location.story.id, address.view.width, shownWidth) })) : null, refSlots?.page, shown.kind === "missing" ? header : null] })] }));
|
|
532
647
|
};
|
|
533
648
|
/**
|
|
534
649
|
* The catalogue's page: its settings computed once from the configuration (its switches, its languages' switch, its
|
|
@@ -536,4 +651,4 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
536
651
|
*
|
|
537
652
|
* @param props - the configuration.
|
|
538
653
|
*/
|
|
539
|
-
export const Shell = (props) => (_jsx(CatalogueContext.Provider, { value: useConfiguredCatalogue(props), children: _jsx(PluginHostsContext.Provider, { value: props.pluginHosts, children: _jsx(ShellPage, { ...props }) }) }));
|
|
654
|
+
export const Shell = (props) => (_jsx(CatalogueContext.Provider, { value: useConfiguredCatalogue(props, readStored), children: _jsx(PluginHostsContext.Provider, { value: props.pluginHosts, children: _jsx(ShellPage, { ...props }) }) }));
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The list of the shell's keys, in a modal dialog, with the switch that turns the keys without a modifier off.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* The platform's modal dialog holds the focus, closes on Escape and gives the focus back. A frame keeps its own keys, so
|
|
6
|
+
* the list says these work only outside a story. Loaded when first opened (`useShortcutHelp.tsx`).
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { type ReactNode } from "react";
|
|
11
|
+
import "./shortcutHelp.scss";
|
|
12
|
+
/** The list's props. */
|
|
13
|
+
export type ShortcutHelpProps = {
|
|
14
|
+
/** Called when the list closes. */
|
|
15
|
+
readonly onClose: () => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The list.
|
|
19
|
+
*
|
|
20
|
+
* @param props - what to call when it closes.
|
|
21
|
+
*/
|
|
22
|
+
export declare const ShortcutHelp: ({ onClose }: ShortcutHelpProps) => ReactNode;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The list of the shell's keys, in a modal dialog, with the switch that turns the keys without a modifier off.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The platform's modal dialog holds the focus, closes on Escape and gives the focus back. A frame keeps its own keys, so
|
|
7
|
+
* the list says these work only outside a story. Loaded when first opened (`useShortcutHelp.tsx`).
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { useEffect, useRef, useState } from "react";
|
|
12
|
+
import { shownKeys } from "../controlKeys.js";
|
|
13
|
+
import { catalogueControls } from "../toolbarLayout.js";
|
|
14
|
+
import { useCatalogue } from "./catalogueContext.js";
|
|
15
|
+
import { controlLabel } from "./controlLabel.js";
|
|
16
|
+
import { SINGLE_KEYS_STORED } from "./keyboard.js";
|
|
17
|
+
import "./shortcutHelp.css";
|
|
18
|
+
import { textsOfGroup } from "./strings.js";
|
|
19
|
+
import { readStored, writeStored } from "./useStored.js";
|
|
20
|
+
import { readKeys } from "./useToolbarLayout.js";
|
|
21
|
+
/** The list's texts, as shown: Forgebook's, with the catalogue's replacements. */
|
|
22
|
+
const HELP_STRINGS = textsOfGroup("shortcuts", {
|
|
23
|
+
title: "Keyboard keys",
|
|
24
|
+
note: "They work while the focus is outside a story: a story keeps every key pressed inside it.",
|
|
25
|
+
search: "Go to the search",
|
|
26
|
+
previous: "Previous story",
|
|
27
|
+
next: "Next story",
|
|
28
|
+
help: "This list",
|
|
29
|
+
close: "Close",
|
|
30
|
+
singleKeys: "Keys without a modifier",
|
|
31
|
+
singleKeysNote: "Off, only the search's key with a modifier stays. This browser remembers it.",
|
|
32
|
+
control: (label) => `Next value of ${label}; Shift for the one before`
|
|
33
|
+
});
|
|
34
|
+
/** The key with the platform's modifier that goes to the search. */
|
|
35
|
+
const searchKey = () => (/Mac|iPhone|iPad/.test(navigator.platform) ? "⌘ K" : "Ctrl K");
|
|
36
|
+
/**
|
|
37
|
+
* The list.
|
|
38
|
+
*
|
|
39
|
+
* @param props - what to call when it closes.
|
|
40
|
+
*/
|
|
41
|
+
export const ShortcutHelp = ({ onClose }) => {
|
|
42
|
+
const catalogue = useCatalogue();
|
|
43
|
+
const dialogRef = useRef(null);
|
|
44
|
+
const [isOn, setIsOn] = useState(() => readStored(SINGLE_KEYS_STORED) !== "off");
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
dialogRef.current?.showModal();
|
|
47
|
+
}, []);
|
|
48
|
+
const keys = shownKeys(catalogue.keys, readKeys(readStored(`${catalogue.id}:toolbar-keys`)));
|
|
49
|
+
const controlRows = catalogueControls(catalogue).flatMap((control) => {
|
|
50
|
+
const key = keys[control.id];
|
|
51
|
+
return key === undefined
|
|
52
|
+
? []
|
|
53
|
+
: [{ keys: [key.toUpperCase()], text: HELP_STRINGS.control(controlLabel(control)) }];
|
|
54
|
+
});
|
|
55
|
+
const rows = [
|
|
56
|
+
{ keys: ["/", searchKey()], text: HELP_STRINGS.search },
|
|
57
|
+
{ keys: ["["], text: HELP_STRINGS.previous },
|
|
58
|
+
{ keys: ["]"], text: HELP_STRINGS.next },
|
|
59
|
+
...controlRows,
|
|
60
|
+
{ keys: ["?"], text: HELP_STRINGS.help }
|
|
61
|
+
];
|
|
62
|
+
return (_jsxs("dialog", { ref: dialogRef, className: "forgebook-keys", "aria-label": HELP_STRINGS.title, onClose: onClose, children: [_jsx("h2", { className: "forgebook-keys__title", children: HELP_STRINGS.title }), _jsx("p", { className: "forgebook-keys__note", children: HELP_STRINGS.note }), _jsx("dl", { className: "forgebook-keys__list", children: rows.map((row) => (_jsxs("div", { className: "forgebook-keys__row", children: [_jsx("dt", { children: row.keys.map((key) => (_jsx("kbd", { className: "forgebook-keys__key", children: key }, key))) }), _jsx("dd", { children: row.text })] }, row.text))) }), _jsxs("label", { className: "forgebook-keys__switch", children: [_jsx("input", { type: "checkbox", checked: isOn, onChange: (event) => {
|
|
63
|
+
setIsOn(event.target.checked);
|
|
64
|
+
writeStored(SINGLE_KEYS_STORED, event.target.checked ? "on" : "off");
|
|
65
|
+
} }), _jsxs("span", { children: [HELP_STRINGS.singleKeys, _jsx("small", { className: "forgebook-keys__note", children: HELP_STRINGS.singleKeysNote })] })] }), _jsx("form", { method: "dialog", className: "forgebook-keys__foot", children: _jsx("button", { type: "submit", className: "forgebook-button", children: HELP_STRINGS.close }) })] }));
|
|
66
|
+
};
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* component by its
|
|
7
7
|
* name, its place, its meta's search words or its stories' names and descriptions. A component listed in other places too (`alsoIn`) has an
|
|
8
8
|
* alias entry in each, beside the components that live there, which says where it lives and opens its page. Docs pages
|
|
9
|
-
* come first, in a section of their own (`SidebarDocs.tsx`)
|
|
9
|
+
* come first, in a section of their own (`SidebarDocs.tsx`); other catalogues composed with `refs` come last
|
|
10
|
+
* (`SidebarRefs.tsx`).
|
|
10
11
|
*
|
|
11
12
|
* @module
|
|
12
13
|
*/
|
|
@@ -14,7 +15,7 @@ import type { StorySource } from "@forgebook/story-format/source";
|
|
|
14
15
|
import { type ReactNode, type Ref } from "react";
|
|
15
16
|
import type { SearchTarget } from "../search.ts";
|
|
16
17
|
import type { StoryTree } from "../storyTree.ts";
|
|
17
|
-
import {
|
|
18
|
+
import type { SidebarPageLinks } from "./SidebarDocs.tsx";
|
|
18
19
|
import { type ShownComponent } from "./SidebarEntries.tsx";
|
|
19
20
|
import type { AppearanceState } from "./useAppearance.ts";
|
|
20
21
|
/** The sidebar's props. */
|
|
@@ -25,8 +26,14 @@ export type SidebarProps = SidebarPageLinks & {
|
|
|
25
26
|
readonly logo: string | undefined;
|
|
26
27
|
/** Whether a catalogue without a logo shows Forgebook's mark. */
|
|
27
28
|
readonly hasBranding: boolean;
|
|
28
|
-
/** The tree. */
|
|
29
|
+
/** The tree it lists: what the tag filter keeps. */
|
|
29
30
|
readonly tree: StoryTree;
|
|
31
|
+
/** The whole tree, whose tags the filter offers. */
|
|
32
|
+
readonly wholeTree: StoryTree;
|
|
33
|
+
/** The tags on, each `name` or `!name`. */
|
|
34
|
+
readonly tags: readonly string[];
|
|
35
|
+
/** Called with the tags on, when they change. */
|
|
36
|
+
readonly onTagsChange: (tags: readonly string[]) => void;
|
|
30
37
|
/** The sources, for the search's index. */
|
|
31
38
|
readonly sources: readonly StorySource[];
|
|
32
39
|
/** The address of a search's result. */
|
|
@@ -52,6 +59,8 @@ export type SidebarProps = SidebarPageLinks & {
|
|
|
52
59
|
readonly onOpenComponent: (sourceId: string, title: string) => void;
|
|
53
60
|
/** The sidebar's width, in CSS px. */
|
|
54
61
|
readonly width: number;
|
|
62
|
+
/** Sets the sidebar's width, from its handle. */
|
|
63
|
+
readonly onWidthChange: (width: number) => void;
|
|
55
64
|
/** Whether it is shown: hidden, it slides out and stays mounted, so its search and open families come back with it. */
|
|
56
65
|
readonly isOpen: boolean;
|
|
57
66
|
/** Whether it lies over the page and not beside it, on a narrow window. */
|
|
@@ -66,10 +75,14 @@ export type SidebarProps = SidebarPageLinks & {
|
|
|
66
75
|
readonly onShow: () => void;
|
|
67
76
|
/** The shell's appearance and its setter, for the menu at the foot. */
|
|
68
77
|
readonly appearance: AppearanceState;
|
|
78
|
+
/** Opens the list of the shell's keys. */
|
|
79
|
+
readonly onShowKeys: () => void;
|
|
80
|
+
/** What is listed after this catalogue's stories when no search or tag narrows them: the composed catalogues. */
|
|
81
|
+
readonly composed?: ReactNode;
|
|
69
82
|
};
|
|
70
83
|
/**
|
|
71
84
|
* The sidebar.
|
|
72
85
|
*
|
|
73
86
|
* @param props - the tree, the shown component and how to open one.
|
|
74
87
|
*/
|
|
75
|
-
export declare const Sidebar: ({ title, logo, hasBranding, tree, sources: storySources, searchHref, onOpenResult, isHome, homeHref, onOpenHome, current, currentPageId, pageHref, onOpenPage, width, isOpen, isOverlay, sidebarRef, hideButtonRef, onHide, onShow, appearance, ...links }: SidebarProps) => ReactNode;
|
|
88
|
+
export declare const Sidebar: ({ title, logo, hasBranding, tree, wholeTree, tags, onTagsChange, sources: storySources, searchHref, onOpenResult, isHome, homeHref, onOpenHome, current, currentPageId, pageHref, onOpenPage, width, onWidthChange, isOpen, isOverlay, sidebarRef, hideButtonRef, onHide, onShow, appearance, onShowKeys, ...links }: SidebarProps) => ReactNode;
|