forgebook 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -74
- 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 +54 -6
- package/dist/src/addressArgs.js +72 -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 +58 -14
- 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/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- 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 +35 -60
- 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.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- 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 +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- 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
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A custom control's contract: a module a catalogue registers by name (`argControls` in `forgebook.config`) and a story
|
|
3
|
+
* uses as `argTypes: { x: { control: "name" } }`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `mount` rather than a component, so a team writes one in whatever its stories are written in: the shell knows nothing of
|
|
7
|
+
* how it draws. The value is always JSON with a declared schema, so a link keeps working and an agent can set it with no
|
|
8
|
+
* UI. The module runs in the shell's page, with a plugin's trust.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import type { JsonValue } from "./plugin.ts";
|
|
13
|
+
/** The types a value may be, as JSON Schema names them. */
|
|
14
|
+
export type SchemaType = "string" | "number" | "integer" | "boolean" | "null" | "object" | "array";
|
|
15
|
+
/**
|
|
16
|
+
* What a custom control's value looks like: a part of JSON Schema. A keyword outside this type is refused rather than
|
|
17
|
+
* ignored: a schema that says less than it seems to would let a link through.
|
|
18
|
+
*/
|
|
19
|
+
export type ValueSchema = {
|
|
20
|
+
/** What it is, for a reader. */
|
|
21
|
+
readonly title?: string;
|
|
22
|
+
/** What it is for, for a reader. */
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
/** What it holds at first, for a reader. */
|
|
25
|
+
readonly default?: unknown;
|
|
26
|
+
/** Its type, or the types it may be. */
|
|
27
|
+
readonly type?: SchemaType | readonly SchemaType[];
|
|
28
|
+
/** The values it may be. */
|
|
29
|
+
readonly enum?: readonly unknown[];
|
|
30
|
+
/** The one value it may be. */
|
|
31
|
+
readonly const?: unknown;
|
|
32
|
+
/** A number's lowest value. */
|
|
33
|
+
readonly minimum?: number;
|
|
34
|
+
/** A number's highest value. */
|
|
35
|
+
readonly maximum?: number;
|
|
36
|
+
/** A text's fewest characters. */
|
|
37
|
+
readonly minLength?: number;
|
|
38
|
+
/** A text's most characters. */
|
|
39
|
+
readonly maxLength?: number;
|
|
40
|
+
/** What a text matches: a regular expression with the `u` flag, without a repeat of a repeat, which could hang the page. */
|
|
41
|
+
readonly pattern?: string;
|
|
42
|
+
/** A list's items. */
|
|
43
|
+
readonly items?: ValueSchema;
|
|
44
|
+
/** A list's fewest items. */
|
|
45
|
+
readonly minItems?: number;
|
|
46
|
+
/** A list's most items. */
|
|
47
|
+
readonly maxItems?: number;
|
|
48
|
+
/** An object's fields. */
|
|
49
|
+
readonly properties?: Readonly<Record<string, ValueSchema>>;
|
|
50
|
+
/** The fields an object must give. */
|
|
51
|
+
readonly required?: readonly string[];
|
|
52
|
+
/** Any other field: `false` refuses them, a schema checks them; any by default. */
|
|
53
|
+
readonly additionalProperties?: boolean | ValueSchema;
|
|
54
|
+
/** Schemas of which it must fit at least one. */
|
|
55
|
+
readonly anyOf?: readonly ValueSchema[];
|
|
56
|
+
};
|
|
57
|
+
/** What a control is told of its arg, from the story's `argTypes` entry. */
|
|
58
|
+
export type ControlArgType = {
|
|
59
|
+
/** The arg's name. */
|
|
60
|
+
readonly name: string;
|
|
61
|
+
/** The name the panel shows. */
|
|
62
|
+
readonly label: string;
|
|
63
|
+
/** What the arg does; empty when nothing says. */
|
|
64
|
+
readonly description: string;
|
|
65
|
+
/** The entry's `options`: texts and numbers. */
|
|
66
|
+
readonly options?: readonly (string | number)[];
|
|
67
|
+
/** The control's `min`. */
|
|
68
|
+
readonly min?: number;
|
|
69
|
+
/** The control's `max`. */
|
|
70
|
+
readonly max?: number;
|
|
71
|
+
/** The control's `step`. */
|
|
72
|
+
readonly step?: number;
|
|
73
|
+
/** The control's `settings`: anything of its own, as JSON. */
|
|
74
|
+
readonly settings?: JsonValue;
|
|
75
|
+
};
|
|
76
|
+
/** What `mount` receives. */
|
|
77
|
+
export type ArgControlProps = {
|
|
78
|
+
/** The value to show; none when the prop has none. */
|
|
79
|
+
readonly value: JsonValue | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Gives the panel a new value, checked against `schema`; none leaves the prop without one. The control keeps what it
|
|
82
|
+
* draws: it is mounted again only when the value changes from outside (Reset, a link).
|
|
83
|
+
*/
|
|
84
|
+
readonly onChange: (value: JsonValue | undefined) => void;
|
|
85
|
+
/** What the story says of the arg. */
|
|
86
|
+
readonly argType: ControlArgType;
|
|
87
|
+
};
|
|
88
|
+
/** A custom control's module. */
|
|
89
|
+
export type ArgControlModule = {
|
|
90
|
+
/**
|
|
91
|
+
* Draws the control in an element the shell keeps for it.
|
|
92
|
+
*
|
|
93
|
+
* @param element - where it draws.
|
|
94
|
+
* @param props - its value, how to change it, and what the story says of the arg.
|
|
95
|
+
* @returns what takes it away.
|
|
96
|
+
*/
|
|
97
|
+
readonly mount: (element: HTMLElement, props: ArgControlProps) => () => void;
|
|
98
|
+
/** What its value looks like: a link's value and each `onChange` are checked against it. */
|
|
99
|
+
readonly schema: ValueSchema;
|
|
100
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A list or an object among a story's args as code, for the writers of a story's code in each framework: every framework
|
|
3
|
+
* writes it as a JavaScript literal, and differs only in how a text is quoted and how a named value is written. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { type ArgValue, type NamedArg } from "./messages.ts";
|
|
8
|
+
/** How a framework writes the leaves of a literal. */
|
|
9
|
+
export type ExpressionWriter = {
|
|
10
|
+
/** A text as an expression in this framework's markup. */
|
|
11
|
+
readonly text: (text: string) => string;
|
|
12
|
+
/** A named value as an expression, by its name. */
|
|
13
|
+
readonly named: (named: NamedArg) => string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* A value as a JavaScript expression.
|
|
17
|
+
*
|
|
18
|
+
* @param value - the value.
|
|
19
|
+
* @param writer - how the framework writes its leaves.
|
|
20
|
+
*/
|
|
21
|
+
export declare const argExpression: (value: ArgValue, writer: ExpressionWriter) => string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A list or an object among a story's args as code, for the writers of a story's code in each framework: every framework
|
|
3
|
+
* writes it as a JavaScript literal, and differs only in how a text is quoted and how a named value is written. Pure.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { isArgList, isArgObject, isDateArg, isNamedArg } from "./messages.js";
|
|
8
|
+
/** A field's name in an object literal: bare when JavaScript allows it. */
|
|
9
|
+
const fieldName = (name, writer) => /^[A-Za-z_$][\w$]*$/.test(name) ? name : writer.text(name);
|
|
10
|
+
/**
|
|
11
|
+
* A value as a JavaScript expression.
|
|
12
|
+
*
|
|
13
|
+
* @param value - the value.
|
|
14
|
+
* @param writer - how the framework writes its leaves.
|
|
15
|
+
*/
|
|
16
|
+
export const argExpression = (value, writer) => {
|
|
17
|
+
if (typeof value === "string")
|
|
18
|
+
return writer.text(value);
|
|
19
|
+
if (isNamedArg(value))
|
|
20
|
+
return writer.named(value);
|
|
21
|
+
if (isDateArg(value))
|
|
22
|
+
return `new Date(${writer.text(value.forgebookDate)})`;
|
|
23
|
+
if (isArgList(value))
|
|
24
|
+
return `[${value.map((item) => argExpression(item, writer)).join(", ")}]`;
|
|
25
|
+
if (isArgObject(value)) {
|
|
26
|
+
const fields = Object.entries(value).map(([name, each]) => `${fieldName(name, writer)}: ${argExpression(each, writer)}`);
|
|
27
|
+
return fields.length === 0 ? "{}" : `{ ${fields.join(", ")} }`;
|
|
28
|
+
}
|
|
29
|
+
return String(value);
|
|
30
|
+
};
|
package/dist/src/argTypes.d.ts
CHANGED
|
@@ -1,22 +1,34 @@
|
|
|
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
15
|
import type { StoryControlsSetting } from "@forgebook/story-format/source";
|
|
16
|
+
import { type ArgCondition } from "./argConditions.ts";
|
|
16
17
|
import type { PropDocs } from "./componentDocs.ts";
|
|
18
|
+
import type { ArgValue } from "./messages.ts";
|
|
17
19
|
import type { NamedValues } from "./namedValues.ts";
|
|
18
20
|
/** A control as the panel draws it; `none` for an arg the panel lists without a control. */
|
|
19
|
-
export type PanelControl = "select" | "radio" | "check" | "multi-select" | "boolean" | "text" | "number" | "range" | "color" | "date" | "none";
|
|
21
|
+
export type PanelControl = "select" | "radio" | "check" | "multi-select" | "boolean" | "text" | "number" | "range" | "color" | "date" | "object" | "textarea" | "token" | "file" | "none";
|
|
22
|
+
/** Which of the catalogue's design tokens a `token` control offers, and what the story receives for one. */
|
|
23
|
+
export type TokenRequest = {
|
|
24
|
+
/** A token's type (`color`, `dimension`) or a part of its name (`space`, `radius`): what it offers. */
|
|
25
|
+
readonly of: string;
|
|
26
|
+
/**
|
|
27
|
+
* What the story receives, with `{name}` for the token's name in CSS's form and `{value}` for its value
|
|
28
|
+
* (`var(--{name})`); its value by default.
|
|
29
|
+
*/
|
|
30
|
+
readonly format?: string;
|
|
31
|
+
};
|
|
20
32
|
/** How the panel shows one arg, from its `argTypes` entry: what crosses from the frame to the shell. */
|
|
21
33
|
export type PanelArgType = {
|
|
22
34
|
/** The name the panel shows, when it is not the arg's. */
|
|
@@ -37,6 +49,16 @@ export type PanelArgType = {
|
|
|
37
49
|
readonly max?: number;
|
|
38
50
|
/** A range's or a number's step. */
|
|
39
51
|
readonly step?: number;
|
|
52
|
+
/** When the panel shows the arg (`if`); none always. */
|
|
53
|
+
readonly if?: ArgCondition;
|
|
54
|
+
/** A `token` control's tokens. */
|
|
55
|
+
readonly tokens?: TokenRequest;
|
|
56
|
+
/** The files a `file` control takes, as `<input accept>` writes it. */
|
|
57
|
+
readonly accept?: string;
|
|
58
|
+
/** The custom control it names, of those `argControls` registers: any name that is none of the panel's. */
|
|
59
|
+
readonly customControl?: string;
|
|
60
|
+
/** The custom control's `settings`. */
|
|
61
|
+
readonly settings?: ArgValue;
|
|
40
62
|
};
|
|
41
63
|
/** The panel's arg types, by arg. */
|
|
42
64
|
export type PanelArgTypes = Readonly<Record<string, PanelArgType>>;
|
|
@@ -54,6 +76,14 @@ export type PanelProp = PropDocs & {
|
|
|
54
76
|
readonly max?: number;
|
|
55
77
|
/** A range's or a number's step. */
|
|
56
78
|
readonly step?: number;
|
|
79
|
+
/** A `token` control's tokens. */
|
|
80
|
+
readonly tokens?: TokenRequest;
|
|
81
|
+
/** The files a `file` control takes. */
|
|
82
|
+
readonly accept?: string;
|
|
83
|
+
/** The custom control it names. */
|
|
84
|
+
readonly customControl?: string;
|
|
85
|
+
/** The custom control's `settings`. */
|
|
86
|
+
readonly settings?: ArgValue;
|
|
57
87
|
};
|
|
58
88
|
/**
|
|
59
89
|
* Whether a prop is a colour: named so by its `argTypes`, or by the name convention (`color`, `accentColor`).
|
|
@@ -70,67 +100,26 @@ export declare const isColorProp: (prop: PanelProp) => boolean;
|
|
|
70
100
|
export declare const isNamedProp: (prop: PanelProp, namedValues: NamedValues) => boolean;
|
|
71
101
|
/**
|
|
72
102
|
* 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
|
|
73
|
-
* text is set as one; any other `other` prop, and an event, cannot be set; nor a prop
|
|
103
|
+
* 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
|
|
104
|
+
* the story's controls leave out.
|
|
74
105
|
*
|
|
75
106
|
* @param props - the component's props, with the story's `argTypes` laid over them.
|
|
76
107
|
* @param controls - the props the story lets the panel set.
|
|
77
108
|
* @param namedValues - the source's named values.
|
|
78
109
|
*/
|
|
79
110
|
export declare const settableProps: (props: readonly PanelProp[], controls: StoryControlsSetting, namedValues: NamedValues) => PanelProp[];
|
|
80
|
-
/**
|
|
81
|
-
* The `argTypes` of the meta and the story, merged: each arg's entry from both, the story's fields over the meta's.
|
|
82
|
-
*
|
|
83
|
-
* @param meta - the meta's `argTypes`.
|
|
84
|
-
* @param story - the story's `argTypes`.
|
|
85
|
-
*/
|
|
86
|
-
export declare const mergedArgTypes: (meta: unknown, story: unknown) => Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
87
|
-
/**
|
|
88
|
-
* The arg types the frame sends: each entry read, and the args `parameters.controls.exclude` names hidden.
|
|
89
|
-
*
|
|
90
|
-
* @param argTypes - the merged `argTypes`.
|
|
91
|
-
* @param excluded - the args `parameters.controls.exclude` names.
|
|
92
|
-
*/
|
|
93
|
-
export declare const panelArgTypesOf: (argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>, excluded: readonly string[]) => PanelArgTypes;
|
|
94
|
-
/**
|
|
95
|
-
* The args with each `mapping` applied: an arg whose value is a key of its entry's `mapping` receives the value the
|
|
96
|
-
* key stands for, as Storybook's (an arg written as the key in the story, or chosen in the panel).
|
|
97
|
-
*
|
|
98
|
-
* @param args - the args.
|
|
99
|
-
* @param argTypes - the merged `argTypes`.
|
|
100
|
-
*/
|
|
101
|
-
export declare const mappedArgs: (args: Readonly<Record<string, unknown>>, argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => Readonly<Record<string, unknown>>;
|
|
102
111
|
/**
|
|
103
112
|
* The panel's props: the component's, with their arg types laid over them, the hidden ones left out, then the args
|
|
104
113
|
* only the arg types name, in their order.
|
|
105
114
|
*
|
|
106
115
|
* @param props - the props the component's types give.
|
|
107
116
|
* @param argTypes - the story's arg types; none leaves the props as they are.
|
|
117
|
+
* @param storyArgs - the story's own args, for an `object` control no type describes; none by default.
|
|
108
118
|
*/
|
|
109
|
-
export declare const panelProps: (props: readonly PropDocs[], argTypes: PanelArgTypes) => readonly PanelProp[];
|
|
110
|
-
/**
|
|
111
|
-
* The props the panel can set, as the story's parameters say: `false` none, a list or `{ include }` those, anything
|
|
112
|
-
* else every one.
|
|
113
|
-
*
|
|
114
|
-
* @param value - `parameters.controls`.
|
|
115
|
-
*/
|
|
116
|
-
export declare const controlsOfParameter: (value: unknown) => StoryControlsSetting;
|
|
117
|
-
/**
|
|
118
|
-
* The args `parameters.controls.exclude` hides.
|
|
119
|
-
*
|
|
120
|
-
* @param value - `parameters.controls`.
|
|
121
|
-
*/
|
|
122
|
-
export declare const excludedControls: (value: unknown) => readonly string[];
|
|
119
|
+
export declare const panelProps: (props: readonly PropDocs[], argTypes: PanelArgTypes, storyArgs?: Readonly<Record<string, ArgValue>>) => readonly PanelProp[];
|
|
123
120
|
/**
|
|
124
121
|
* Whether a value received from a frame is a story's panel arg types.
|
|
125
122
|
*
|
|
126
123
|
* @param value - the message's field.
|
|
127
124
|
*/
|
|
128
125
|
export declare const isPanelArgTypes: (value: unknown) => value is PanelArgTypes;
|
|
129
|
-
/**
|
|
130
|
-
* The args whose calls the Events tab records as actions: those whose value is a spy, and those whose `argTypes`
|
|
131
|
-
* entry names an `action`. Explicit only: no arg is recorded for its name alone.
|
|
132
|
-
*
|
|
133
|
-
* @param args - the story's args.
|
|
134
|
-
* @param argTypes - the merged `argTypes`.
|
|
135
|
-
*/
|
|
136
|
-
export declare const actionNames: (args: Readonly<Record<string, unknown>>, argTypes: Readonly<Record<string, Readonly<Record<string, unknown>>>>) => readonly string[];
|
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,48 @@ 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
|
const { canTakeText: _canTakeText, ...rest } = prop;
|
|
101
|
+
// a control the story names decides what its value is: the type's shape no longer draws nor checks it
|
|
102
|
+
const { shape: _shape, ...shapeless } = isReadOnly || argType.customControl !== undefined ? rest : prop;
|
|
197
103
|
return {
|
|
198
|
-
...(
|
|
104
|
+
...(control === undefined && argType.customControl === undefined ? prop : shapeless),
|
|
199
105
|
...(control === undefined ? {} : { kind: KIND_OF_CONTROL[control], control }),
|
|
200
106
|
...(argType.options === undefined ? {} : { choices: argType.options }),
|
|
201
107
|
...(argType.description === undefined ? {} : { description: argType.description }),
|
|
@@ -203,58 +109,49 @@ const withArgType = (prop, argType) => {
|
|
|
203
109
|
...(argType.labels === undefined ? {} : { labels: argType.labels }),
|
|
204
110
|
...(argType.min === undefined ? {} : { min: argType.min }),
|
|
205
111
|
...(argType.max === undefined ? {} : { max: argType.max }),
|
|
206
|
-
...(argType.step === undefined ? {} : { step: argType.step })
|
|
112
|
+
...(argType.step === undefined ? {} : { step: argType.step }),
|
|
113
|
+
...editorFieldsOf(prop, argType, own)
|
|
207
114
|
};
|
|
208
115
|
};
|
|
209
116
|
/** 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);
|
|
117
|
+
const propOfArgType = (name, argType, own) => withArgType({ name, kind: "text", type: "", description: "", isRequired: false }, argType, own);
|
|
118
|
+
/** A prop as its TSDoc asks: chosen among the tokens `@token` names, when it is set as a text. */
|
|
119
|
+
const propAsDocumented = (prop) => prop.token !== undefined && (prop.kind === "text" || prop.canTakeText === true)
|
|
120
|
+
? { ...prop, kind: "text", control: "token", tokens: { of: prop.token } }
|
|
121
|
+
: prop;
|
|
211
122
|
/**
|
|
212
123
|
* The panel's props: the component's, with their arg types laid over them, the hidden ones left out, then the args
|
|
213
124
|
* only the arg types name, in their order.
|
|
214
125
|
*
|
|
215
126
|
* @param props - the props the component's types give.
|
|
216
127
|
* @param argTypes - the story's arg types; none leaves the props as they are.
|
|
128
|
+
* @param storyArgs - the story's own args, for an `object` control no type describes; none by default.
|
|
217
129
|
*/
|
|
218
|
-
export const panelProps = (props, argTypes) => {
|
|
130
|
+
export const panelProps = (props, argTypes, storyArgs = {}) => {
|
|
219
131
|
const typed = new Set(props.map((prop) => prop.name));
|
|
220
132
|
const fromTypes = props.flatMap((prop) => {
|
|
221
133
|
const argType = argTypes[prop.name];
|
|
222
134
|
if (argType === undefined)
|
|
223
|
-
return [prop];
|
|
224
|
-
|
|
135
|
+
return [propAsDocumented(prop)];
|
|
136
|
+
if (argType.isHidden)
|
|
137
|
+
return [];
|
|
138
|
+
return [
|
|
139
|
+
withArgType(argType.control === undefined ? propAsDocumented(prop) : prop, argType, storyArgs[prop.name])
|
|
140
|
+
];
|
|
225
141
|
});
|
|
226
|
-
const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType)]);
|
|
142
|
+
const fromArgTypes = Object.entries(argTypes).flatMap(([name, argType]) => typed.has(name) || argType.isHidden ? [] : [propOfArgType(name, argType, storyArgs[name])]);
|
|
227
143
|
return [...fromTypes, ...fromArgTypes];
|
|
228
144
|
};
|
|
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
145
|
/** Whether a value is one arg's panel arg type. */
|
|
255
146
|
const isPanelArgType = (value) => isRecord(value) &&
|
|
256
147
|
typeof value["isHidden"] === "boolean" &&
|
|
257
|
-
(value["
|
|
148
|
+
(value["if"] === undefined || isArgCondition(value["if"])) &&
|
|
149
|
+
(value["control"] === undefined ||
|
|
150
|
+
(typeof value["control"] === "string" && Object.hasOwn(KIND_OF_CONTROL, value["control"]))) &&
|
|
151
|
+
(value["tokens"] === undefined ||
|
|
152
|
+
(isRecord(value["tokens"]) && typeof value["tokens"]["of"] === "string")) &&
|
|
153
|
+
(value["accept"] === undefined || typeof value["accept"] === "string") &&
|
|
154
|
+
(value["customControl"] === undefined || typeof value["customControl"] === "string") &&
|
|
258
155
|
(value["options"] === undefined ||
|
|
259
156
|
(Array.isArray(value["options"]) &&
|
|
260
157
|
value["options"].every((option) => typeof option === "string" || typeof option === "number")));
|
|
@@ -264,18 +161,3 @@ const isPanelArgType = (value) => isRecord(value) &&
|
|
|
264
161
|
* @param value - the message's field.
|
|
265
162
|
*/
|
|
266
163
|
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
|
*
|