forgebook 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +994 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +182 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +62 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +95 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +204 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +323 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +148 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +69 -185
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +18 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +141 -23
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +30 -0
- package/dist/src/shell/laterStrings.js +43 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +376 -169
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +148 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +354 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +21 -4
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +55 -73
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +119 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +187 -60
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* One value's field, by what it looks like: a text, a number, a toggle, a choice, a named value, or the editor of a list,
|
|
4
|
+
* an object, a union or JSON. A value that does not fit its shape, or is too much to draw, falls back to JSON with a note,
|
|
5
|
+
* so what the panel sends always fits and nothing a story holds is hidden.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { useState } from "react";
|
|
10
|
+
import { isArgList, isArgObject, isDateArg, isNamedArg } from "../../messages.js";
|
|
11
|
+
import { isValueOfShape } from "../../shapeValues.js";
|
|
12
|
+
import { MOST_PLAIN_OPTIONS } from "../PropFields.js";
|
|
13
|
+
import { Switch } from "../Switch.js";
|
|
14
|
+
import { STRINGS } from "../strings.js";
|
|
15
|
+
import { EDITOR_STRINGS } from "./editorStrings.js";
|
|
16
|
+
import { JsonEditor } from "./JsonEditor.js";
|
|
17
|
+
import { ListEditor } from "./ListEditor.js";
|
|
18
|
+
import { ObjectEditor, TupleEditor } from "./ObjectEditor.js";
|
|
19
|
+
import { RecordEditor } from "./RecordEditor.js";
|
|
20
|
+
import { SearchSelect } from "./SearchSelect.js";
|
|
21
|
+
import { UnionEditor } from "./UnionEditor.js";
|
|
22
|
+
/** The most parts of a value drawn as fields: past it, a page of inputs is slower to use than its JSON. */
|
|
23
|
+
const MOST_DRAWN_PARTS = 150;
|
|
24
|
+
/** How many parts a value has. */
|
|
25
|
+
const partsOf = (value) => {
|
|
26
|
+
if (isArgList(value))
|
|
27
|
+
return value.reduce((sum, item) => sum + partsOf(item), 1);
|
|
28
|
+
if (isArgObject(value))
|
|
29
|
+
return Object.values(value).reduce((sum, item) => sum + partsOf(item), 1);
|
|
30
|
+
return 1;
|
|
31
|
+
};
|
|
32
|
+
/** Whether a shape is drawn as more than one field, so a person may want its JSON instead. */
|
|
33
|
+
const isStructured = (shape) => shape.kind === "object" || shape.kind === "list" || shape.kind === "record" || shape.kind === "tuple";
|
|
34
|
+
/**
|
|
35
|
+
* A number's field: what is typed stays as typed, and only a number reaches the value. A required number has no empty
|
|
36
|
+
* value, so what was left empty comes back when the field is left.
|
|
37
|
+
*
|
|
38
|
+
* @param props - the field's props.
|
|
39
|
+
*/
|
|
40
|
+
const NumberLeaf = ({ value, label, describedBy, onChange }) => {
|
|
41
|
+
const shown = typeof value === "number" ? String(value) : "";
|
|
42
|
+
const [draft, setDraft] = useState(undefined);
|
|
43
|
+
return (_jsx("input", { type: "number", "aria-label": label, "aria-describedby": describedBy, value: draft ?? shown, onChange: (event) => {
|
|
44
|
+
const text = event.target.value;
|
|
45
|
+
setDraft(text);
|
|
46
|
+
if (text !== "" && Number.isFinite(Number(text)))
|
|
47
|
+
onChange(Number(text));
|
|
48
|
+
}, onBlur: () => setDraft(undefined) }));
|
|
49
|
+
};
|
|
50
|
+
/** A choice's field: a native list for a few options, a search among many. */
|
|
51
|
+
const ChoiceLeaf = ({ shape, value, label, describedBy, isRequired = false, onChange }) => {
|
|
52
|
+
const shown = typeof value === "string" || typeof value === "number" ? String(value) : undefined;
|
|
53
|
+
const chooseText = (text) => onChange(shape.values.find((each) => String(each) === text));
|
|
54
|
+
if (shape.values.length > MOST_PLAIN_OPTIONS) {
|
|
55
|
+
return (_jsx(SearchSelect, { label: label, describedBy: describedBy, options: shape.values.map((each) => ({ value: String(each), label: String(each) })), value: shown, canClear: !isRequired, onChange: chooseText }));
|
|
56
|
+
}
|
|
57
|
+
return (_jsxs("select", { "aria-label": label, "aria-describedby": describedBy, value: shown ?? "", onChange: (event) => chooseText(event.target.value), children: [isRequired ? null : _jsx("option", { value: "", children: STRINGS.unset }), shape.values.map((each) => (_jsx("option", { value: String(each), children: String(each) }, String(each))))] }));
|
|
58
|
+
};
|
|
59
|
+
/** A named value's field: a search among the names the source offers for its type. */
|
|
60
|
+
const NamedLeaf = ({ shape, value, label, describedBy, namedValues, depth, isRequired = false, onChange }) => {
|
|
61
|
+
const names = Object.hasOwn(namedValues, shape.type) ? Object.keys(namedValues[shape.type] ?? {}) : [];
|
|
62
|
+
if (shape.canTakeText === true) {
|
|
63
|
+
// a slot takes a named value or a text: the same choice as any union
|
|
64
|
+
const members = names.length === 0 ? [{ kind: "text" }] : [{ kind: "named", type: shape.type }, { kind: "text" }];
|
|
65
|
+
return ValueField({
|
|
66
|
+
shape: members.length === 1 ? { kind: "text" } : { kind: "union", of: members },
|
|
67
|
+
value,
|
|
68
|
+
label,
|
|
69
|
+
describedBy,
|
|
70
|
+
namedValues,
|
|
71
|
+
depth,
|
|
72
|
+
isRequired,
|
|
73
|
+
onChange
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return (_jsx(SearchSelect, { label: label, describedBy: describedBy, options: names.map((name) => ({ value: name, label: name })), value: value !== undefined && isNamedArg(value) ? value.named : undefined, canClear: !isRequired, onChange: (name) => onChange(name === undefined ? undefined : { of: shape.type, named: name }) }));
|
|
77
|
+
};
|
|
78
|
+
/** A text's field: one line, or several once the text holds a line break, which a one-line field would drop. */
|
|
79
|
+
const TextLeaf = ({ value, label, describedBy, onChange }) => {
|
|
80
|
+
const text = typeof value === "string" ? value : "";
|
|
81
|
+
return text.includes("\n") ? (_jsx("textarea", { "aria-label": label, "aria-describedby": describedBy, rows: 3, value: text, onChange: (event) => onChange(event.target.value) })) : (_jsx("input", { type: "text", "aria-label": label, "aria-describedby": describedBy, value: text, onChange: (event) => onChange(event.target.value) }));
|
|
82
|
+
};
|
|
83
|
+
/** A moment's field, in the browser's time zone; what is left empty has no value. */
|
|
84
|
+
const DateLeaf = ({ value, label, describedBy, onChange }) => {
|
|
85
|
+
const time = value !== undefined && isDateArg(value) ? Date.parse(value.forgebookDate) : undefined;
|
|
86
|
+
const shown = time === undefined
|
|
87
|
+
? ""
|
|
88
|
+
: new Date(time - new Date(time).getTimezoneOffset() * 60_000).toISOString().slice(0, 16);
|
|
89
|
+
return (_jsx("input", { type: "datetime-local", "aria-label": label, "aria-describedby": describedBy, value: shown, onChange: (event) => {
|
|
90
|
+
const read = new Date(event.target.value);
|
|
91
|
+
onChange(Number.isNaN(read.getTime()) ? undefined : { forgebookDate: read.toISOString() });
|
|
92
|
+
} }));
|
|
93
|
+
};
|
|
94
|
+
/** A value's fields, or its JSON when a reader asks for it. */
|
|
95
|
+
const StructuredField = (props) => {
|
|
96
|
+
const { shape, value, label, namedValues, depth } = props;
|
|
97
|
+
const [isJson, setIsJson] = useState(false);
|
|
98
|
+
const isMisfit = value !== undefined && !isValueOfShape(shape, value, namedValues);
|
|
99
|
+
const isTooLarge = value !== undefined && partsOf(value) > MOST_DRAWN_PARTS;
|
|
100
|
+
const drawn = () => {
|
|
101
|
+
switch (shape.kind) {
|
|
102
|
+
case "list":
|
|
103
|
+
return _jsx(ListEditor, { ...props, shape: shape, drawField: ValueField });
|
|
104
|
+
case "tuple":
|
|
105
|
+
return _jsx(TupleEditor, { ...props, shape: shape, drawField: ValueField });
|
|
106
|
+
case "object":
|
|
107
|
+
return _jsx(ObjectEditor, { ...props, shape: shape, drawField: ValueField });
|
|
108
|
+
case "record":
|
|
109
|
+
return _jsx(RecordEditor, { ...props, shape: shape, drawField: ValueField });
|
|
110
|
+
default:
|
|
111
|
+
return _jsx(JsonEditor, { ...props });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
if (isMisfit || isTooLarge) {
|
|
115
|
+
return (_jsxs(_Fragment, { children: [_jsx("p", { className: "forgebook-value-note", children: isMisfit ? EDITOR_STRINGS.misfitNote : EDITOR_STRINGS.tooLargeNote }), _jsx(JsonEditor, { ...props })] }));
|
|
116
|
+
}
|
|
117
|
+
if (depth > 0)
|
|
118
|
+
return drawn();
|
|
119
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "forgebook-value-switch", children: _jsx("button", { type: "button", className: "forgebook-text-button", "aria-pressed": isJson, "aria-label": EDITOR_STRINGS.editAsJsonHint(label), onClick: () => setIsJson(!isJson), children: EDITOR_STRINGS.editAsJson }) }), isJson ? _jsx(JsonEditor, { ...props }) : drawn()] }));
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* One value's field.
|
|
123
|
+
*
|
|
124
|
+
* @param props - the field's props.
|
|
125
|
+
*/
|
|
126
|
+
export const ValueField = (props) => {
|
|
127
|
+
const { shape } = props;
|
|
128
|
+
if (isStructured(shape))
|
|
129
|
+
return _jsx(StructuredField, { ...props });
|
|
130
|
+
switch (shape.kind) {
|
|
131
|
+
case "text":
|
|
132
|
+
return _jsx(TextLeaf, { ...props });
|
|
133
|
+
case "number":
|
|
134
|
+
return _jsx(NumberLeaf, { ...props });
|
|
135
|
+
case "date":
|
|
136
|
+
return _jsx(DateLeaf, { ...props });
|
|
137
|
+
case "boolean":
|
|
138
|
+
return (_jsx(Switch, { label: props.label, isOn: shape.only ?? props.value === true, describedBy: props.describedBy, disabled: shape.only !== undefined, onChange: props.onChange }));
|
|
139
|
+
case "choice":
|
|
140
|
+
return _jsx(ChoiceLeaf, { ...props, shape: shape });
|
|
141
|
+
case "named":
|
|
142
|
+
return _jsx(NamedLeaf, { ...props, shape: shape });
|
|
143
|
+
case "union":
|
|
144
|
+
return _jsx(UnionEditor, { ...props, shape: shape, drawField: ValueField });
|
|
145
|
+
default:
|
|
146
|
+
return _jsx(JsonEditor, { ...props });
|
|
147
|
+
}
|
|
148
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** The editors' texts, as shown: Forgebook's, with the catalogue's replacements. */
|
|
2
|
+
export declare const EDITOR_STRINGS: {
|
|
3
|
+
addItem: (label: string) => string;
|
|
4
|
+
addField: (label: string) => string;
|
|
5
|
+
itemName: (label: string, position: number) => string;
|
|
6
|
+
moveUp: (label: string) => string;
|
|
7
|
+
moveDown: (label: string) => string;
|
|
8
|
+
removeItem: (label: string) => string;
|
|
9
|
+
itemMoved: (label: string, position: number, count: number) => string;
|
|
10
|
+
itemRemoved: (label: string, count: number) => string;
|
|
11
|
+
emptyList: string;
|
|
12
|
+
cannotSet: string;
|
|
13
|
+
clearField: (label: string) => string;
|
|
14
|
+
fieldName: (label: string) => string;
|
|
15
|
+
fieldValue: (label: string, name: string) => string;
|
|
16
|
+
nameTaken: string;
|
|
17
|
+
nameRefused: string;
|
|
18
|
+
nameEmpty: string;
|
|
19
|
+
newField: string;
|
|
20
|
+
memberKind: (label: string) => string;
|
|
21
|
+
memberKinds: {
|
|
22
|
+
text: string;
|
|
23
|
+
number: string;
|
|
24
|
+
date: string;
|
|
25
|
+
boolean: string;
|
|
26
|
+
choice: string;
|
|
27
|
+
list: string;
|
|
28
|
+
tuple: string;
|
|
29
|
+
object: string;
|
|
30
|
+
record: string;
|
|
31
|
+
union: string;
|
|
32
|
+
named: string;
|
|
33
|
+
json: string;
|
|
34
|
+
like: string;
|
|
35
|
+
};
|
|
36
|
+
editAsJson: string;
|
|
37
|
+
editAsJsonHint: (label: string) => string;
|
|
38
|
+
jsonInvalid: (reason: string) => string;
|
|
39
|
+
jsonRefused: string;
|
|
40
|
+
jsonMisfit: string;
|
|
41
|
+
misfitNote: string;
|
|
42
|
+
tooLargeNote: string;
|
|
43
|
+
searchEmpty: string;
|
|
44
|
+
searchMore: (count: number) => string;
|
|
45
|
+
searchClear: string;
|
|
46
|
+
searchOptions: (label: string) => string;
|
|
47
|
+
tokensLoading: string;
|
|
48
|
+
tokensFailed: (message: string) => string;
|
|
49
|
+
tokensNone: (asked: string) => string;
|
|
50
|
+
fileChoose: (label: string) => string;
|
|
51
|
+
fileRemove: (name: string) => string;
|
|
52
|
+
fileLine: (type: string, size: string) => string;
|
|
53
|
+
fileTooLarge: (name: string, most: string) => string;
|
|
54
|
+
fileRefused: (name: string) => string;
|
|
55
|
+
fileFailed: (name: string) => string;
|
|
56
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The texts of the panel's editors that load on use (`PropEditor.tsx`): nested fields, a searchable list, the tokens, the
|
|
3
|
+
* files. They load with the editors, so a catalogue of plain props carries none of them.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Each keeps the plain name it would have in `STRINGS`, so a catalogue replaces it the same way (`lateStrings`).
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { lateStrings } from "../strings.js";
|
|
11
|
+
/** The editors' texts, as shown: Forgebook's, with the catalogue's replacements. */
|
|
12
|
+
export const EDITOR_STRINGS = lateStrings({
|
|
13
|
+
addItem: (label) => `Add to ${label}`,
|
|
14
|
+
addField: (label) => `Add ${label}`,
|
|
15
|
+
itemName: (label, position) => `${label} ${position}`,
|
|
16
|
+
moveUp: (label) => `Move ${label} up`,
|
|
17
|
+
moveDown: (label) => `Move ${label} down`,
|
|
18
|
+
removeItem: (label) => `Remove ${label}`,
|
|
19
|
+
itemMoved: (label, position, count) => `${label}: now ${position} of ${count}`,
|
|
20
|
+
itemRemoved: (label, count) => `${label} removed, ${count} left`,
|
|
21
|
+
emptyList: "No items",
|
|
22
|
+
cannotSet: "It needs what only the source's named values can give, and they name none",
|
|
23
|
+
clearField: (label) => `${label}: no value`,
|
|
24
|
+
fieldName: (label) => `${label}: name`,
|
|
25
|
+
fieldValue: (label, name) => `${label} ${name}`,
|
|
26
|
+
nameTaken: "Another field has this name",
|
|
27
|
+
nameRefused: "This name cannot be set from the panel or a link",
|
|
28
|
+
nameEmpty: "A field needs a name",
|
|
29
|
+
newField: "key",
|
|
30
|
+
memberKind: (label) => `${label}: type`,
|
|
31
|
+
memberKinds: {
|
|
32
|
+
text: "Text",
|
|
33
|
+
number: "Number",
|
|
34
|
+
date: "Date",
|
|
35
|
+
boolean: "On or off",
|
|
36
|
+
choice: "Choice",
|
|
37
|
+
list: "List",
|
|
38
|
+
tuple: "List",
|
|
39
|
+
object: "Object",
|
|
40
|
+
record: "Object",
|
|
41
|
+
union: "Choice",
|
|
42
|
+
named: "Named",
|
|
43
|
+
json: "JSON",
|
|
44
|
+
like: "Object"
|
|
45
|
+
},
|
|
46
|
+
editAsJson: "JSON",
|
|
47
|
+
editAsJsonHint: (label) => `Edit ${label} as JSON`,
|
|
48
|
+
jsonInvalid: (reason) => `Not valid JSON: ${reason}`,
|
|
49
|
+
jsonRefused: "It holds a name a value cannot hold (__proto__, constructor, prototype), or nests too deep",
|
|
50
|
+
jsonMisfit: "Valid JSON, but not what this prop takes, or it holds what a link may not give",
|
|
51
|
+
misfitNote: "The story's value does not match this prop's type: it is shown as JSON",
|
|
52
|
+
tooLargeNote: "Too much to show as fields: it is shown as JSON",
|
|
53
|
+
searchEmpty: "Nothing matches",
|
|
54
|
+
searchMore: (count) => `And ${count} more: type to narrow them down`,
|
|
55
|
+
searchClear: "No value",
|
|
56
|
+
searchOptions: (label) => `${label}: options`,
|
|
57
|
+
tokensLoading: "Loading the tokens…",
|
|
58
|
+
tokensFailed: (message) => `The tokens could not be read: ${message}`,
|
|
59
|
+
tokensNone: (asked) => `This catalogue has no ${asked} tokens: type a value`,
|
|
60
|
+
fileChoose: (label) => `${label}: choose files`,
|
|
61
|
+
fileRemove: (name) => `Remove ${name}`,
|
|
62
|
+
fileLine: (type, size) => `${type}, ${size}`,
|
|
63
|
+
fileTooLarge: (name, most) => `${name} is too large for a link, which holds the file: at most ${most}`,
|
|
64
|
+
fileRefused: (name) => `${name} is of a type a link cannot hold: it could run as a page`,
|
|
65
|
+
fileFailed: (name) => `${name} could not be read`
|
|
66
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the panel's nested fields are given: the same for every kind of value, so a field of a list can be an object, a
|
|
3
|
+
* union, or anything else a type says.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from "react";
|
|
8
|
+
import type { ArgValue } from "../../messages.ts";
|
|
9
|
+
import type { NamedValues } from "../../namedValues.ts";
|
|
10
|
+
import type { ValueShape } from "../../valueShape.ts";
|
|
11
|
+
/** One value's field. */
|
|
12
|
+
export type FieldProps = {
|
|
13
|
+
/** What the value looks like. */
|
|
14
|
+
readonly shape: ValueShape;
|
|
15
|
+
/** The value; none when it has none. */
|
|
16
|
+
readonly value: ArgValue | undefined;
|
|
17
|
+
/** The name a screen reader reads: the prop's, and the path down to this part. */
|
|
18
|
+
readonly label: string;
|
|
19
|
+
/** The element that describes it, at the top of a prop. */
|
|
20
|
+
readonly describedBy?: string | undefined;
|
|
21
|
+
/** The source's named values. */
|
|
22
|
+
readonly namedValues: NamedValues;
|
|
23
|
+
/** How deep it is: the prop itself is 0. */
|
|
24
|
+
readonly depth: number;
|
|
25
|
+
/** Whether it must hold a value, so nothing offers to take it away; `false` by default. */
|
|
26
|
+
readonly isRequired?: boolean;
|
|
27
|
+
/** Called with a changed value; none takes it away. */
|
|
28
|
+
readonly onChange: (value: ArgValue | undefined) => void;
|
|
29
|
+
};
|
|
30
|
+
/** Draws a field, handed down so that the nested editors need not import what imports them. */
|
|
31
|
+
export type DrawField = (props: FieldProps) => ReactNode;
|
|
File without changes
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
@layer catalogue {
|
|
2
|
+
.forgebook-value-object,
|
|
3
|
+
.forgebook-value-list,
|
|
4
|
+
.forgebook-value-tuple,
|
|
5
|
+
.forgebook-value-union,
|
|
6
|
+
.forgebook-value-json,
|
|
7
|
+
.forgebook-value-search {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: 0.5rem;
|
|
11
|
+
min-width: 0;
|
|
12
|
+
}
|
|
13
|
+
.forgebook-value-object[data-depth]:not([data-depth="0"]) {
|
|
14
|
+
padding-inline-start: 0.5rem;
|
|
15
|
+
box-shadow: inset 2px 0 0 0 var(--forgebook-separator);
|
|
16
|
+
}
|
|
17
|
+
.forgebook-value-tuple {
|
|
18
|
+
flex-direction: row;
|
|
19
|
+
flex-wrap: wrap;
|
|
20
|
+
}
|
|
21
|
+
.forgebook-value-tuple > * {
|
|
22
|
+
flex: 1 1 5rem;
|
|
23
|
+
min-width: 0;
|
|
24
|
+
}
|
|
25
|
+
.forgebook-value-field {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
gap: 0.25rem;
|
|
29
|
+
min-width: 0;
|
|
30
|
+
}
|
|
31
|
+
.forgebook-value-field > input[type=checkbox] {
|
|
32
|
+
align-self: flex-start;
|
|
33
|
+
}
|
|
34
|
+
.forgebook-value-field__head {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: 0.375rem;
|
|
38
|
+
}
|
|
39
|
+
.forgebook-value-field__name {
|
|
40
|
+
font: var(--forgebook-text-mono-small);
|
|
41
|
+
color: var(--forgebook-text-secondary);
|
|
42
|
+
}
|
|
43
|
+
.forgebook-value-list__item {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: flex-start;
|
|
46
|
+
gap: 0.375rem;
|
|
47
|
+
padding: 0.375rem;
|
|
48
|
+
border-radius: var(--forgebook-radius-control);
|
|
49
|
+
box-shadow: inset 0 0 0 1px var(--forgebook-edge-field);
|
|
50
|
+
}
|
|
51
|
+
.forgebook-value-list__field {
|
|
52
|
+
display: flex;
|
|
53
|
+
flex: 1;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
gap: 0.375rem;
|
|
56
|
+
min-width: 0;
|
|
57
|
+
}
|
|
58
|
+
.forgebook-value-list__buttons {
|
|
59
|
+
display: flex;
|
|
60
|
+
flex: none;
|
|
61
|
+
gap: 0.125rem;
|
|
62
|
+
}
|
|
63
|
+
.forgebook-value-record__entry {
|
|
64
|
+
display: flex;
|
|
65
|
+
flex: 1;
|
|
66
|
+
flex-wrap: wrap;
|
|
67
|
+
gap: 0.375rem;
|
|
68
|
+
min-width: 0;
|
|
69
|
+
}
|
|
70
|
+
.forgebook-value-record__entry > * {
|
|
71
|
+
flex: 1 1 7rem;
|
|
72
|
+
}
|
|
73
|
+
.forgebook-value-record__name {
|
|
74
|
+
display: flex;
|
|
75
|
+
flex-direction: column;
|
|
76
|
+
gap: 0.25rem;
|
|
77
|
+
min-width: 0;
|
|
78
|
+
}
|
|
79
|
+
.forgebook-value-add {
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
align-self: flex-start;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 0.25rem;
|
|
84
|
+
}
|
|
85
|
+
.forgebook-value-switch {
|
|
86
|
+
display: flex;
|
|
87
|
+
justify-content: flex-end;
|
|
88
|
+
}
|
|
89
|
+
.forgebook-value-note {
|
|
90
|
+
margin: 0;
|
|
91
|
+
font: var(--forgebook-text-caption);
|
|
92
|
+
color: var(--forgebook-text-secondary);
|
|
93
|
+
}
|
|
94
|
+
.forgebook-value-note[data-tone=problem] {
|
|
95
|
+
color: var(--forgebook-danger-text);
|
|
96
|
+
}
|
|
97
|
+
.forgebook-value-json__text {
|
|
98
|
+
font: var(--forgebook-text-mono-small);
|
|
99
|
+
white-space: pre;
|
|
100
|
+
overflow: auto;
|
|
101
|
+
}
|
|
102
|
+
.forgebook-value-search__list {
|
|
103
|
+
display: flex;
|
|
104
|
+
flex-direction: column;
|
|
105
|
+
max-height: 13rem;
|
|
106
|
+
padding: 0.25rem;
|
|
107
|
+
overflow-y: auto;
|
|
108
|
+
border-radius: var(--forgebook-radius-control);
|
|
109
|
+
background: var(--forgebook-surface);
|
|
110
|
+
box-shadow: inset 0 0 0 1px var(--forgebook-edge-field);
|
|
111
|
+
}
|
|
112
|
+
.forgebook-value-search__option {
|
|
113
|
+
display: flex;
|
|
114
|
+
align-items: center;
|
|
115
|
+
gap: 0.375rem;
|
|
116
|
+
min-height: 1.5rem;
|
|
117
|
+
padding: 0.125rem 0.375rem;
|
|
118
|
+
border-radius: var(--forgebook-radius-control-small);
|
|
119
|
+
font: var(--forgebook-text-row-compact);
|
|
120
|
+
color: var(--forgebook-text);
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
}
|
|
123
|
+
.forgebook-value-search__option[aria-selected=true] {
|
|
124
|
+
font-weight: 600;
|
|
125
|
+
}
|
|
126
|
+
.forgebook-value-search__option[data-active], .forgebook-value-search__option:hover {
|
|
127
|
+
background: var(--forgebook-hover);
|
|
128
|
+
}
|
|
129
|
+
.forgebook-value-search__swatch {
|
|
130
|
+
flex: none;
|
|
131
|
+
width: 0.75rem;
|
|
132
|
+
height: 0.75rem;
|
|
133
|
+
border-radius: 50%;
|
|
134
|
+
box-shadow: inset 0 0 0 1px var(--forgebook-edge-field);
|
|
135
|
+
}
|
|
136
|
+
.forgebook-value-search__name {
|
|
137
|
+
overflow: hidden;
|
|
138
|
+
white-space: nowrap;
|
|
139
|
+
text-overflow: ellipsis;
|
|
140
|
+
min-width: 0;
|
|
141
|
+
flex: 1 1 auto;
|
|
142
|
+
}
|
|
143
|
+
.forgebook-value-search__hint {
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
white-space: nowrap;
|
|
146
|
+
text-overflow: ellipsis;
|
|
147
|
+
min-width: 0;
|
|
148
|
+
flex: 0 1 45%;
|
|
149
|
+
font: var(--forgebook-text-mono-small);
|
|
150
|
+
color: var(--forgebook-text-secondary);
|
|
151
|
+
text-align: end;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -6,21 +6,24 @@
|
|
|
6
6
|
* The values are the ones `forgebook new` writes in a story's worst case (`worstCase.ts`). The text joins the long text
|
|
7
7
|
* and the unbreakable word, so one value shows both a box that must wrap and one that must cut or scroll. A colour, a
|
|
8
8
|
* date and a prop whose `argTypes` give it a list keep their values: a long text there is not a case, only an invalid
|
|
9
|
-
* value. A number with a highest value takes that value, the largest the story says it accepts.
|
|
9
|
+
* value. A number with a highest value takes that value, the largest the story says it accepts. An object's fields take
|
|
10
|
+
* theirs, a list many items, a mixed union its first member that has a worst case: what the type allows at its fullest.
|
|
10
11
|
*
|
|
11
12
|
* @module
|
|
12
13
|
*/
|
|
13
14
|
import { type PanelProp } from "../argTypes.ts";
|
|
14
|
-
import type { PanelArgs } from "../messages.ts";
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
import type { ArgValue, PanelArgs } from "../messages.ts";
|
|
16
|
+
import type { NamedValues } from "../namedValues.ts";
|
|
17
|
+
import type { ValueShape } from "../valueShape.ts";
|
|
17
18
|
/**
|
|
18
19
|
* The worst-case args for the props the panel can set.
|
|
19
20
|
*
|
|
20
21
|
* @param props - the props the panel can set.
|
|
22
|
+
* @param namedValues - the source's named values; none by default.
|
|
23
|
+
* @param worstOfShape - gives a prop with a shape its worst value, once its module loaded; until then they keep theirs.
|
|
21
24
|
* @returns the args, by prop name; empty when no prop takes a text or a number.
|
|
22
25
|
*/
|
|
23
|
-
export declare const worstArgs: (props: readonly PanelProp[]) => PanelArgs;
|
|
26
|
+
export declare const worstArgs: (props: readonly PanelProp[], namedValues?: NamedValues, worstOfShape?: (shape: ValueShape, namedValues: NamedValues) => ArgValue | undefined) => PanelArgs;
|
|
24
27
|
/**
|
|
25
28
|
* Whether the values shown are the worst case: every worst-case arg is set to its worst value.
|
|
26
29
|
*
|
|
@@ -6,17 +6,16 @@
|
|
|
6
6
|
* The values are the ones `forgebook new` writes in a story's worst case (`worstCase.ts`). The text joins the long text
|
|
7
7
|
* and the unbreakable word, so one value shows both a box that must wrap and one that must cut or scroll. A colour, a
|
|
8
8
|
* date and a prop whose `argTypes` give it a list keep their values: a long text there is not a case, only an invalid
|
|
9
|
-
* value. A number with a highest value takes that value, the largest the story says it accepts.
|
|
9
|
+
* value. A number with a highest value takes that value, the largest the story says it accepts. An object's fields take
|
|
10
|
+
* theirs, a list many items, a mixed union its first member that has a worst case: what the type allows at its fullest.
|
|
10
11
|
*
|
|
11
12
|
* @module
|
|
12
13
|
*/
|
|
13
14
|
import { isColorProp } from "../argTypes.js";
|
|
14
|
-
import {
|
|
15
|
-
/** The worst text: a long one, with a word that cannot break. */
|
|
16
|
-
export const WORST_ARG_TEXT = `${WORST_TEXT} ${WORST_WORD}`;
|
|
15
|
+
import { WORST_ARG_TEXT, WORST_NUMBER } from "../worstCase.js";
|
|
17
16
|
/** Whether a prop is set as a text: of kind text, or a node that takes one, with no other control named. */
|
|
18
17
|
const isText = (prop) => (prop.kind === "text" || (prop.kind === "other" && prop.canTakeText === true)) &&
|
|
19
|
-
(prop.control === undefined || prop.control === "text") &&
|
|
18
|
+
(prop.control === undefined || prop.control === "text" || prop.control === "textarea") &&
|
|
20
19
|
!isColorProp(prop);
|
|
21
20
|
/** Whether a prop is set as a number, with no other control named. */
|
|
22
21
|
const isNumber = (prop) => prop.kind === "number" &&
|
|
@@ -25,9 +24,15 @@ const isNumber = (prop) => prop.kind === "number" &&
|
|
|
25
24
|
* The worst-case args for the props the panel can set.
|
|
26
25
|
*
|
|
27
26
|
* @param props - the props the panel can set.
|
|
27
|
+
* @param namedValues - the source's named values; none by default.
|
|
28
|
+
* @param worstOfShape - gives a prop with a shape its worst value, once its module loaded; until then they keep theirs.
|
|
28
29
|
* @returns the args, by prop name; empty when no prop takes a text or a number.
|
|
29
30
|
*/
|
|
30
|
-
export const worstArgs = (props) => Object.fromEntries(props.flatMap((prop) => {
|
|
31
|
+
export const worstArgs = (props, namedValues = {}, worstOfShape) => Object.fromEntries(props.flatMap((prop) => {
|
|
32
|
+
if (prop.shape !== undefined && (prop.control === undefined || prop.control === "object")) {
|
|
33
|
+
const worst = worstOfShape?.(prop.shape, namedValues);
|
|
34
|
+
return worst === undefined ? [] : [[prop.name, worst]];
|
|
35
|
+
}
|
|
31
36
|
if (isText(prop))
|
|
32
37
|
return [[prop.name, WORST_ARG_TEXT]];
|
|
33
38
|
if (isNumber(prop))
|
|
@@ -42,5 +47,7 @@ export const worstArgs = (props) => Object.fromEntries(props.flatMap((prop) => {
|
|
|
42
47
|
*/
|
|
43
48
|
export const isWorstCase = (worst, values) => {
|
|
44
49
|
const entries = Object.entries(worst);
|
|
45
|
-
|
|
50
|
+
// compared as text: a list or an object comes back from the address as another one that reads the same
|
|
51
|
+
return (entries.length > 0 &&
|
|
52
|
+
entries.every(([name, value]) => JSON.stringify(values[name]) === JSON.stringify(value)));
|
|
46
53
|
};
|
package/dist/src/shellTheme.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare const LIGHT_PALETTE: Palette;
|
|
|
19
19
|
/** The shell's dark palette, every role. */
|
|
20
20
|
export declare const DARK_PALETTE: Palette;
|
|
21
21
|
/** The text roles, each read on every ground. */
|
|
22
|
-
export declare const TEXT_ROLES: readonly ["text", "text-secondary", "text-tertiary", "accent-text", "danger-text"];
|
|
22
|
+
export declare const TEXT_ROLES: readonly ["text", "text-secondary", "text-tertiary", "accent-text", "danger-text", "caution-text", "positive-text"];
|
|
23
23
|
/** The grounds text is read on. */
|
|
24
24
|
export declare const GROUND_ROLES: readonly ["window", "sidebar", "surface"];
|
|
25
25
|
/** The code roles, read on the code background. */
|
package/dist/src/shellTheme.js
CHANGED
|
@@ -14,6 +14,8 @@ export const LIGHT_PALETTE = {
|
|
|
14
14
|
"accent-text": "#0059d2",
|
|
15
15
|
"on-accent": "#fff",
|
|
16
16
|
"danger-text": "#bc1f16",
|
|
17
|
+
"caution-text": "#935200",
|
|
18
|
+
"positive-text": "#077229",
|
|
17
19
|
"code-keyword": "#7036c4",
|
|
18
20
|
"code-type": "#0059d2",
|
|
19
21
|
"code-string": "#077229",
|
|
@@ -46,6 +48,8 @@ export const DARK_PALETTE = {
|
|
|
46
48
|
"accent-text": "#7ab3ff",
|
|
47
49
|
"on-accent": "#fff",
|
|
48
50
|
"danger-text": "#ff8a80",
|
|
51
|
+
"caution-text": "#f2b46b",
|
|
52
|
+
"positive-text": "#7fdc8f",
|
|
49
53
|
"code-keyword": "#c9a8ff",
|
|
50
54
|
"code-type": "#7ab3ff",
|
|
51
55
|
"code-string": "#7fdc8f",
|
|
@@ -75,6 +79,8 @@ const THEME_ROLES = [
|
|
|
75
79
|
"accent",
|
|
76
80
|
"accent-text",
|
|
77
81
|
"danger-text",
|
|
82
|
+
"caution-text",
|
|
83
|
+
"positive-text",
|
|
78
84
|
"code-keyword",
|
|
79
85
|
"code-type",
|
|
80
86
|
"code-string",
|
|
@@ -87,7 +93,15 @@ const TEXT_CONTRAST = 4.5;
|
|
|
87
93
|
/** The contrast a focus ring needs against what it sits on, WCAG 2.1 AA for non-text. */
|
|
88
94
|
const FOCUS_CONTRAST = 3;
|
|
89
95
|
/** The text roles, each read on every ground. */
|
|
90
|
-
export const TEXT_ROLES = [
|
|
96
|
+
export const TEXT_ROLES = [
|
|
97
|
+
"text",
|
|
98
|
+
"text-secondary",
|
|
99
|
+
"text-tertiary",
|
|
100
|
+
"accent-text",
|
|
101
|
+
"danger-text",
|
|
102
|
+
"caution-text",
|
|
103
|
+
"positive-text"
|
|
104
|
+
];
|
|
91
105
|
/** The grounds text is read on. */
|
|
92
106
|
export const GROUND_ROLES = ["window", "sidebar", "surface"];
|
|
93
107
|
/** The code roles, read on the code background. */
|
|
@@ -32,6 +32,10 @@ export type ShellPalette = {
|
|
|
32
32
|
readonly "accent-text": string;
|
|
33
33
|
/** Errors, as text. */
|
|
34
34
|
readonly "danger-text": string;
|
|
35
|
+
/** A warning, as text: a status's badge in the `caution` tone. */
|
|
36
|
+
readonly "caution-text": string;
|
|
37
|
+
/** Something done or safe, as text: a status's badge in the `positive` tone. */
|
|
38
|
+
readonly "positive-text": string;
|
|
35
39
|
/** Keywords in code. */
|
|
36
40
|
readonly "code-keyword": string;
|
|
37
41
|
/** Types in code. */
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A file's name as one word of a command an agent will run: a name comes from a branch that may not be trusted, and
|
|
3
|
+
* `$(…)` in it must stay text. Shared by what `verify` and `visibility` tell an agent to run.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The word.
|
|
9
|
+
*
|
|
10
|
+
* @param path - the file's name.
|
|
11
|
+
*/
|
|
12
|
+
export declare const shellWord: (path: string) => string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A file's name as one word of a command an agent will run: a name comes from a branch that may not be trusted, and
|
|
3
|
+
* `$(…)` in it must stay text. Shared by what `verify` and `visibility` tell an agent to run.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The word.
|
|
9
|
+
*
|
|
10
|
+
* @param path - the file's name.
|
|
11
|
+
*/
|
|
12
|
+
export const shellWord = (path) => {
|
|
13
|
+
const named = path.startsWith("-") ? `./${path}` : path;
|
|
14
|
+
return /^[\w./@+-]+$/.test(named) ? named : `'${named.replaceAll("'", `'\\''`)}'`;
|
|
15
|
+
};
|
package/dist/src/sourceFiles.js
CHANGED
|
@@ -14,7 +14,8 @@ export const sourceFiles = (source) => {
|
|
|
14
14
|
stories: Object.assign({}, ...source.files.map((group) => group.stories)),
|
|
15
15
|
docs: Object.assign({}, ...source.files.map((group) => group.docs)),
|
|
16
16
|
code: Object.assign({}, ...source.files.map((group) => group.code)),
|
|
17
|
-
pages: Object.assign({}, ...source.files.map((group) => group.pages))
|
|
17
|
+
pages: Object.assign({}, ...source.files.map((group) => group.pages)),
|
|
18
|
+
problems: source.files.flatMap((group) => group.problems ?? [])
|
|
18
19
|
};
|
|
19
20
|
MERGED.set(source, merged);
|
|
20
21
|
return merged;
|