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
package/dist/src/argTypes.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A story's `argTypes` (Storybook's)
|
|
3
|
-
*
|
|
4
|
-
* args the story receives.
|
|
2
|
+
* A story's `argTypes` (Storybook's) as the shell reads them: in the form that crosses between the documents, laid over the
|
|
3
|
+
* props the component's types give. What reads them from the story's module is `storyArgTypes.ts`.
|
|
5
4
|
*
|
|
6
5
|
* @remarks
|
|
7
6
|
* The panel's props come from the component's types (`componentDocs.ts`); `argTypes` say otherwise where a story
|
|
8
7
|
* means another control, other options, other names, or an arg the types do not name. Without `argTypes` the panel
|
|
9
8
|
* shows the props exactly as the types give them. Option values that cannot cross (a component, a function) are
|
|
10
|
-
* sent as their `mapping` keys, which the frame turns back into the values. `object`
|
|
11
|
-
*
|
|
9
|
+
* sent as their `mapping` keys, which the frame turns back into the values. An `object` control edits the prop by the
|
|
10
|
+
* shape its type gives (`valueShape.ts`), by what the story's own arg looks like without one, as JSON when nothing says.
|
|
11
|
+
* Pure.
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
|
+
import { isArgCondition } from "./argConditions.js";
|
|
15
16
|
/**
|
|
16
17
|
* Whether a prop is a colour: named so by its `argTypes`, or by the name convention (`color`, `accentColor`).
|
|
17
18
|
*
|
|
@@ -30,145 +31,23 @@ export const isColorProp = (prop) => prop.control === "color" ||
|
|
|
30
31
|
export const isNamedProp = (prop, namedValues) => prop.kind === "other" && prop.control === undefined && namedValues[prop.type] !== undefined;
|
|
31
32
|
/**
|
|
32
33
|
* The props the panel can set: a prop of a type the source names values for is chosen among them, a node that takes a
|
|
33
|
-
* text is set as one; any other `other` prop, and an event, cannot be set; nor a prop
|
|
34
|
+
* text is set as one, a prop with a shape by its fields; any other `other` prop, and an event, cannot be set; nor a prop
|
|
35
|
+
* the story's controls leave out.
|
|
34
36
|
*
|
|
35
37
|
* @param props - the component's props, with the story's `argTypes` laid over them.
|
|
36
38
|
* @param controls - the props the story lets the panel set.
|
|
37
39
|
* @param namedValues - the source's named values.
|
|
38
40
|
*/
|
|
39
|
-
export const settableProps = (props, controls, namedValues) => props.filter((prop) => (prop.kind !== "other" ||
|
|
41
|
+
export const settableProps = (props, controls, namedValues) => props.filter((prop) => (prop.kind !== "other" ||
|
|
42
|
+
prop.canTakeText === true ||
|
|
43
|
+
prop.control === "file" ||
|
|
44
|
+
prop.customControl !== undefined ||
|
|
45
|
+
isNamedProp(prop, namedValues) ||
|
|
46
|
+
prop.shape !== undefined) &&
|
|
40
47
|
prop.kind !== "event" &&
|
|
41
48
|
(controls === "all" || controls.includes(prop.name)));
|
|
42
49
|
/** Whether a value is a plain object. */
|
|
43
50
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44
|
-
/** Storybook's control names, as the panel draws them (the inline variants look the same here). */
|
|
45
|
-
const CONTROLS = {
|
|
46
|
-
select: "select",
|
|
47
|
-
radio: "radio",
|
|
48
|
-
"inline-radio": "radio",
|
|
49
|
-
check: "check",
|
|
50
|
-
"inline-check": "check",
|
|
51
|
-
"multi-select": "multi-select",
|
|
52
|
-
boolean: "boolean",
|
|
53
|
-
text: "text",
|
|
54
|
-
number: "number",
|
|
55
|
-
range: "range",
|
|
56
|
-
color: "color",
|
|
57
|
-
date: "date",
|
|
58
|
-
object: "none",
|
|
59
|
-
file: "none"
|
|
60
|
-
};
|
|
61
|
-
/** The panel controls, for the check on arrival. */
|
|
62
|
-
const PANEL_CONTROLS = [...new Set(Object.values(CONTROLS))];
|
|
63
|
-
/** A number field of an object, when it is a finite number. */
|
|
64
|
-
const numberOf = (part, name) => {
|
|
65
|
-
const value = part[name];
|
|
66
|
-
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
67
|
-
};
|
|
68
|
-
/** The labels of a control, when every one is a text. */
|
|
69
|
-
const labelsOf = (value) => isRecord(value) && Object.values(value).every((label) => typeof label === "string")
|
|
70
|
-
? Object.fromEntries(Object.entries(value).map(([option, label]) => [option, String(label)]))
|
|
71
|
-
: undefined;
|
|
72
|
-
/**
|
|
73
|
-
* The control an entry names: `false` and a disabled control are none, a name or `{ type }` is that control, and
|
|
74
|
-
* options without a control make a select.
|
|
75
|
-
*/
|
|
76
|
-
const controlOf = (entry) => {
|
|
77
|
-
const control = entry["control"];
|
|
78
|
-
if (control === false)
|
|
79
|
-
return "none";
|
|
80
|
-
if (typeof control === "string")
|
|
81
|
-
return CONTROLS[control];
|
|
82
|
-
if (isRecord(control)) {
|
|
83
|
-
if (control["disable"] === true)
|
|
84
|
-
return "none";
|
|
85
|
-
if (typeof control["type"] === "string")
|
|
86
|
-
return CONTROLS[control["type"]];
|
|
87
|
-
}
|
|
88
|
-
return Array.isArray(entry["options"]) ? "select" : undefined;
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* The options as they cross: texts and numbers as they are; any other value only through `mapping`, whose keys are
|
|
92
|
-
* the options then.
|
|
93
|
-
*/
|
|
94
|
-
const optionsOf = (entry) => {
|
|
95
|
-
const options = entry["options"];
|
|
96
|
-
if (!Array.isArray(options))
|
|
97
|
-
return undefined;
|
|
98
|
-
return options.filter((option) => typeof option === "string" || typeof option === "number");
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* One entry as the panel reads it.
|
|
102
|
-
*
|
|
103
|
-
* @param entry - the `argTypes` entry, the story's laid over the meta's.
|
|
104
|
-
* @param isExcluded - whether `parameters.controls.exclude` names the arg.
|
|
105
|
-
*/
|
|
106
|
-
const panelArgTypeOf = (entry, isExcluded) => {
|
|
107
|
-
const control = controlOf(entry);
|
|
108
|
-
const options = optionsOf(entry);
|
|
109
|
-
const settings = isRecord(entry["control"]) ? entry["control"] : {};
|
|
110
|
-
const table = entry["table"];
|
|
111
|
-
const name = entry["name"];
|
|
112
|
-
const description = entry["description"];
|
|
113
|
-
const labels = labelsOf(settings["labels"]);
|
|
114
|
-
const min = numberOf(settings, "min");
|
|
115
|
-
const max = numberOf(settings, "max");
|
|
116
|
-
const step = numberOf(settings, "step");
|
|
117
|
-
return {
|
|
118
|
-
isHidden: isExcluded || (isRecord(table) && table["disable"] === true),
|
|
119
|
-
...(typeof name === "string" ? { label: name } : {}),
|
|
120
|
-
...(typeof description === "string" ? { description } : {}),
|
|
121
|
-
...(control === undefined ? {} : { control }),
|
|
122
|
-
...(options === undefined ? {} : { options }),
|
|
123
|
-
...(labels === undefined ? {} : { labels }),
|
|
124
|
-
...(min === undefined ? {} : { min }),
|
|
125
|
-
...(max === undefined ? {} : { max }),
|
|
126
|
-
...(step === undefined ? {} : { step })
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* The `argTypes` of the meta and the story, merged: each arg's entry from both, the story's fields over the meta's.
|
|
131
|
-
*
|
|
132
|
-
* @param meta - the meta's `argTypes`.
|
|
133
|
-
* @param story - the story's `argTypes`.
|
|
134
|
-
*/
|
|
135
|
-
export const mergedArgTypes = (meta, story) => {
|
|
136
|
-
const merged = {};
|
|
137
|
-
for (const part of [meta, story]) {
|
|
138
|
-
if (!isRecord(part))
|
|
139
|
-
continue;
|
|
140
|
-
for (const [name, entry] of Object.entries(part)) {
|
|
141
|
-
if (isRecord(entry))
|
|
142
|
-
merged[name] = { ...merged[name], ...entry };
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return merged;
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* The arg types the frame sends: each entry read, and the args `parameters.controls.exclude` names hidden.
|
|
149
|
-
*
|
|
150
|
-
* @param argTypes - the merged `argTypes`.
|
|
151
|
-
* @param excluded - the args `parameters.controls.exclude` names.
|
|
152
|
-
*/
|
|
153
|
-
export const panelArgTypesOf = (argTypes, excluded) => {
|
|
154
|
-
const names = [...new Set([...Object.keys(argTypes), ...excluded])];
|
|
155
|
-
return Object.fromEntries(names.map((name) => [name, panelArgTypeOf(argTypes[name] ?? {}, excluded.includes(name))]));
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* The args with each `mapping` applied: an arg whose value is a key of its entry's `mapping` receives the value the
|
|
159
|
-
* key stands for, as Storybook's (an arg written as the key in the story, or chosen in the panel).
|
|
160
|
-
*
|
|
161
|
-
* @param args - the args.
|
|
162
|
-
* @param argTypes - the merged `argTypes`.
|
|
163
|
-
*/
|
|
164
|
-
export const mappedArgs = (args, argTypes) => Object.fromEntries(Object.entries(args).map(([name, value]) => {
|
|
165
|
-
const mapping = argTypes[name]?.["mapping"];
|
|
166
|
-
if (!isRecord(mapping) || (typeof value !== "string" && typeof value !== "number"))
|
|
167
|
-
return [name, value];
|
|
168
|
-
const key = String(value);
|
|
169
|
-
// the mapping's own keys only: a value a shared link chose (`constructor`) never reaches its prototype
|
|
170
|
-
return [name, Object.hasOwn(mapping, key) ? mapping[key] : value];
|
|
171
|
-
}));
|
|
172
51
|
/** The prop kind a control sets, for the panel's groups. */
|
|
173
52
|
const KIND_OF_CONTROL = {
|
|
174
53
|
select: "choice",
|
|
@@ -181,21 +60,50 @@ const KIND_OF_CONTROL = {
|
|
|
181
60
|
range: "number",
|
|
182
61
|
color: "text",
|
|
183
62
|
date: "number",
|
|
63
|
+
object: "other",
|
|
64
|
+
textarea: "text",
|
|
65
|
+
token: "text",
|
|
66
|
+
file: "other",
|
|
184
67
|
none: "other"
|
|
185
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* What a prop's editor reads of its arg type: an `object` control's shape, from its type, else from the story's own value,
|
|
71
|
+
* else JSON; a `token` control's tokens; what a `file` control takes.
|
|
72
|
+
*/
|
|
73
|
+
const editorFieldsOf = (prop, argType, own) => {
|
|
74
|
+
const shapeOfOwn = own === undefined || own === null ? { kind: "json" } : { kind: "like", value: own };
|
|
75
|
+
return {
|
|
76
|
+
...(argType.control === "object" ? { shape: prop.shape ?? shapeOfOwn } : {}),
|
|
77
|
+
// a `token` control that names no tokens asks for those named after its arg
|
|
78
|
+
...(argType.control === "token" ? { tokens: argType.tokens ?? { of: prop.name } } : {}),
|
|
79
|
+
...(argType.accept === undefined ? {} : { accept: argType.accept }),
|
|
80
|
+
...(argType.customControl === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: {
|
|
83
|
+
kind: "other",
|
|
84
|
+
customControl: argType.customControl,
|
|
85
|
+
...(argType.settings === undefined ? {} : { settings: argType.settings })
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
};
|
|
186
89
|
/**
|
|
187
90
|
* A prop with its arg type laid over it.
|
|
188
91
|
*
|
|
189
92
|
* @param prop - the prop as the types give it.
|
|
190
93
|
* @param argType - its arg type.
|
|
94
|
+
* @param own - the story's own value of the arg: what an `object` control with no type to read draws its fields from.
|
|
191
95
|
*/
|
|
192
|
-
const withArgType = (prop, argType) => {
|
|
96
|
+
const withArgType = (prop, argType, own) => {
|
|
193
97
|
const { control } = argType;
|
|
194
98
|
// a control the panel cannot draw makes the prop one it lists for reading, never one that takes a text
|
|
195
99
|
const isReadOnly = control === "none";
|
|
196
|
-
|
|
100
|
+
// a control the story names wins over the one the catalogue gives the prop's type
|
|
101
|
+
const { customControl: _typed, ...untyped } = prop;
|
|
102
|
+
const { canTakeText: _canTakeText, ...rest } = untyped;
|
|
103
|
+
// a control the story names decides what its value is: the type's shape no longer draws nor checks it
|
|
104
|
+
const { shape: _shape, ...shapeless } = isReadOnly || argType.customControl !== undefined ? rest : untyped;
|
|
197
105
|
return {
|
|
198
|
-
...(
|
|
106
|
+
...(control === undefined && argType.customControl === undefined ? prop : shapeless),
|
|
199
107
|
...(control === undefined ? {} : { kind: KIND_OF_CONTROL[control], control }),
|
|
200
108
|
...(argType.options === undefined ? {} : { choices: argType.options }),
|
|
201
109
|
...(argType.description === undefined ? {} : { description: argType.description }),
|
|
@@ -203,58 +111,49 @@ const withArgType = (prop, argType) => {
|
|
|
203
111
|
...(argType.labels === undefined ? {} : { labels: argType.labels }),
|
|
204
112
|
...(argType.min === undefined ? {} : { min: argType.min }),
|
|
205
113
|
...(argType.max === undefined ? {} : { max: argType.max }),
|
|
206
|
-
...(argType.step === undefined ? {} : { step: argType.step })
|
|
114
|
+
...(argType.step === undefined ? {} : { step: argType.step }),
|
|
115
|
+
...editorFieldsOf(prop, argType, own)
|
|
207
116
|
};
|
|
208
117
|
};
|
|
209
118
|
/** A prop the types do not name, made from its arg type alone: a text when it names no control. */
|
|
210
|
-
const propOfArgType = (name, argType) => withArgType({ name, kind: "text", type: "", description: "", isRequired: false }, argType);
|
|
119
|
+
const propOfArgType = (name, argType, own) => withArgType({ name, kind: "text", type: "", description: "", isRequired: false }, argType, own);
|
|
120
|
+
/** A prop as its TSDoc asks: chosen among the tokens `@token` names, when it is set as a text. */
|
|
121
|
+
const propAsDocumented = (prop) => prop.token !== undefined && (prop.kind === "text" || prop.canTakeText === true)
|
|
122
|
+
? { ...prop, kind: "text", control: "token", tokens: { of: prop.token } }
|
|
123
|
+
: prop;
|
|
211
124
|
/**
|
|
212
125
|
* The panel's props: the component's, with their arg types laid over them, the hidden ones left out, then the args
|
|
213
126
|
* only the arg types name, in their order.
|
|
214
127
|
*
|
|
215
128
|
* @param props - the props the component's types give.
|
|
216
129
|
* @param argTypes - the story's arg types; none leaves the props as they are.
|
|
130
|
+
* @param storyArgs - the story's own args, for an `object` control no type describes; none by default.
|
|
217
131
|
*/
|
|
218
|
-
export const panelProps = (props, argTypes) => {
|
|
132
|
+
export const panelProps = (props, argTypes, storyArgs = {}) => {
|
|
219
133
|
const typed = new Set(props.map((prop) => prop.name));
|
|
220
134
|
const fromTypes = props.flatMap((prop) => {
|
|
221
135
|
const argType = argTypes[prop.name];
|
|
222
136
|
if (argType === undefined)
|
|
223
|
-
return [prop];
|
|
224
|
-
|
|
137
|
+
return [propAsDocumented(prop)];
|
|
138
|
+
if (argType.isHidden)
|
|
139
|
+
return [];
|
|
140
|
+
return [
|
|
141
|
+
withArgType(argType.control === undefined ? propAsDocumented(prop) : prop, argType, storyArgs[prop.name])
|
|
142
|
+
];
|
|
225
143
|
});
|
|
226
|
-
const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType)]);
|
|
144
|
+
const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType, storyArgs[name])]);
|
|
227
145
|
return [...fromTypes, ...fromArgTypes];
|
|
228
146
|
};
|
|
229
|
-
/**
|
|
230
|
-
* The props the panel can set, as the story's parameters say: `false` none, a list or `{ include }` those, anything
|
|
231
|
-
* else every one.
|
|
232
|
-
*
|
|
233
|
-
* @param value - `parameters.controls`.
|
|
234
|
-
*/
|
|
235
|
-
export const controlsOfParameter = (value) => {
|
|
236
|
-
if (value === false)
|
|
237
|
-
return [];
|
|
238
|
-
if (Array.isArray(value) && value.every((name) => typeof name === "string"))
|
|
239
|
-
return value;
|
|
240
|
-
const include = isRecord(value) ? value["include"] : undefined;
|
|
241
|
-
if (Array.isArray(include) && include.every((name) => typeof name === "string"))
|
|
242
|
-
return include;
|
|
243
|
-
return "all";
|
|
244
|
-
};
|
|
245
|
-
/**
|
|
246
|
-
* The args `parameters.controls.exclude` hides.
|
|
247
|
-
*
|
|
248
|
-
* @param value - `parameters.controls`.
|
|
249
|
-
*/
|
|
250
|
-
export const excludedControls = (value) => {
|
|
251
|
-
const exclude = isRecord(value) ? value["exclude"] : undefined;
|
|
252
|
-
return Array.isArray(exclude) ? exclude.filter((name) => typeof name === "string") : [];
|
|
253
|
-
};
|
|
254
147
|
/** Whether a value is one arg's panel arg type. */
|
|
255
148
|
const isPanelArgType = (value) => isRecord(value) &&
|
|
256
149
|
typeof value["isHidden"] === "boolean" &&
|
|
257
|
-
(value["
|
|
150
|
+
(value["if"] === undefined || isArgCondition(value["if"])) &&
|
|
151
|
+
(value["control"] === undefined ||
|
|
152
|
+
(typeof value["control"] === "string" && Object.hasOwn(KIND_OF_CONTROL, value["control"]))) &&
|
|
153
|
+
(value["tokens"] === undefined ||
|
|
154
|
+
(isRecord(value["tokens"]) && typeof value["tokens"]["of"] === "string")) &&
|
|
155
|
+
(value["accept"] === undefined || typeof value["accept"] === "string") &&
|
|
156
|
+
(value["customControl"] === undefined || typeof value["customControl"] === "string") &&
|
|
258
157
|
(value["options"] === undefined ||
|
|
259
158
|
(Array.isArray(value["options"]) &&
|
|
260
159
|
value["options"].every((option) => typeof option === "string" || typeof option === "number")));
|
|
@@ -264,18 +163,3 @@ const isPanelArgType = (value) => isRecord(value) &&
|
|
|
264
163
|
* @param value - the message's field.
|
|
265
164
|
*/
|
|
266
165
|
export const isPanelArgTypes = (value) => isRecord(value) && Object.values(value).every(isPanelArgType);
|
|
267
|
-
/** Whether a value is a spy (`fn()` of `storybook/test` or Vitest): a function with its calls under `mock`. */
|
|
268
|
-
const isSpy = (value) => typeof value === "function" && "mock" in value;
|
|
269
|
-
/**
|
|
270
|
-
* The args whose calls the Events tab records as actions: those whose value is a spy, and those whose `argTypes`
|
|
271
|
-
* entry names an `action`. Explicit only: no arg is recorded for its name alone.
|
|
272
|
-
*
|
|
273
|
-
* @param args - the story's args.
|
|
274
|
-
* @param argTypes - the merged `argTypes`.
|
|
275
|
-
*/
|
|
276
|
-
export const actionNames = (args, argTypes) => [
|
|
277
|
-
...new Set([
|
|
278
|
-
...Object.entries(args).flatMap(([name, value]) => (isSpy(value) ? [name] : [])),
|
|
279
|
-
...Object.entries(argTypes).flatMap(([name, entry]) => typeof entry["action"] === "string" || entry["action"] === true ? [name] : [])
|
|
280
|
-
])
|
|
281
|
-
];
|
package/dist/src/argsProps.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
6
|
* An arg's kind is read from its value: a text, a number, a toggle, an event for an arg the frame records as an
|
|
7
|
-
* action
|
|
8
|
-
* names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
7
|
+
* action, fields for an object or a list. A value the source names (`namedValues`) is listed for
|
|
8
|
+
* reading, unless its type is one the source names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
9
9
|
* The story's `argTypes` are laid over these as over the types' props (`argTypes.ts`). A shared link's values are
|
|
10
10
|
* checked against these kinds (`addressArgs.ts`): without the types, a text arg takes any text, so a prop of a few
|
|
11
11
|
* values keeps a link to them only through its `argTypes` options. Pure.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
15
|
import type { ComponentDocs, PropDocs } from "./componentDocs.ts";
|
|
16
|
-
import type
|
|
16
|
+
import { type PanelArgs } from "./messages.ts";
|
|
17
17
|
/**
|
|
18
18
|
* The props a story's args stand for, in the args' order, then its actions the args do not hold.
|
|
19
19
|
*
|
package/dist/src/argsProps.js
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
6
|
* An arg's kind is read from its value: a text, a number, a toggle, an event for an arg the frame records as an
|
|
7
|
-
* action
|
|
8
|
-
* names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
7
|
+
* action, fields for an object or a list. A value the source names (`namedValues`) is listed for
|
|
8
|
+
* reading, unless its type is one the source names values for. Nothing is said of a prop the story gives no arg: without the types there is no way to know it.
|
|
9
9
|
* The story's `argTypes` are laid over these as over the types' props (`argTypes.ts`). A shared link's values are
|
|
10
10
|
* checked against these kinds (`addressArgs.ts`): without the types, a text arg takes any text, so a prop of a few
|
|
11
11
|
* values keeps a link to them only through its `argTypes` options. Pure.
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
|
+
import { isArgList, isNamedArg } from "./messages.js";
|
|
15
16
|
/**
|
|
16
17
|
* The prop an arg stands for, its kind and type read from its value.
|
|
17
18
|
*
|
|
@@ -31,10 +32,15 @@ const propOfArg = (name, value, isAction) => {
|
|
|
31
32
|
return { ...prop, kind: "toggle", type: "boolean" };
|
|
32
33
|
if (value === null)
|
|
33
34
|
return { ...prop, kind: "other", type: "null" };
|
|
34
|
-
if (Array.isArray(value))
|
|
35
|
-
return { ...prop, kind: "other", type: "array" };
|
|
36
35
|
// a value the source names: its type, so the panel offers the source's values for it
|
|
37
|
-
|
|
36
|
+
if (isNamedArg(value))
|
|
37
|
+
return { ...prop, kind: "other", type: value.of };
|
|
38
|
+
return {
|
|
39
|
+
...prop,
|
|
40
|
+
kind: "other",
|
|
41
|
+
type: isArgList(value) ? "array" : "object",
|
|
42
|
+
shape: { kind: "like", value }
|
|
43
|
+
};
|
|
38
44
|
};
|
|
39
45
|
/**
|
|
40
46
|
* The props a story's args stand for, in the args' order, then its actions the args do not hold.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
|
|
3
|
+
* without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
|
|
7
|
+
* could not serve. Both hold the same text: Vite's transform and the build run the same parser.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** Where in a file a bundler places an error, when it does; its column counts from 0. */
|
|
12
|
+
export type BundlerErrorPlace = {
|
|
13
|
+
/** The file, absolute. */
|
|
14
|
+
readonly id?: string | undefined;
|
|
15
|
+
/** Its line and column. */
|
|
16
|
+
readonly loc?: {
|
|
17
|
+
readonly file?: string | undefined;
|
|
18
|
+
readonly line: number;
|
|
19
|
+
readonly column: number;
|
|
20
|
+
} | undefined;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A bundler's error as lines: its place and reason first.
|
|
24
|
+
*
|
|
25
|
+
* @param message - its message, without colours.
|
|
26
|
+
* @param place - what the error says of its place.
|
|
27
|
+
* @returns the lines; none when the message says nothing.
|
|
28
|
+
*/
|
|
29
|
+
export declare const bundlerErrorLines: (message: string, place?: BundlerErrorPlace) => readonly string[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a bundler's error says, as Forgebook reports it: its file, line and column when they are known, and its reason,
|
|
3
|
+
* without the plugin that raised it, the stack and the code frame a terminal or an overlay has room for.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Shared by `forgebook build`, on what the build throws, and by a frame, on what the dev server says of a module it
|
|
7
|
+
* could not serve. Both hold the same text: Vite's transform and the build run the same parser.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/** The place at the head of a code frame (`╭─[ src/Broken.tsx:1:48 ]`), which a parse error alone names its file in. */
|
|
12
|
+
const FRAME_PLACE = /╭─\[\s*(.+?)\s*\]/;
|
|
13
|
+
/** A line that says nothing of the reason: a count of errors, a stack's, a code frame's. */
|
|
14
|
+
const NOISE = /^(?:(?:Transform|Build) failed with \d+ errors?:?$|at .*:\d+:\d+\)?$|[╭│╰─┬]|\d+\s*[│|])/;
|
|
15
|
+
/** The plugin or tool that raised an error, before its reason (`[PARSE_ERROR]`, `[plugin forgebook]`). */
|
|
16
|
+
const RAISED_BY = /^\[[^\]]+\]\s*/;
|
|
17
|
+
/**
|
|
18
|
+
* An error's place, as an editor counts: `file:line:column`, or the file alone.
|
|
19
|
+
*
|
|
20
|
+
* @param place - what the error says of it.
|
|
21
|
+
* @param message - its message, without colours.
|
|
22
|
+
*/
|
|
23
|
+
const placeOf = ({ id, loc }, message) => {
|
|
24
|
+
const framed = FRAME_PLACE.exec(message)?.[1];
|
|
25
|
+
if (framed !== undefined)
|
|
26
|
+
return framed;
|
|
27
|
+
const file = loc?.file ?? id;
|
|
28
|
+
if (file === undefined || loc === undefined)
|
|
29
|
+
return file;
|
|
30
|
+
return `${file}:${loc.line}:${loc.column + 1}`;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* A bundler's error as lines: its place and reason first.
|
|
34
|
+
*
|
|
35
|
+
* @param message - its message, without colours.
|
|
36
|
+
* @param place - what the error says of its place.
|
|
37
|
+
* @returns the lines; none when the message says nothing.
|
|
38
|
+
*/
|
|
39
|
+
export const bundlerErrorLines = (message, place = {}) => {
|
|
40
|
+
const lines = message
|
|
41
|
+
.split("\n")
|
|
42
|
+
.map((line) => line.replace(RAISED_BY, "").trim())
|
|
43
|
+
.filter((line) => line !== "" && !NOISE.test(line));
|
|
44
|
+
const where = placeOf(place, message);
|
|
45
|
+
const [first, ...rest] = lines;
|
|
46
|
+
if (first === undefined || where === undefined || first.startsWith(where))
|
|
47
|
+
return lines;
|
|
48
|
+
return [`${where}: ${first}`, ...rest];
|
|
49
|
+
};
|
package/dist/src/catalogue.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { type Backdrop, type CustomBackdrop } from "./backdrops.ts";
|
|
|
17
17
|
import { type ControlKeys } from "./controlKeys.ts";
|
|
18
18
|
import { type DeviceDefault } from "./deviceView.ts";
|
|
19
19
|
import type { CatalogueView } from "./namedViews.ts";
|
|
20
|
+
import type { StatusSettings } from "./storyStatuses.ts";
|
|
20
21
|
import { type TouchChoice, type ViewSwitch } from "./switches.ts";
|
|
21
22
|
/** A preset width of the toolbar. */
|
|
22
23
|
export type StageWidthPreset = {
|
|
@@ -58,8 +59,22 @@ export type A11ySettings = {
|
|
|
58
59
|
/** Rules turned off by id (`color-contrast`). */
|
|
59
60
|
readonly disabledRules: readonly string[];
|
|
60
61
|
};
|
|
62
|
+
/** Whether a story's play function runs when its frame opens. */
|
|
63
|
+
export type PlaySwitch = "on" | "off";
|
|
64
|
+
/**
|
|
65
|
+
* Why a configuration's `play` cannot be used, or none: it is written by JavaScript too, which no type stops.
|
|
66
|
+
*
|
|
67
|
+
* @param play - the value written.
|
|
68
|
+
*/
|
|
69
|
+
export declare const playProblem: (play: unknown) => string | undefined;
|
|
61
70
|
/** The lists a configuration may set, every one optional. */
|
|
62
71
|
export type CatalogueLists = {
|
|
72
|
+
/**
|
|
73
|
+
* Whether a story's play function runs when a reader opens it. `on` on a dev server and `off` in a build by default: an
|
|
74
|
+
* author is checking the play, a reader of published docs did not ask for it. A reader's own choice comes first, and
|
|
75
|
+
* tests and `check` run every play whatever this says.
|
|
76
|
+
*/
|
|
77
|
+
readonly play?: PlaySwitch;
|
|
63
78
|
/** The catalogue's id, the prefix of what the browser stores for it; from its title by default. */
|
|
64
79
|
readonly id?: string;
|
|
65
80
|
/** The toolbar's preset widths. */
|
|
@@ -160,6 +175,13 @@ export type CatalogueLists = {
|
|
|
160
175
|
* switch turns the ordering on or off over both.
|
|
161
176
|
*/
|
|
162
177
|
readonly requiredFirst?: RequiredFirst;
|
|
178
|
+
/**
|
|
179
|
+
* The tags that are statuses, shown as a badge on the component's or the story's page and in the sidebar, by tag:
|
|
180
|
+
* `{ review: { label: "In review", tone: "caution" } }`. `review`, `experimental` and `deprecated` are declared by
|
|
181
|
+
* default; a catalogue's entry restyles or renames one, `false` turns one off. A meta's tags give the component's
|
|
182
|
+
* status, a story's the story's; the tag filter filters by them.
|
|
183
|
+
*/
|
|
184
|
+
readonly statuses?: StatusSettings;
|
|
163
185
|
};
|
|
164
186
|
/** The shell's own appearance: light, dark, the system's, or the colour scheme of the story shown. */
|
|
165
187
|
export type Appearance = "light" | "dark" | "system" | "story";
|
|
@@ -201,6 +223,10 @@ export type CatalogueSettings = {
|
|
|
201
223
|
readonly gridStep: number;
|
|
202
224
|
/** The shell's texts replaced, by name. */
|
|
203
225
|
readonly strings: Readonly<Record<string, string>>;
|
|
226
|
+
/** Whether a story's play function runs when a reader opens it, as the catalogue says: an address names what differs. */
|
|
227
|
+
readonly play: PlaySwitch;
|
|
228
|
+
/** What a page shows unless its address names one: the reader's choice, else the catalogue's. */
|
|
229
|
+
readonly readerPlay: PlaySwitch;
|
|
204
230
|
/** Forgebook's own controls shown, in their order. */
|
|
205
231
|
readonly ownControls: readonly OwnControlId[];
|
|
206
232
|
/** The controls that start on the toolbar, in their order, by id. */
|
|
@@ -226,6 +252,11 @@ export type CatalogueSettings = {
|
|
|
226
252
|
readonly propGroups: readonly string[];
|
|
227
253
|
/** Where the required props are listed when a component or a story does not say; `"in-groups"` by default. */
|
|
228
254
|
readonly requiredFirst: RequiredFirst;
|
|
255
|
+
/**
|
|
256
|
+
* The statuses as the configuration declares them; the defaults are filled in where the badges are drawn
|
|
257
|
+
* (`storyStatuses.ts`), which load only for a catalogue whose stories have tags. None when it declares none.
|
|
258
|
+
*/
|
|
259
|
+
readonly statuses: StatusSettings | undefined;
|
|
229
260
|
};
|
|
230
261
|
/** WCAG 2.2 at levels A and AA: the rules every story passes by default. */
|
|
231
262
|
export declare const DEFAULT_A11Y_TAGS: readonly string[];
|
package/dist/src/catalogue.js
CHANGED
|
@@ -27,6 +27,14 @@ export const PANEL_TAB_IDS = ["props", "events", "play", "parts", "code", "a11y"
|
|
|
27
27
|
* keeps its id.
|
|
28
28
|
*/
|
|
29
29
|
export const OWN_CONTROL_IDS = [DEVICE_PARAMETER, "backdrop", "sheets", "text", "width", "audience"];
|
|
30
|
+
/**
|
|
31
|
+
* Why a configuration's `play` cannot be used, or none: it is written by JavaScript too, which no type stops.
|
|
32
|
+
*
|
|
33
|
+
* @param play - the value written.
|
|
34
|
+
*/
|
|
35
|
+
export const playProblem = (play) => play === undefined || play === "on" || play === "off"
|
|
36
|
+
? undefined
|
|
37
|
+
: `play is ${JSON.stringify(play)}: write "on" or "off"`;
|
|
30
38
|
/** The appearances, in the order the reader is offered them. */
|
|
31
39
|
export const APPEARANCES = ["light", "dark", "system", "story"];
|
|
32
40
|
/** WCAG 2.2 at levels A and AA: the rules every story passes by default. */
|
|
@@ -79,7 +87,7 @@ const toolbarProblem = (toolbar, switches) => {
|
|
|
79
87
|
const known = new Set([...switches.map((each) => each.id), ...OWN_CONTROL_IDS]);
|
|
80
88
|
const unknown = toolbar.find((id) => !known.has(id));
|
|
81
89
|
if (unknown !== undefined)
|
|
82
|
-
return `The toolbar names "${unknown}", which is no control of the catalogue`;
|
|
90
|
+
return `The toolbar names "${unknown}", which is no control of the catalogue: it has ${[...known].join(", ")}`;
|
|
83
91
|
const twice = toolbar.find((id, index) => toolbar.indexOf(id) !== index);
|
|
84
92
|
if (twice !== undefined)
|
|
85
93
|
return `The toolbar names "${twice}" twice`;
|
|
@@ -186,6 +194,8 @@ export const catalogueSettings = (title, switches, lists = {}, pluginTabs = [])
|
|
|
186
194
|
const toolbar = named.filter((id) => !OWN_CONTROL_IDS.some((own) => own === id && !ownControls.includes(own)));
|
|
187
195
|
return {
|
|
188
196
|
id: lists.id ?? idOf(title),
|
|
197
|
+
play: lists.play ?? "on",
|
|
198
|
+
readerPlay: lists.play ?? "on",
|
|
189
199
|
switches,
|
|
190
200
|
touch: touchChoiceOf(switches),
|
|
191
201
|
widths: lists.widths ?? DEFAULT_WIDTHS,
|
|
@@ -209,7 +219,8 @@ export const catalogueSettings = (title, switches, lists = {}, pluginTabs = [])
|
|
|
209
219
|
views: catalogueViews(switches, lists.views),
|
|
210
220
|
// checked when the configuration loads (`configFile.ts`): a model that is none is left out here
|
|
211
221
|
device: deviceDefaultOf(NO_DEVICE, lists.device),
|
|
212
|
-
requiredFirst: lists.requiredFirst ?? "in-groups"
|
|
222
|
+
requiredFirst: lists.requiredFirst ?? "in-groups",
|
|
223
|
+
statuses: lists.statuses
|
|
213
224
|
};
|
|
214
225
|
};
|
|
215
226
|
/**
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** A composed catalogue, as the configuration gives it and the shell reads it. */
|
|
2
|
+
export type CatalogueRef = {
|
|
3
|
+
/** Its id, the configuration's key: in the address (`?ref=<id>&story=<id>`). */
|
|
4
|
+
readonly id: string;
|
|
5
|
+
/** Its name, as its section's heading. */
|
|
6
|
+
readonly title: string;
|
|
7
|
+
/** Its address, always ending in `/`, so its files resolve under it (`https://ds.example.com/catalogue/`). */
|
|
8
|
+
readonly url: string;
|
|
9
|
+
};
|
|
10
|
+
/** A story of a composed catalogue, as its index lists it. */
|
|
11
|
+
export type RefStory = {
|
|
12
|
+
/** Its id in that catalogue. */
|
|
13
|
+
readonly id: string;
|
|
14
|
+
/** The name it shows. */
|
|
15
|
+
readonly name: string;
|
|
16
|
+
};
|
|
17
|
+
/** A component of a composed catalogue, with its listed stories. */
|
|
18
|
+
export type RefComponent = {
|
|
19
|
+
/** Its id in that catalogue. */
|
|
20
|
+
readonly id: string;
|
|
21
|
+
/** Its whole title (`Inputs/Select`). */
|
|
22
|
+
readonly title: string;
|
|
23
|
+
/** Its stories listed in the sidebar (unlisted ones left out), in that catalogue's order. */
|
|
24
|
+
readonly stories: readonly RefStory[];
|
|
25
|
+
};
|
|
26
|
+
/** What the sidebar shows of a composed catalogue. */
|
|
27
|
+
export type RefIndex = {
|
|
28
|
+
/** Its components, in its order; only those with a listed story. */
|
|
29
|
+
readonly components: readonly RefComponent[];
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* What the sidebar shows of a composed catalogue's index, read from the parsed file.
|
|
33
|
+
*
|
|
34
|
+
* @param value - the parsed `forgebook-agent.json`.
|
|
35
|
+
* @returns the index; none when the value is no index of a version this one reads.
|
|
36
|
+
*/
|
|
37
|
+
export declare const refIndexOf: (value: unknown) => RefIndex | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The address of a composed catalogue's index.
|
|
40
|
+
*
|
|
41
|
+
* @param ref - the composed catalogue.
|
|
42
|
+
*/
|
|
43
|
+
export declare const refIndexAddress: (ref: CatalogueRef) => string;
|
|
44
|
+
/**
|
|
45
|
+
* The address of a story in a composed catalogue's own page, to open it there.
|
|
46
|
+
*
|
|
47
|
+
* @param ref - the composed catalogue.
|
|
48
|
+
* @param storyId - the story's id in it.
|
|
49
|
+
*/
|
|
50
|
+
export declare const refStoryAddress: (ref: CatalogueRef, storyId: string) => string;
|
|
51
|
+
/**
|
|
52
|
+
* The address of a story alone in a composed catalogue's embed page, with this catalogue's switches.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* Every switch is written, defaults included: the composed catalogue's default may be another value, and the story
|
|
56
|
+
* shows what this catalogue's toolbar says. It keeps those it declares, with values it knows, and drops the others.
|
|
57
|
+
*
|
|
58
|
+
* @param ref - the composed catalogue.
|
|
59
|
+
* @param storyId - the story's id in it.
|
|
60
|
+
* @param switches - this catalogue's switches, by id, with the values the view gives them.
|
|
61
|
+
*/
|
|
62
|
+
export declare const refEmbedAddress: (ref: CatalogueRef, storyId: string, switches: Readonly<Record<string, string>>) => string;
|
|
63
|
+
/**
|
|
64
|
+
* What is wrong with one composed catalogue of the configuration; nothing when it can be shown.
|
|
65
|
+
*
|
|
66
|
+
* @param id - its key.
|
|
67
|
+
* @param value - what the configuration gives it.
|
|
68
|
+
*/
|
|
69
|
+
export declare const refProblem: (id: string, value: unknown) => string | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* A composed catalogue's address as the shell uses it: its folder, ending in `/`.
|
|
72
|
+
*
|
|
73
|
+
* @param url - the address the configuration gives, checked by `refProblem`.
|
|
74
|
+
*/
|
|
75
|
+
export declare const refFolder: (url: string) => string;
|