forgebook 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +914 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { StoryTree } from "./storyTree.ts";
|
|
2
|
+
/** One tag the catalogue's stories hold. */
|
|
3
|
+
export type CatalogueTag = {
|
|
4
|
+
/** The tag. */
|
|
5
|
+
readonly tag: string;
|
|
6
|
+
/** How many listed stories hold it. */
|
|
7
|
+
readonly stories: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Whether a story's tags pass a filter.
|
|
11
|
+
*
|
|
12
|
+
* @param tags - the story's tags.
|
|
13
|
+
* @param filter - the filter's tags, each `name` or `!name`; none keeps every story.
|
|
14
|
+
*/
|
|
15
|
+
export declare const passesTags: (tags: readonly string[], filter: readonly string[]) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The tags a person can filter a catalogue by, by name, with the listed stories each one holds.
|
|
18
|
+
*
|
|
19
|
+
* @param tree - the tree.
|
|
20
|
+
*/
|
|
21
|
+
export declare const catalogueTags: (tree: StoryTree) => readonly CatalogueTag[];
|
|
22
|
+
/**
|
|
23
|
+
* The tree the sidebar lists under a filter: only the stories that pass, and what holds them. Pages keep opening from
|
|
24
|
+
* the whole tree: an address still shows a story the filter leaves out.
|
|
25
|
+
*
|
|
26
|
+
* @param tree - the whole tree.
|
|
27
|
+
* @param filter - the filter's tags, each `name` or `!name`; none gives the tree as it is.
|
|
28
|
+
*/
|
|
29
|
+
export declare const taggedTree: (tree: StoryTree, filter: readonly string[]) => StoryTree;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tag filter: which stories a list of tags keeps, for the sidebar's tree and the agents' documents alike.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Written as CSF writes a tag: `beta` asks for it, `!beta` asks to leave it out. A story stays when it holds any tag
|
|
6
|
+
* asked for and none left out, as Storybook's filter reads its choices, so ticking one more tag widens the list. A docs
|
|
7
|
+
* page holds no tags, so it reads as a story with none. Pure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { isFilterTag } from "./storyTagNames.js";
|
|
12
|
+
/**
|
|
13
|
+
* Whether a story's tags pass a filter.
|
|
14
|
+
*
|
|
15
|
+
* @param tags - the story's tags.
|
|
16
|
+
* @param filter - the filter's tags, each `name` or `!name`; none keeps every story.
|
|
17
|
+
*/
|
|
18
|
+
export const passesTags = (tags, filter) => {
|
|
19
|
+
const asked = filter.filter((tag) => !tag.startsWith("!"));
|
|
20
|
+
return (filter.every((tag) => !tag.startsWith("!") || !tags.includes(tag.slice(1))) &&
|
|
21
|
+
(asked.length === 0 || asked.some((tag) => tags.includes(tag))));
|
|
22
|
+
};
|
|
23
|
+
/** Every component of a source, whatever group it sits in. */
|
|
24
|
+
const componentsOf = (source) => source.families.flatMap((family) => family.groups.flatMap((group) => group.components));
|
|
25
|
+
/**
|
|
26
|
+
* The tags a person can filter a catalogue by, by name, with the listed stories each one holds.
|
|
27
|
+
*
|
|
28
|
+
* @param tree - the tree.
|
|
29
|
+
*/
|
|
30
|
+
export const catalogueTags = (tree) => {
|
|
31
|
+
const counts = new Map();
|
|
32
|
+
const stories = tree.sources.flatMap((source) => componentsOf(source).flatMap((component) => component.stories));
|
|
33
|
+
for (const tag of stories.flatMap((story) => story.tags.filter(isFilterTag))) {
|
|
34
|
+
counts.set(tag, (counts.get(tag) ?? 0) + 1);
|
|
35
|
+
}
|
|
36
|
+
return [...counts]
|
|
37
|
+
.map(([tag, count]) => ({ tag, stories: count }))
|
|
38
|
+
.sort((one, other) => one.tag.localeCompare(other.tag));
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* A group with what the filter keeps: its components with only the stories that pass, and the aliases of the components
|
|
42
|
+
* that stay; an alias is opened to its component's page, so it follows that component.
|
|
43
|
+
*
|
|
44
|
+
* @param group - the group.
|
|
45
|
+
* @param filter - the filter's tags.
|
|
46
|
+
* @param keptTitles - the titles of the source's components that stay.
|
|
47
|
+
*/
|
|
48
|
+
const groupOf = (group, filter, keptTitles) => ({
|
|
49
|
+
...group,
|
|
50
|
+
components: group.components.flatMap((component) => {
|
|
51
|
+
const stories = component.stories.filter((story) => passesTags(story.tags, filter));
|
|
52
|
+
return stories.length === 0 ? [] : [{ ...component, stories }];
|
|
53
|
+
}),
|
|
54
|
+
aliases: group.aliases.filter((alias) => keptTitles.has(alias.title))
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* The tree the sidebar lists under a filter: only the stories that pass, and what holds them. Pages keep opening from
|
|
58
|
+
* the whole tree: an address still shows a story the filter leaves out.
|
|
59
|
+
*
|
|
60
|
+
* @param tree - the whole tree.
|
|
61
|
+
* @param filter - the filter's tags, each `name` or `!name`; none gives the tree as it is.
|
|
62
|
+
*/
|
|
63
|
+
export const taggedTree = (tree, filter) => {
|
|
64
|
+
if (filter.length === 0)
|
|
65
|
+
return tree;
|
|
66
|
+
const hasAsked = filter.some((tag) => !tag.startsWith("!"));
|
|
67
|
+
return {
|
|
68
|
+
...tree,
|
|
69
|
+
sources: tree.sources.map((source) => {
|
|
70
|
+
const keptTitles = new Set(componentsOf(source)
|
|
71
|
+
.filter((component) => component.stories.some((story) => passesTags(story.tags, filter)))
|
|
72
|
+
.map((component) => component.title));
|
|
73
|
+
return {
|
|
74
|
+
...source,
|
|
75
|
+
pages: hasAsked ? [] : source.pages,
|
|
76
|
+
families: source.families.flatMap((family) => {
|
|
77
|
+
const groups = family.groups
|
|
78
|
+
.map((group) => groupOf(group, filter, keptTitles))
|
|
79
|
+
.filter((group) => group.components.length > 0 || group.aliases.length > 0);
|
|
80
|
+
return groups.length === 0 ? [] : [{ ...family, groups }];
|
|
81
|
+
})
|
|
82
|
+
};
|
|
83
|
+
})
|
|
84
|
+
};
|
|
85
|
+
};
|
package/dist/src/storyTree.d.ts
CHANGED
|
@@ -97,6 +97,11 @@ export type TreeComponent = {
|
|
|
97
97
|
* none, for the catalogue's.
|
|
98
98
|
*/
|
|
99
99
|
readonly requiredFirst: RequiredFirst | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Its first file's meta's tags, the previews' under them: what is said of the component as a whole, its status
|
|
102
|
+
* among them (`storyStatuses.ts`), whatever a story adds or takes away. Empty when none.
|
|
103
|
+
*/
|
|
104
|
+
readonly tags: readonly string[];
|
|
100
105
|
};
|
|
101
106
|
/** A group's entry for a component that lives elsewhere and is listed here too (the meta's `alsoIn`). */
|
|
102
107
|
export type TreeAlias = {
|
|
@@ -239,6 +244,14 @@ export declare const testedStoryLocations: (tree: StoryTree) => StoryLocation[];
|
|
|
239
244
|
* @returns its place, or `undefined` when no story has this id.
|
|
240
245
|
*/
|
|
241
246
|
export declare const findStory: (tree: StoryTree, id: string) => StoryLocation | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* The story an address names: its `story`, or the one of a link written for Storybook. Either is only a name: it opens
|
|
249
|
+
* a page by `findStory`, or says that no such story is there.
|
|
250
|
+
*
|
|
251
|
+
* @param params - the address's query.
|
|
252
|
+
* @returns the story's id; none when the address names none.
|
|
253
|
+
*/
|
|
254
|
+
export declare const storyOfAddress: (params: URLSearchParams) => string | null;
|
|
242
255
|
/** Where a component sits: its source, family and group. */
|
|
243
256
|
export type ComponentLocation = Omit<StoryLocation, "story">;
|
|
244
257
|
/**
|
package/dist/src/storyTree.js
CHANGED
|
@@ -126,7 +126,8 @@ const startedComponent = (source, file, entry, titlesById) => {
|
|
|
126
126
|
const placedComponents = (source, problems) => {
|
|
127
127
|
const byTitle = new Map();
|
|
128
128
|
const titlesById = new Map();
|
|
129
|
-
const index = sourceFiles(source)
|
|
129
|
+
const { index, problems: unread = [] } = sourceFiles(source);
|
|
130
|
+
problems.push(...unread);
|
|
130
131
|
// sorted, so a component's files, and so its stories, its docs and a clash's winner, never depend on the groups' order
|
|
131
132
|
for (const file of Object.keys(index).sort()) {
|
|
132
133
|
const entry = index[file];
|
|
@@ -249,7 +250,8 @@ const sourceFamilies = (source, problems) => {
|
|
|
249
250
|
design: componentDesign(component),
|
|
250
251
|
// its first file's, as its docs are
|
|
251
252
|
propGroups: component.files[0]?.entry.propGroups ?? [],
|
|
252
|
-
requiredFirst: component.files[0]?.entry.requiredFirst
|
|
253
|
+
requiredFirst: component.files[0]?.entry.requiredFirst,
|
|
254
|
+
tags: component.files[0]?.entry.tags ?? []
|
|
253
255
|
});
|
|
254
256
|
}
|
|
255
257
|
placeAliases(source, placed, families, problems);
|
|
@@ -299,7 +301,13 @@ export const storyTree = (sources) => {
|
|
|
299
301
|
const shown = tree.filter((source) => source.families.length > 0 || source.pages.length > 0);
|
|
300
302
|
return {
|
|
301
303
|
sources: shown,
|
|
302
|
-
|
|
304
|
+
// a script that does not parse is named by every group a dev server serves: once is enough
|
|
305
|
+
problems: [
|
|
306
|
+
...new Set([
|
|
307
|
+
...problems,
|
|
308
|
+
...pageProblems(shown, new Set(storyIds(shown)), new Set(componentIds(shown)))
|
|
309
|
+
])
|
|
310
|
+
]
|
|
303
311
|
};
|
|
304
312
|
};
|
|
305
313
|
/**
|
|
@@ -341,8 +349,20 @@ export const testedStoryLocations = (tree) => storyLocations(tree).filter((locat
|
|
|
341
349
|
export const findStory = (tree, id) => {
|
|
342
350
|
const locations = storyLocations(tree);
|
|
343
351
|
return (locations.find((location) => location.story.id === id) ??
|
|
344
|
-
locations.find(({ source, component, story }) => formerStoryId(source.id, component.title, story.exportName) === id)
|
|
352
|
+
locations.find(({ source, component, story }) => formerStoryId(source.id, component.title, story.exportName) === id) ??
|
|
353
|
+
// a Storybook link names no source: the first in the catalogue's order that has a story of that id
|
|
354
|
+
locations.find(({ source, story }) => story.id === `${source.id}:${id}`));
|
|
345
355
|
};
|
|
356
|
+
/** Storybook's address of a story: `?path=/story/<id>`. */
|
|
357
|
+
const STORYBOOK_STORY_PATH = /^\/story\/([^/]+)$/;
|
|
358
|
+
/**
|
|
359
|
+
* The story an address names: its `story`, or the one of a link written for Storybook. Either is only a name: it opens
|
|
360
|
+
* a page by `findStory`, or says that no such story is there.
|
|
361
|
+
*
|
|
362
|
+
* @param params - the address's query.
|
|
363
|
+
* @returns the story's id; none when the address names none.
|
|
364
|
+
*/
|
|
365
|
+
export const storyOfAddress = (params) => params.get("story") ?? STORYBOOK_STORY_PATH.exec(params.get("path") ?? "")?.[1] ?? null;
|
|
346
366
|
/**
|
|
347
367
|
* Every component of the tree with its place.
|
|
348
368
|
*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storybook's form of an address's `args`, read as Storybook's `parseArgsParam` reads it, and its values typed for the
|
|
3
|
+
* props that receive them. Loaded only for a link in that form (`addressArgsParam.ts`). Pure.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `name:value` pairs split by `;`, a list as `tags[0]:a;tags[1]:b`, `tags[]:a;tags[]:b` or `tags:a;tags:b`, and the marked
|
|
7
|
+
* values `!true`, `!false`, `!null`, `!hex(ff0000)`, `!rgba(1,2,3,0.5)`, `!hsl(…)`, `!date(…)`. Its unmarked values are
|
|
8
|
+
* only text, whatever they look like: whether `5` is a number and `007` a text depends on the prop, which the story
|
|
9
|
+
* declares later, so they stay text here and the check types them, keeping what Storybook's own reading loses (its `007`
|
|
10
|
+
* becomes `7`). Storybook leaves out any text outside a few characters as unsafe; here every value meets the same check as
|
|
11
|
+
* a JSON one (`addressArgs.ts`), so non-ASCII text is read.
|
|
12
|
+
*
|
|
13
|
+
* What cannot be held is named as unread: an object (`style.color:red`), a list with a hole (`tags[1]:b`, which patches a
|
|
14
|
+
* list the story owns), `!undefined`, a date that is none.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { ArgsParamRead } from "./addressArgsParam.ts";
|
|
19
|
+
/**
|
|
20
|
+
* Storybook's form, read.
|
|
21
|
+
*
|
|
22
|
+
* @param param - the parameter.
|
|
23
|
+
*/
|
|
24
|
+
export declare const readStorybookArgs: (param: string) => ArgsParamRead;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { isChoiceList, UNSET_ARG } from "./messages.js";
|
|
2
|
+
/** A number as Storybook's links write it. */
|
|
3
|
+
const NUMBER_TEXT = /^-?[0-9]+(\.[0-9]+)?$/;
|
|
4
|
+
/** A colour as Storybook writes it after its `!`. */
|
|
5
|
+
const COLOR = /^(rgba?|hsla?)\(([0-9]{1,3}),\s?([0-9]{1,3})%?,\s?([0-9]{1,3})%?,?\s?([0-9](\.[0-9]{1,2})?)?\)$/i;
|
|
6
|
+
/** An arg's name in Storybook's form, with a list's index: `tags[1]`, `tags[]`. */
|
|
7
|
+
const STORYBOOK_KEY = /^([^.[\]]+)(?:\[([0-9]*)\])?$/;
|
|
8
|
+
/**
|
|
9
|
+
* What a text of a link is for a prop, whose type it does not carry: a number for a prop that takes numbers, a toggle's
|
|
10
|
+
* value, a choice's option; a text otherwise.
|
|
11
|
+
*
|
|
12
|
+
* @param prop - a prop the panel sets.
|
|
13
|
+
* @param text - the link's text.
|
|
14
|
+
*/
|
|
15
|
+
const typedText = (prop, text) => {
|
|
16
|
+
const option = (prop.choices ?? []).find((choice) => String(choice) === text);
|
|
17
|
+
if (option !== undefined)
|
|
18
|
+
return option;
|
|
19
|
+
const isToggle = prop.control === "boolean" || (prop.control === undefined && prop.kind === "toggle");
|
|
20
|
+
if (isToggle && (text === "true" || text === "false"))
|
|
21
|
+
return text === "true";
|
|
22
|
+
const isNumeric = prop.control === "number" ||
|
|
23
|
+
prop.control === "range" ||
|
|
24
|
+
prop.control === "date" ||
|
|
25
|
+
(prop.control === undefined && prop.kind === "number") ||
|
|
26
|
+
// a mixed union's number (`"sm" | number`): a text it takes too stays one only when the text is no number
|
|
27
|
+
(prop.shape?.kind === "union" && prop.shape.of.some((member) => member.kind === "number")) ||
|
|
28
|
+
(prop.shape?.kind === "list" && prop.shape.of.kind === "number");
|
|
29
|
+
return isNumeric && NUMBER_TEXT.test(text) ? Number(text) : text;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
/** What a text is for a custom control, whose type only its schema knows: a number or a toggle when it writes one. */
|
|
33
|
+
const customText = (text) => {
|
|
34
|
+
if (text === "true" || text === "false")
|
|
35
|
+
return text === "true";
|
|
36
|
+
return NUMBER_TEXT.test(text) ? Number(text) : text;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* A value of a link, typed for a prop.
|
|
40
|
+
*
|
|
41
|
+
* @param prop - the prop that receives it.
|
|
42
|
+
* @param value - the link's value.
|
|
43
|
+
*/
|
|
44
|
+
const typedLinkValue = (prop, value) => {
|
|
45
|
+
if (typeof value === "string" && prop.customControl !== undefined)
|
|
46
|
+
return customText(value);
|
|
47
|
+
if (typeof value === "string")
|
|
48
|
+
return typedText(prop, value);
|
|
49
|
+
if (!isChoiceList(value))
|
|
50
|
+
return value;
|
|
51
|
+
return value.map((item) => {
|
|
52
|
+
const typed = typeof item === "string" ? typedText(prop, item) : item;
|
|
53
|
+
return typeof typed === "boolean" ? String(typed) : typed;
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* A text decoded once more: Storybook's form goes through its own query parser after the address's. A `%` that starts no
|
|
58
|
+
* escape is the text's own.
|
|
59
|
+
*
|
|
60
|
+
* @param text - the text.
|
|
61
|
+
*/
|
|
62
|
+
const decoded = (text) => {
|
|
63
|
+
try {
|
|
64
|
+
return decodeURIComponent(text);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return text;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* A colour's text, as Storybook's reading writes it.
|
|
72
|
+
*
|
|
73
|
+
* @param marked - the value after its `!`.
|
|
74
|
+
* @returns the text; none when it is no colour.
|
|
75
|
+
*/
|
|
76
|
+
const colorOf = (marked) => {
|
|
77
|
+
const color = COLOR.exec(marked);
|
|
78
|
+
if (color === null)
|
|
79
|
+
return undefined;
|
|
80
|
+
const [, kind = "", first, second, third, alpha] = color;
|
|
81
|
+
const unit = kind.toLowerCase().startsWith("hsl") ? "%" : "";
|
|
82
|
+
return kind.toLowerCase().endsWith("a")
|
|
83
|
+
? `${kind}(${first}, ${second}${unit}, ${third}${unit}, ${alpha})`
|
|
84
|
+
: `${kind}(${first}, ${second}${unit}, ${third}${unit})`;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* One of Storybook's values: its marked ones read, the others left as text.
|
|
88
|
+
*
|
|
89
|
+
* @param text - the value.
|
|
90
|
+
* @returns the value; none when no arg can hold it.
|
|
91
|
+
*/
|
|
92
|
+
const storybookValue = (text) => {
|
|
93
|
+
if (!text.startsWith("!"))
|
|
94
|
+
return text;
|
|
95
|
+
if (text === "!undefined")
|
|
96
|
+
return UNSET_ARG;
|
|
97
|
+
if (text === "!null")
|
|
98
|
+
return null;
|
|
99
|
+
if (text === "!true")
|
|
100
|
+
return true;
|
|
101
|
+
if (text === "!false")
|
|
102
|
+
return false;
|
|
103
|
+
if (text.startsWith("!date(") && text.endsWith(")")) {
|
|
104
|
+
const time = Date.parse(text.slice(6, -1).replaceAll(" ", "+"));
|
|
105
|
+
return Number.isNaN(time) ? undefined : time;
|
|
106
|
+
}
|
|
107
|
+
if (text.startsWith("!hex(") && text.endsWith(")"))
|
|
108
|
+
return `#${text.slice(5, -1)}`;
|
|
109
|
+
// a mark that means nothing is the text's own, as Storybook reads it
|
|
110
|
+
return colorOf(text.slice(1)) ?? text;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* What one arg's entries make: its value, or a list when there are several or a bracket says so, as Storybook repeats a
|
|
114
|
+
* key for a list too (`tags:a;tags:b`).
|
|
115
|
+
*
|
|
116
|
+
* @param entries - its entries, in the address's order.
|
|
117
|
+
* @returns the value; none when it cannot be held, a list with a hole among them.
|
|
118
|
+
*/
|
|
119
|
+
const valueOfEntries = (entries) => {
|
|
120
|
+
const [only] = entries;
|
|
121
|
+
if (entries.length === 1 && only !== undefined && !only.isListed)
|
|
122
|
+
return only.value;
|
|
123
|
+
const items = new Map();
|
|
124
|
+
for (const { index, value } of entries)
|
|
125
|
+
items.set(index ?? items.size, value);
|
|
126
|
+
const list = [...Array(items.size).keys()].map((index) => items.get(index));
|
|
127
|
+
return isChoiceList(list) ? list : undefined;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* The name of an arg in a key: what comes before its first `.` or `[`.
|
|
131
|
+
*
|
|
132
|
+
* @param key - the key.
|
|
133
|
+
*/
|
|
134
|
+
const nameOfKey = (key) => key.split(/[.[]/, 1)[0] || key;
|
|
135
|
+
/**
|
|
136
|
+
* One `name:value` of Storybook's form, or the name to report when it is none that can be held.
|
|
137
|
+
*
|
|
138
|
+
* @param part - the text between two `;`.
|
|
139
|
+
*/
|
|
140
|
+
const storybookPart = (part) => {
|
|
141
|
+
const colon = part.indexOf(":");
|
|
142
|
+
const key = decoded(colon === -1 ? part : part.slice(0, colon));
|
|
143
|
+
const match = colon <= 0 ? null : STORYBOOK_KEY.exec(key);
|
|
144
|
+
const name = match?.[1];
|
|
145
|
+
if (name === undefined)
|
|
146
|
+
return { name: key === "" ? part : nameOfKey(key) };
|
|
147
|
+
const bracket = match?.[2];
|
|
148
|
+
const index = bracket === undefined || bracket === "" ? undefined : Number(bracket);
|
|
149
|
+
const value = storybookValue(decoded(part.slice(colon + 1)));
|
|
150
|
+
return { name, entry: { index, isListed: bracket !== undefined, value } };
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Storybook's form, read.
|
|
154
|
+
*
|
|
155
|
+
* @param param - the parameter.
|
|
156
|
+
*/
|
|
157
|
+
export const readStorybookArgs = (param) => {
|
|
158
|
+
const entries = new Map();
|
|
159
|
+
const unread = new Set();
|
|
160
|
+
for (const { name, entry } of param
|
|
161
|
+
.split(";")
|
|
162
|
+
.filter((each) => each !== "")
|
|
163
|
+
.map(storybookPart)) {
|
|
164
|
+
if (entry === undefined)
|
|
165
|
+
unread.add(name);
|
|
166
|
+
else {
|
|
167
|
+
const ofName = entries.get(name);
|
|
168
|
+
if (ofName === undefined)
|
|
169
|
+
entries.set(name, [entry]);
|
|
170
|
+
else
|
|
171
|
+
ofName.push(entry);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const read = [...entries].flatMap(([name, ofName]) => {
|
|
175
|
+
const value = valueOfEntries(ofName);
|
|
176
|
+
if (value === undefined)
|
|
177
|
+
unread.add(name);
|
|
178
|
+
return value === undefined ? [] : [[name, value]];
|
|
179
|
+
});
|
|
180
|
+
return {
|
|
181
|
+
// an arg with an entry that cannot be read is not given in part
|
|
182
|
+
args: Object.fromEntries(read.filter(([name]) => !unread.has(name))),
|
|
183
|
+
link: { param, isWaiting: false, typeValue: typedLinkValue, unread: [...unread] }
|
|
184
|
+
};
|
|
185
|
+
};
|
package/dist/src/switches.d.ts
CHANGED
|
@@ -12,6 +12,25 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* What a gallery shows of a value before it is applied (`control: "gallery"`): a picture the catalogue provides, or a
|
|
17
|
+
* few colours with a font's name.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* Nothing here loads from an address. The picture is a file on disk, which the build gives an address of its own;
|
|
21
|
+
* the colours paint swatches; the font is a name, drawn in that font only where the reader has it installed. The
|
|
22
|
+
* configuration's check refuses anything else (`vite/switchValuesCheck.ts`).
|
|
23
|
+
*/
|
|
24
|
+
export type SwitchPreview =
|
|
25
|
+
/** A picture: a file by its path from the configuration's folder, or absolute (a preset's). */
|
|
26
|
+
{
|
|
27
|
+
readonly image: string;
|
|
28
|
+
}
|
|
29
|
+
/** Up to eight CSS colours, and a font's name to show beside them; none by default. */
|
|
30
|
+
| {
|
|
31
|
+
readonly swatches: readonly string[];
|
|
32
|
+
readonly font?: string;
|
|
33
|
+
};
|
|
15
34
|
/** One value a switch offers. */
|
|
16
35
|
export type SwitchValue = {
|
|
17
36
|
/** The value, as the address and the root's attribute write it (`dark`). */
|
|
@@ -26,6 +45,22 @@ export type SwitchValue = {
|
|
|
26
45
|
readonly isMore?: boolean;
|
|
27
46
|
/** For a `language` switch: whether the language reads right to left, which draws the story right to left. */
|
|
28
47
|
readonly isRightToLeft?: boolean;
|
|
48
|
+
/** What a gallery shows of it; a value with none shows its label's first letter. */
|
|
49
|
+
readonly preview?: SwitchPreview;
|
|
50
|
+
/**
|
|
51
|
+
* The values this value sets on other switches, by switch id (`{ theme: "dark" }`: a look drawn only for dark). While
|
|
52
|
+
* it is chosen, each named switch draws that value and its control is off, saying what sets it; the address keeps the
|
|
53
|
+
* reader's own value, which comes back when the value is left. It wins over the address, and over what a story fixes.
|
|
54
|
+
* When two values imply different values of a switch, the one of the switch declared first wins. An implied value
|
|
55
|
+
* implies nothing further: the configuration's check refuses one that would.
|
|
56
|
+
*/
|
|
57
|
+
readonly implies?: Readonly<Record<string, string>>;
|
|
58
|
+
/**
|
|
59
|
+
* A style sheet of this value alone: a file by its path from the configuration's folder, or absolute (a preset's).
|
|
60
|
+
* Loaded only while the value is drawn, with Styles › Full, after the source's sheets, the switches' in the order they
|
|
61
|
+
* are declared. A change of value keeps the old sheet until the new one has loaded.
|
|
62
|
+
*/
|
|
63
|
+
readonly sheet?: string;
|
|
29
64
|
};
|
|
30
65
|
/** Where a switch applies. */
|
|
31
66
|
export type SwitchApply =
|
|
@@ -58,6 +93,8 @@ export type SwitchApply =
|
|
|
58
93
|
* texts and the language's provider), the direction (a catalogue's own switch in place of the ready-made one).
|
|
59
94
|
*/
|
|
60
95
|
export type SwitchRole = "colorScheme" | "contrast" | "language" | "direction" | "touch";
|
|
96
|
+
/** The ways a switch can be offered. */
|
|
97
|
+
export type SwitchControlKind = "segments" | "list" | "gallery";
|
|
61
98
|
/** A switch of the toolbar or the View menu. */
|
|
62
99
|
export type ViewSwitch = {
|
|
63
100
|
/** A stable id, the address's parameter (`theme`). */
|
|
@@ -72,8 +109,11 @@ export type ViewSwitch = {
|
|
|
72
109
|
readonly apply: SwitchApply;
|
|
73
110
|
/** What the catalogue reads of it; none for a switch only the library reads. */
|
|
74
111
|
readonly role?: SwitchRole;
|
|
75
|
-
/**
|
|
76
|
-
|
|
112
|
+
/**
|
|
113
|
+
* How the toolbar and the View menu offer it: a row of segments (by default, up to six values), a list, or a gallery,
|
|
114
|
+
* a menu whose items show each value's `preview`.
|
|
115
|
+
*/
|
|
116
|
+
readonly control?: SwitchControlKind;
|
|
77
117
|
/** What a reader should know of it, in a sentence or two: under its row in the View menu and in its tooltip. */
|
|
78
118
|
readonly description?: string;
|
|
79
119
|
};
|
|
@@ -147,12 +187,35 @@ export declare const touchChoiceOf: (switches: readonly ViewSwitch[]) => TouchCh
|
|
|
147
187
|
* @param value - the value given; none for the default.
|
|
148
188
|
*/
|
|
149
189
|
export declare const switchValueOf: (each: ViewSwitch, value: string | undefined) => SwitchValue | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* The values other switches' values imply, by the implied switch's id, each with the value that implies it.
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* Read from the values alone, so applying it twice gives the same answer: the shell, a frame and a tool opening a
|
|
195
|
+
* frame's address agree without telling each other. A switch already implied implies nothing itself, and one whose value
|
|
196
|
+
* already implies cannot be implied, so a value that is not drawn never implies, and the switch declared first wins a
|
|
197
|
+
* conflict.
|
|
198
|
+
*
|
|
199
|
+
* @param values - the switches' values, by id; a switch left out has its default.
|
|
200
|
+
* @param switches - the catalogue's switches.
|
|
201
|
+
*/
|
|
202
|
+
export declare const impliedSwitches: (values: Readonly<Record<string, string>>, switches: readonly ViewSwitch[]) => ReadonlyMap<string, {
|
|
203
|
+
readonly value: string;
|
|
204
|
+
readonly by: SwitchValue;
|
|
205
|
+
}>;
|
|
206
|
+
/**
|
|
207
|
+
* The switches' values as they are drawn: the ones given, with what their values imply over them.
|
|
208
|
+
*
|
|
209
|
+
* @param values - the switches' values, by id.
|
|
210
|
+
* @param switches - the catalogue's switches.
|
|
211
|
+
*/
|
|
212
|
+
export declare const shownSwitches: (values: Readonly<Record<string, string>>, switches: readonly ViewSwitch[]) => Readonly<Record<string, string>>;
|
|
150
213
|
/**
|
|
151
214
|
* How the View menu offers a switch: as it declares, or segments up to six values and a list past them.
|
|
152
215
|
*
|
|
153
216
|
* @param each - the switch.
|
|
154
217
|
*/
|
|
155
|
-
export declare const switchControl: (each: ViewSwitch) =>
|
|
218
|
+
export declare const switchControl: (each: ViewSwitch) => SwitchControlKind;
|
|
156
219
|
/**
|
|
157
220
|
* A catalogue's switches: the ones it declares (the theme and the contrast when it declares none), then, when it or a
|
|
158
221
|
* source offers languages, the language switch over all of them, then the ready-made direction and touch switches,
|
package/dist/src/switches.js
CHANGED
|
@@ -16,6 +16,8 @@ import { DEVICE_PARAMETER, ORIENTATION_PARAMETER } from "./deviceView.js";
|
|
|
16
16
|
/** The address's own parameters: a switch may not take their names. */
|
|
17
17
|
const RESERVED_IDS = [
|
|
18
18
|
"embed",
|
|
19
|
+
"play",
|
|
20
|
+
"tag",
|
|
19
21
|
"story",
|
|
20
22
|
"component",
|
|
21
23
|
"backdrop",
|
|
@@ -33,7 +35,8 @@ const RESERVED_IDS = [
|
|
|
33
35
|
"args",
|
|
34
36
|
"matrix",
|
|
35
37
|
"clock",
|
|
36
|
-
"audience"
|
|
38
|
+
"audience",
|
|
39
|
+
"ref"
|
|
37
40
|
];
|
|
38
41
|
/**
|
|
39
42
|
* Why a list of switches cannot be used, or none: ids unique and not the address's own, a default among the values,
|
|
@@ -173,6 +176,44 @@ export const touchChoiceOf = (switches) => {
|
|
|
173
176
|
* @param value - the value given; none for the default.
|
|
174
177
|
*/
|
|
175
178
|
export const switchValueOf = (each, value) => each.values.find((candidate) => candidate.value === (value ?? each.default));
|
|
179
|
+
/**
|
|
180
|
+
* The values other switches' values imply, by the implied switch's id, each with the value that implies it.
|
|
181
|
+
*
|
|
182
|
+
* @remarks
|
|
183
|
+
* Read from the values alone, so applying it twice gives the same answer: the shell, a frame and a tool opening a
|
|
184
|
+
* frame's address agree without telling each other. A switch already implied implies nothing itself, and one whose value
|
|
185
|
+
* already implies cannot be implied, so a value that is not drawn never implies, and the switch declared first wins a
|
|
186
|
+
* conflict.
|
|
187
|
+
*
|
|
188
|
+
* @param values - the switches' values, by id; a switch left out has its default.
|
|
189
|
+
* @param switches - the catalogue's switches.
|
|
190
|
+
*/
|
|
191
|
+
export const impliedSwitches = (values, switches) => {
|
|
192
|
+
const implied = new Map();
|
|
193
|
+
const implying = new Set();
|
|
194
|
+
for (const each of switches) {
|
|
195
|
+
const by = switchValueOf(each, values[each.id]);
|
|
196
|
+
if (by?.implies === undefined || implied.has(each.id))
|
|
197
|
+
continue;
|
|
198
|
+
implying.add(each.id);
|
|
199
|
+
for (const [id, value] of Object.entries(by.implies))
|
|
200
|
+
if (!implied.has(id) && !implying.has(id))
|
|
201
|
+
implied.set(id, { value, by });
|
|
202
|
+
}
|
|
203
|
+
return implied;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* The switches' values as they are drawn: the ones given, with what their values imply over them.
|
|
207
|
+
*
|
|
208
|
+
* @param values - the switches' values, by id.
|
|
209
|
+
* @param switches - the catalogue's switches.
|
|
210
|
+
*/
|
|
211
|
+
export const shownSwitches = (values, switches) => {
|
|
212
|
+
const shown = { ...values };
|
|
213
|
+
for (const [id, { value }] of impliedSwitches(values, switches))
|
|
214
|
+
shown[id] = value;
|
|
215
|
+
return shown;
|
|
216
|
+
};
|
|
176
217
|
/**
|
|
177
218
|
* How the View menu offers a switch: as it declares, or segments up to six values and a list past them.
|
|
178
219
|
*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The schema of a custom control's value, and the check of a value against it: a small part of JSON Schema, written by the
|
|
3
|
+
* control's author, read in the shell and by the commands. No dependency, so the check costs a catalogue with custom
|
|
4
|
+
* controls little and any other nothing.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* A keyword outside this list is refused rather than ignored: a schema that says less than it seems to would let a link
|
|
8
|
+
* through. Pure.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import type { ValueSchema } from "./argControl.ts";
|
|
13
|
+
import { type ArgValue } from "./messages.ts";
|
|
14
|
+
/**
|
|
15
|
+
* Whether a module's `schema` is one this check reads in full, at any depth: a keyword it does not know, or one holding what
|
|
16
|
+
* it cannot use, would let through what the schema seems to refuse.
|
|
17
|
+
*
|
|
18
|
+
* @param value - the module's export.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isValueSchema: (value: unknown) => value is ValueSchema;
|
|
21
|
+
/**
|
|
22
|
+
* What is wrong with a value, in a sentence.
|
|
23
|
+
*
|
|
24
|
+
* @param schema - the control's schema.
|
|
25
|
+
* @param value - the value.
|
|
26
|
+
* @returns the sentence; none when it fits.
|
|
27
|
+
*/
|
|
28
|
+
export declare const schemaProblem: (schema: ValueSchema, value: ArgValue) => string | undefined;
|