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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @remarks
|
|
6
6
|
* One document per story: the style sheets of the Styles setting, the switches on the root and anything the
|
|
7
7
|
* story mounts on `body` stay in this document. The tests open the same address and wait for `data-forgebook-status`
|
|
8
|
-
* on the root (`ready` or `
|
|
8
|
+
* on the root (`ready`, `error` or `pending`), never for a delay. A Live story's clock runs from its start, or stays held there when
|
|
9
9
|
* the address says so (`clock=held`, what the tests open). The framework is the renderer the framework package
|
|
10
10
|
* passes (`renderer.ts`); nothing here depends on one.
|
|
11
11
|
*
|
|
@@ -13,28 +13,32 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import "./frame.css";
|
|
15
15
|
import { storyTextOf } from "@forgebook/story-format/texts";
|
|
16
|
-
import {
|
|
16
|
+
import { bundlerErrorLines } from "../bundlerErrors.js";
|
|
17
17
|
import { catalogueSettings } from "../catalogue.js";
|
|
18
18
|
import { SAME_ORIGIN } from "../frameOrigins.js";
|
|
19
19
|
import { PREVIEWS_EVENT, previewsRenewalOf, STORY_FILE_EVENT, successionOf } from "../hotModules.js";
|
|
20
20
|
import { shownLanguage } from "../languages.js";
|
|
21
|
-
import { LIVE_ERROR_EVENT } from "../liveErrors.js";
|
|
22
|
-
import { detailOf, previewValue } from "../messages.js";
|
|
23
|
-
import { panelArgsOf, storyArgsOf } from "../namedValues.js";
|
|
21
|
+
import { isMappedStackAnswer, LIVE_ERROR_EVENT, MAPPED_STACK_EVENT } from "../liveErrors.js";
|
|
24
22
|
import { applySafeArea } from "../safeAreaParameter.js";
|
|
25
23
|
import { sourceFiles } from "../sourceFiles.js";
|
|
24
|
+
import { actionNames, excludedControls, panelArgTypesOf } from "../storyArgTypes.js";
|
|
26
25
|
import { isClockHeldIn } from "../storyClock.js";
|
|
27
26
|
import { fixedViewOf, NOT_FIXED, withFixed } from "../storyGlobals.js";
|
|
28
27
|
import { shownTexts, storyTextKeysOf, withStoryTexts } from "../storyTexts.js";
|
|
29
28
|
import { findStory, storyTree } from "../storyTree.js";
|
|
30
29
|
import { catalogueSwitches } from "../switches.js";
|
|
31
30
|
import { codeGlobalsOf, frameAddress, isSameLiveView, languageOf, liveView, parseView } from "../viewState.js";
|
|
31
|
+
import { detailOf, previewValue } from "./callValues.js";
|
|
32
|
+
import { followCanvasScheme } from "./canvasScheme.js";
|
|
32
33
|
import { followTouch } from "./followTouch.js";
|
|
33
34
|
import { storyFrameClock } from "./frameClock.js";
|
|
34
|
-
import { FRAME_STARTED_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
|
|
35
|
+
import { ERROR_MESSAGE_CLASS, ERROR_STACK_CLASS, FRAME_STARTED_ATTRIBUTE, NOT_AWAITED_ATTRIBUTE, PENDING_REASON_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
|
|
35
36
|
import { applyView, loadSheets, viewSheets } from "./frameView.js";
|
|
37
|
+
import { panelControls } from "./panelControls.js";
|
|
38
|
+
import { panelArgsOf, storyArgsOf } from "./panelValues.js";
|
|
36
39
|
import { startPluginFrames } from "./pluginFrames.js";
|
|
37
40
|
import { shellChannel } from "./shellChannel.js";
|
|
41
|
+
import { checkForShell } from "./shellCheck.js";
|
|
38
42
|
import { spillOutline } from "./spillOutline.js";
|
|
39
43
|
import { clearRetry, isStaleModuleError, markRetry, sessionStorageOf } from "./staleModule.js";
|
|
40
44
|
import { mergedPreviews, readPreview, readStory, startingGlobals } from "./storyModule.js";
|
|
@@ -48,54 +52,125 @@ import { runStory } from "./storyRun.js";
|
|
|
48
52
|
const tellDevServer = (report) => {
|
|
49
53
|
import.meta.hot?.send(LIVE_ERROR_EVENT, report);
|
|
50
54
|
};
|
|
51
|
-
//
|
|
55
|
+
// the browser writes a stack in the lines of the code Vite served, and the dev server answers with the lines as written
|
|
56
|
+
import.meta.hot?.on(MAPPED_STACK_EVENT, (answer) => {
|
|
57
|
+
if (!isMappedStackAnswer(answer))
|
|
58
|
+
return;
|
|
59
|
+
for (const shown of document.querySelectorAll(`.${ERROR_STACK_CLASS}`))
|
|
60
|
+
if (shown.textContent === answer.sent)
|
|
61
|
+
shown.textContent = answer.stack;
|
|
62
|
+
});
|
|
63
|
+
// a story that threw is gone from its frame, so a hot update has nothing to update: the fix shows only in a new page; a
|
|
64
|
+
// story the frame gave up on keeps saying so until a new page waits for it again
|
|
52
65
|
import.meta.hot?.on("vite:afterUpdate", () => {
|
|
53
|
-
|
|
66
|
+
const status = document.documentElement.getAttribute(STATUS_ATTRIBUTE);
|
|
67
|
+
if (status === "error" || status === "pending")
|
|
54
68
|
window.location.reload();
|
|
55
69
|
});
|
|
70
|
+
/**
|
|
71
|
+
* Why the dev server last failed to serve a module, and what to do when it says so: of a module it failed to serve, a
|
|
72
|
+
* browser says only that the import failed, and the reason reaches the page on the dev server's own channel.
|
|
73
|
+
*/
|
|
74
|
+
let servedError;
|
|
75
|
+
let followServedError;
|
|
76
|
+
import.meta.hot?.on("vite:error", ({ err }) => {
|
|
77
|
+
// the first since this page loaded: what its own import asked for, not what another frame's asked for later
|
|
78
|
+
servedError ??= bundlerErrorLines(err.message, err)[0];
|
|
79
|
+
followServedError?.();
|
|
80
|
+
followServedError = undefined;
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* What shows the sheets of a frame's values; none for a catalogue with none, which so loads no code for them.
|
|
84
|
+
*
|
|
85
|
+
* @param valueSheets - each value's sheet, when the catalogue has any.
|
|
86
|
+
* @param sheets - the frame's Styles setting.
|
|
87
|
+
* @param switches - the catalogue's switches.
|
|
88
|
+
* @param onFailed - told a sheet that did not load: the story is drawn without it.
|
|
89
|
+
*/
|
|
90
|
+
const valueSheetsShower = async (valueSheets, sheets, switches, onFailed) => {
|
|
91
|
+
if (valueSheets === undefined)
|
|
92
|
+
return undefined;
|
|
93
|
+
const { valueSheetUrls, valueSheetsIn } = await import("./valueSheets.js");
|
|
94
|
+
const show = valueSheetsIn(document, onFailed);
|
|
95
|
+
return (values) => show(valueSheetUrls(values, sheets, valueSheets, switches));
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Fails a frame whose story did not load, with the dev server's reason when the import only says it failed, as soon as
|
|
99
|
+
* the reason arrives: it may come after the failed import.
|
|
100
|
+
*
|
|
101
|
+
* @param message - the error's message.
|
|
102
|
+
* @param fail - shows a reason in the frame.
|
|
103
|
+
*/
|
|
104
|
+
const failedToLoad = (message, fail) => {
|
|
105
|
+
if (isStaleModuleError(message))
|
|
106
|
+
followServedError = () => fail(servedError ?? message);
|
|
107
|
+
fail(isStaleModuleError(message) ? (servedError ?? message) : message);
|
|
108
|
+
};
|
|
56
109
|
/**
|
|
57
110
|
* Does what a message of the shell asks of the rendered story; the view's live part is applied apart, before the story
|
|
58
|
-
* loads.
|
|
111
|
+
* loads, and so are the panel's values (`panelControls.ts`).
|
|
59
112
|
*
|
|
60
113
|
* @param message - the message.
|
|
61
114
|
* @param controls - the rendered story's controls.
|
|
62
115
|
* @param storyId - the story's id, for the answers.
|
|
116
|
+
* @param pendingReason - why the story was not seen in its final state, if so: a check of what it shows now would pass
|
|
117
|
+
* on a fallback, so it answers this instead.
|
|
63
118
|
* @param rules - the catalogue's accessibility rules, for a check; none when it checks no accessibility.
|
|
64
119
|
* @param axeUrl - the address of axe's script, for a check.
|
|
65
120
|
* @param tellShell - tells the shell the check's result.
|
|
66
121
|
*/
|
|
67
|
-
const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
|
|
122
|
+
const answerShell = (message, controls, storyId, pendingReason, rules, axeUrl, tellShell) => {
|
|
68
123
|
if (message.type === "forgebook:replay")
|
|
69
124
|
void controls.replay();
|
|
70
|
-
else if (message.type === "forgebook:args")
|
|
71
|
-
controls.setPanelArgs(message.args);
|
|
72
125
|
else if (message.type === "forgebook:events")
|
|
73
126
|
controls.setEvents(message.names);
|
|
74
127
|
else if (message.type === "forgebook:matrix")
|
|
75
128
|
controls.setMatrix(message.matrix ?? undefined);
|
|
76
|
-
else if (message.type === "forgebook:play-
|
|
77
|
-
controls.
|
|
129
|
+
else if (message.type === "forgebook:play-step")
|
|
130
|
+
controls.stepPlay(message.command);
|
|
78
131
|
else if (message.type === "forgebook:clock")
|
|
79
132
|
controls.setClock(message.state);
|
|
80
133
|
else if (message.type === "forgebook:clock-restart")
|
|
81
134
|
controls.restartClock();
|
|
82
|
-
else if (message.type === "forgebook:check")
|
|
83
|
-
|
|
84
|
-
// fetches the code that loads axe
|
|
85
|
-
const checked = rules === undefined
|
|
86
|
-
? Promise.reject(new Error("The catalogue checks no accessibility (a11y: false)"))
|
|
87
|
-
: import("./checkStory.js").then((module) => module.checkStory(document, rules, axeUrl));
|
|
88
|
-
checked
|
|
89
|
-
.then((violations) => tellShell({ type: "forgebook:checked", storyId, violations }))
|
|
90
|
-
.catch((error) => tellShell({
|
|
91
|
-
type: "forgebook:check-error",
|
|
92
|
-
storyId,
|
|
93
|
-
message: error instanceof Error ? error.message : String(error)
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
135
|
+
else if (message.type === "forgebook:check")
|
|
136
|
+
checkForShell(storyId, pendingReason, rules, axeUrl, tellShell);
|
|
96
137
|
};
|
|
97
|
-
/**
|
|
98
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Says on the page that the frame gave up on what the story loads: a person looking at the story, or at its picture,
|
|
140
|
+
* must not take the fallback for the story. Out of the story's own element, so the story is laid out as it was.
|
|
141
|
+
*
|
|
142
|
+
* @param reason - why.
|
|
143
|
+
*/
|
|
144
|
+
const showPending = (reason) => {
|
|
145
|
+
const notice = document.createElement("p");
|
|
146
|
+
notice.className = "forgebook-frame-pending";
|
|
147
|
+
notice.setAttribute("role", "status");
|
|
148
|
+
notice.textContent = `Not verified: ${reason}`;
|
|
149
|
+
document.body.prepend(notice);
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Says how a story ended on the frame's root and on its page.
|
|
153
|
+
*
|
|
154
|
+
* @param outcome - how it ended; an error that came during the wait stands, and this leaves it there.
|
|
155
|
+
* @param storyId - the story's id, for the dev server.
|
|
156
|
+
* @param isNotAwaited - whether the story said not to wait for what it loads, which a check reports.
|
|
157
|
+
* @returns why it was not seen in its final state, if so.
|
|
158
|
+
*/
|
|
159
|
+
const showOutcome = (outcome, storyId, isNotAwaited) => {
|
|
160
|
+
if (outcome.status === "error")
|
|
161
|
+
return undefined;
|
|
162
|
+
if (isNotAwaited)
|
|
163
|
+
document.documentElement.setAttribute(NOT_AWAITED_ATTRIBUTE, "");
|
|
164
|
+
document.documentElement.setAttribute(STATUS_ATTRIBUTE, outcome.status);
|
|
165
|
+
if (outcome.status === "ready")
|
|
166
|
+
return undefined;
|
|
167
|
+
document.documentElement.setAttribute(PENDING_REASON_ATTRIBUTE, outcome.reason);
|
|
168
|
+
showPending(outcome.reason);
|
|
169
|
+
tellDevServer({ kind: "render", storyId, view: window.location.search, message: outcome.reason });
|
|
170
|
+
return outcome.reason;
|
|
171
|
+
};
|
|
172
|
+
/** The play tools a project installed, and whether the frame's address lets its story play when it opens. */
|
|
173
|
+
const playOptions = ({ playTools }, playsOnOpen) => playTools === undefined ? { playsOnOpen } : { playTools, playsOnOpen };
|
|
99
174
|
/**
|
|
100
175
|
* Shows the story the address names in the given element.
|
|
101
176
|
*
|
|
@@ -113,7 +188,9 @@ export const mountFrame = async (container, config) => {
|
|
|
113
188
|
// the previews' modules: an edit of one (or of what it imports) brings its successor
|
|
114
189
|
let previews = config.previews ?? [];
|
|
115
190
|
let preview = mergedPreviews(previews.map(readPreview));
|
|
116
|
-
|
|
191
|
+
// a frame runs its play unless its own address says otherwise, whatever the catalogue's readers start with: tests and
|
|
192
|
+
// tools open frames with no word, and a new address written below must not add one
|
|
193
|
+
const view = parseView(window.location.search, { ...catalogue, readerPlay: "on" });
|
|
117
194
|
const shell = shellChannel(config.frames ?? SAME_ORIGIN, window);
|
|
118
195
|
const tellShell = shell.tell;
|
|
119
196
|
applyView(document.documentElement, view, catalogue);
|
|
@@ -136,17 +213,19 @@ export const mountFrame = async (container, config) => {
|
|
|
136
213
|
tellShell({ type: "forgebook:size", storyId, height });
|
|
137
214
|
};
|
|
138
215
|
new ResizeObserver(reportSize).observe(document.body);
|
|
139
|
-
const
|
|
216
|
+
const reportScheme = followCanvasScheme(document, window, storyId, tellShell);
|
|
217
|
+
const reportError = (message, stack) => {
|
|
140
218
|
document.documentElement.setAttribute(STATUS_ATTRIBUTE, "error");
|
|
141
219
|
tellShell({ type: "forgebook:error", storyId, message });
|
|
142
|
-
|
|
220
|
+
const report = { kind: "render", storyId, view: window.location.search, message };
|
|
221
|
+
tellDevServer(stack === undefined ? report : { ...report, stack });
|
|
143
222
|
};
|
|
144
223
|
const fail = (message) => {
|
|
145
224
|
const box = document.createElement("div");
|
|
146
225
|
box.className = "forgebook-frame-error";
|
|
147
226
|
box.setAttribute("role", "alert");
|
|
148
227
|
const text = document.createElement("p");
|
|
149
|
-
text.className =
|
|
228
|
+
text.className = ERROR_MESSAGE_CLASS;
|
|
150
229
|
text.textContent = message;
|
|
151
230
|
box.append(text);
|
|
152
231
|
container.replaceChildren(box);
|
|
@@ -165,6 +244,11 @@ export const mountFrame = async (container, config) => {
|
|
|
165
244
|
.then(({ applyTools }) => applyTools(document, latestTools, catalogue.gridStep))
|
|
166
245
|
.catch((error) => reportError(error instanceof Error ? error.message : String(error)));
|
|
167
246
|
};
|
|
247
|
+
// what shows the sheets of the values drawn, for a catalogue with any; set once the source's are placed
|
|
248
|
+
let showValueSheets;
|
|
249
|
+
// the view asked for while its sheets load: the next message is compared with it, or going back would stop short of
|
|
250
|
+
// overtaking it, and the sheets would then draw a view the reader already left
|
|
251
|
+
let askedView;
|
|
168
252
|
shell.listen((message) => {
|
|
169
253
|
if (message.type === "forgebook:tools")
|
|
170
254
|
showTools(message.tools);
|
|
@@ -174,15 +258,29 @@ export const mountFrame = async (container, config) => {
|
|
|
174
258
|
return;
|
|
175
259
|
const shown = withFixed(message.view, fixed);
|
|
176
260
|
// the same view again draws nothing: a story's state, and the time its draw takes, are not the shell's to spend
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
isSameLiveView(withFixed(shownView, fixed), shown))
|
|
261
|
+
const latest = askedView ?? shownView;
|
|
262
|
+
if (changeShown !== undefined && latest !== undefined && isSameLiveView(withFixed(latest, fixed), shown))
|
|
180
263
|
return;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
264
|
+
askedView = message.view;
|
|
265
|
+
const showLive = () => {
|
|
266
|
+
applyView(document.documentElement, shown, catalogue);
|
|
267
|
+
changeShown?.(message.view);
|
|
268
|
+
shownView = changeShown === undefined ? undefined : message.view;
|
|
269
|
+
askedView = undefined;
|
|
270
|
+
const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
|
|
271
|
+
window.history.replaceState(null, "", address);
|
|
272
|
+
};
|
|
273
|
+
// the root changes with the sheet that draws it; a later view overtakes this one
|
|
274
|
+
if (showValueSheets === undefined)
|
|
275
|
+
showLive();
|
|
276
|
+
else {
|
|
277
|
+
showValueSheets(shown.switches)
|
|
278
|
+
.then((isLast) => {
|
|
279
|
+
if (isLast)
|
|
280
|
+
showLive();
|
|
281
|
+
})
|
|
282
|
+
.catch((error) => reportError(error instanceof Error ? error.message : String(error)));
|
|
283
|
+
}
|
|
186
284
|
});
|
|
187
285
|
// until the story runs, or when it cannot, an edit of a file the frame loaded loads the page again: there is no story
|
|
188
286
|
// drawn to renew in place, and a story file that failed to load keeps no other way to show its fix
|
|
@@ -210,6 +308,8 @@ export const mountFrame = async (container, config) => {
|
|
|
210
308
|
await source.setup?.();
|
|
211
309
|
await preview.setup?.();
|
|
212
310
|
await loadSheets(document, viewSheets(source.sheets, view));
|
|
311
|
+
showValueSheets = await valueSheetsShower(config.valueSheets, view.sheets, switches, reportError);
|
|
312
|
+
await showValueSheets?.(view.switches);
|
|
213
313
|
// the story file's exports: an edit of the file hands them on with its successor's
|
|
214
314
|
let shownFile = await load();
|
|
215
315
|
const first = readStory(shownFile, location.story.exportName, preview);
|
|
@@ -220,13 +320,15 @@ export const mountFrame = async (container, config) => {
|
|
|
220
320
|
const plugins = startPluginFrames(config.plugins, storyId, tellShell);
|
|
221
321
|
let story = first;
|
|
222
322
|
fixed = fixedViewOf(story.globals, story.parameters, catalogue);
|
|
323
|
+
await showValueSheets?.(withFixed(view, fixed).switches);
|
|
223
324
|
applyView(document.documentElement, withFixed(view, fixed), catalogue);
|
|
224
325
|
let controls;
|
|
326
|
+
// why the story was not seen in its final state: a check of what it shows would pass on a fallback
|
|
327
|
+
let pendingReason;
|
|
225
328
|
const clock = storyFrameClock(story.clockStart, isClockHeldIn(window.location.search));
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
});
|
|
329
|
+
// the controls with a frame module, which turn the panel's values first; their docs name those given by type
|
|
330
|
+
const typed = panelControls(config.argControls, source, location.story.file, reportError);
|
|
331
|
+
shell.listen((message) => typed.take(message, { story, controls, tellReady }, (drawn) => answerShell(message, drawn, storyId, pendingReason, catalogue.a11y, config.axeUrl, tellShell)));
|
|
230
332
|
// the language's texts, and the switches the story reads (the language's provider reads its id among them); a
|
|
231
333
|
// language the source gives as a loader is loaded as it is shown
|
|
232
334
|
const shownFor = async (live) => {
|
|
@@ -249,7 +351,7 @@ export const mountFrame = async (container, config) => {
|
|
|
249
351
|
storyId,
|
|
250
352
|
canReplay: story.replay !== undefined,
|
|
251
353
|
hasClock: story.clockStart !== undefined,
|
|
252
|
-
args,
|
|
354
|
+
args: typed.withOwn(args),
|
|
253
355
|
textKeys: storyTextKeysOf(story.args),
|
|
254
356
|
argTypes: panelArgTypesOf(story.argTypes, excludedControls(story.parameters["controls"])),
|
|
255
357
|
controls: story.controls,
|
|
@@ -262,22 +364,25 @@ export const mountFrame = async (container, config) => {
|
|
|
262
364
|
container,
|
|
263
365
|
story,
|
|
264
366
|
identity: { id: storyId, name: location.story.name, title: location.component.title },
|
|
265
|
-
...
|
|
367
|
+
...playOptions(config, view.play === "on"),
|
|
266
368
|
pluginSetups: plugins.setups,
|
|
267
369
|
renderer: config.renderer,
|
|
268
370
|
clock,
|
|
269
371
|
// the first of the list is the innermost
|
|
270
372
|
decorators: [...preview.decorators, ...plugins.decorators],
|
|
271
373
|
...shown,
|
|
272
|
-
resolveArgs: (args) => storyArgsOf(args, source.namedValues),
|
|
273
|
-
onControlsReady: (next) => {
|
|
374
|
+
resolveArgs: (args) => typed.storyArgs(storyArgsOf(args, source.namedValues)),
|
|
375
|
+
onControlsReady: (next, outcome) => {
|
|
274
376
|
controls = next;
|
|
275
377
|
clearRetry(sessionStorageOf(window), window.location.href);
|
|
276
378
|
// the height first: the shell sizes the frame to the drawn story before anything reads it as ready, instead of
|
|
277
379
|
// waiting on the resize observer, which may report after the ready status
|
|
278
380
|
reportSize();
|
|
279
|
-
|
|
280
|
-
|
|
381
|
+
reportScheme();
|
|
382
|
+
pendingReason = showOutcome(outcome, storyId, story.suspense.isExpected);
|
|
383
|
+
// the shell keeps an error it was told, and would read this as the story being fine again
|
|
384
|
+
if (outcome.status !== "error")
|
|
385
|
+
tellReady();
|
|
281
386
|
changeShown = (live) => {
|
|
282
387
|
shownCount += 1;
|
|
283
388
|
const count = shownCount;
|
|
@@ -296,7 +401,7 @@ export const mountFrame = async (container, config) => {
|
|
|
296
401
|
});
|
|
297
402
|
};
|
|
298
403
|
},
|
|
299
|
-
onError: reportError,
|
|
404
|
+
onError: (message, stack) => reportError(message, stack),
|
|
300
405
|
onTrace: (trace) => {
|
|
301
406
|
tellShell({ type: "forgebook:play", storyId, trace });
|
|
302
407
|
if (trace.status === "failed")
|
|
@@ -314,7 +419,7 @@ export const mountFrame = async (container, config) => {
|
|
|
314
419
|
values: values.map(previewValue),
|
|
315
420
|
details: values.map(detailOf)
|
|
316
421
|
}),
|
|
317
|
-
panelArgsOf: (values) => panelArgsOf(values, source.namedValues),
|
|
422
|
+
panelArgsOf: (values) => typed.panelArgs(values, panelArgsOf(values, source.namedValues)),
|
|
318
423
|
onArgsChange: (args) => tellShell({ type: "forgebook:story-args", storyId, args })
|
|
319
424
|
});
|
|
320
425
|
// an edit of the story file, or of a file it re-exports stories from, draws the story anew in place: the reader keeps
|
|
@@ -370,6 +475,6 @@ export const mountFrame = async (container, config) => {
|
|
|
370
475
|
window.location.reload();
|
|
371
476
|
return;
|
|
372
477
|
}
|
|
373
|
-
|
|
478
|
+
failedToLoad(message, fail);
|
|
374
479
|
}
|
|
375
480
|
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a frame keeps of the custom controls with a frame module: the panel's latest values as their modules turned them,
|
|
3
|
+
* and the story's own values they named. The turning itself (`controlValues.ts`) loads when the shell first gives values.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Turning values takes a load, so the shell's other messages wait for the values before them: a Replay or a matrix
|
|
7
|
+
* right after a change draws the changed values, as without any frame module.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { StorySource } from "@forgebook/story-format/source";
|
|
12
|
+
import type { PanelArgs, ShellMessage } from "../messages.ts";
|
|
13
|
+
import type { ControlStory } from "./controlValues.ts";
|
|
14
|
+
import type { StoryControls } from "./storyRun.ts";
|
|
15
|
+
/** The custom controls' frame modules, by control: how to load each. */
|
|
16
|
+
export type ControlFrameLoaders = Readonly<Record<string, () => Promise<unknown>>>;
|
|
17
|
+
/** The story a message is for, as `take` reads it. */
|
|
18
|
+
export type TakenStory<TControls> = {
|
|
19
|
+
/** The story as it is now. */
|
|
20
|
+
readonly story: Omit<ControlStory, "loadDocs">;
|
|
21
|
+
/** Its controls once drawn; none before, when nothing is answered. */
|
|
22
|
+
readonly controls: TControls | undefined;
|
|
23
|
+
/** Tells the shell the story's own values again. */
|
|
24
|
+
readonly tellReady: () => void;
|
|
25
|
+
};
|
|
26
|
+
/** A frame's custom controls with a frame module; with none, it hands the shell's messages on as they come. */
|
|
27
|
+
export type PanelControls = {
|
|
28
|
+
/**
|
|
29
|
+
* Answers a message of the shell: the panel's values turned first, then given to the story; any other message after
|
|
30
|
+
* the values before it. A later change of values overtakes one still turning.
|
|
31
|
+
*
|
|
32
|
+
* @param message - the message.
|
|
33
|
+
* @param story - the story as it is now, and its controls once drawn; none before, when nothing is answered.
|
|
34
|
+
* @param answer - answers any other message.
|
|
35
|
+
*/
|
|
36
|
+
readonly take: <TControls extends Pick<StoryControls, "setPanelArgs">>(message: ShellMessage, story: TakenStory<TControls>, answer: (controls: TControls) => void) => void;
|
|
37
|
+
/**
|
|
38
|
+
* The story's values with the turned ones over them; an arg whose control failed is left out, so the story keeps its
|
|
39
|
+
* own: its JSON is not what the story takes.
|
|
40
|
+
*
|
|
41
|
+
* @param resolved - the panel's values as the story would take them without the modules.
|
|
42
|
+
*/
|
|
43
|
+
readonly storyArgs: (resolved: Readonly<Record<string, unknown>>) => Readonly<Record<string, unknown>>;
|
|
44
|
+
/**
|
|
45
|
+
* The story's own values for the panel, with those the modules named over them.
|
|
46
|
+
*
|
|
47
|
+
* @param own - the story's own values, as plain data gives them.
|
|
48
|
+
*/
|
|
49
|
+
readonly withOwn: (own: PanelArgs) => PanelArgs;
|
|
50
|
+
/**
|
|
51
|
+
* The panel's values of a story that changed its own args: a value a module made is given back as the panel's JSON it
|
|
52
|
+
* came from, which plain data cannot hold, so the panel keeps the reader's choice.
|
|
53
|
+
*
|
|
54
|
+
* @param values - the story's values.
|
|
55
|
+
* @param shown - the same as plain data gives them.
|
|
56
|
+
*/
|
|
57
|
+
readonly panelArgs: (values: Readonly<Record<string, unknown>>, shown: PanelArgs) => PanelArgs;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* A frame's custom controls with a frame module.
|
|
61
|
+
*
|
|
62
|
+
* @param loaders - the frame modules, by control; none hands every message on as it comes.
|
|
63
|
+
* @param source - the story's source, whose docs name the controls given by type.
|
|
64
|
+
* @param file - the story's file, the key of its docs.
|
|
65
|
+
* @param report - says what went wrong.
|
|
66
|
+
*/
|
|
67
|
+
export declare const panelControls: (loaders: ControlFrameLoaders | undefined, source: StorySource, file: string, report: (message: string) => void) => PanelControls;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { sourceFiles } from "../sourceFiles.js";
|
|
2
|
+
import { panelArgTypesOf } from "../storyArgTypes.js";
|
|
3
|
+
import { STATUS_ATTRIBUTE } from "./frameStatus.js";
|
|
4
|
+
import { panelArgsOf } from "./panelValues.js";
|
|
5
|
+
/**
|
|
6
|
+
* Whether a frame module may have something to do for the story, so its docs are worth loading: the panel gives a
|
|
7
|
+
* value (any prop may be one a control takes by type), the story's `argTypes` name a control with a frame module, or
|
|
8
|
+
* the story gives itself a value plain data cannot show (an icon a module could name). A story with none of these, most
|
|
9
|
+
* of a page's frames, loads neither the turning code nor its docs.
|
|
10
|
+
*
|
|
11
|
+
* @param args - the panel's values.
|
|
12
|
+
* @param story - the story.
|
|
13
|
+
* @param loaders - the frame modules, by control.
|
|
14
|
+
* @param source - the story's source, whose named values show some values plainly.
|
|
15
|
+
*/
|
|
16
|
+
const mayTurn = (args, story, loaders, source) => {
|
|
17
|
+
if (Object.keys(args).length > 0)
|
|
18
|
+
return true;
|
|
19
|
+
const named = Object.values(panelArgTypesOf(story.argTypes, [])).some((argType) => argType.customControl !== undefined && Object.hasOwn(loaders, argType.customControl));
|
|
20
|
+
const shown = panelArgsOf(story.args, source.namedValues);
|
|
21
|
+
// an event's handler is no value a control sets: a type's control never takes an event
|
|
22
|
+
return (named ||
|
|
23
|
+
Object.entries(story.args).some(([name, value]) => value !== undefined && !Object.hasOwn(shown, name) && !/^on[A-Z]/.test(name)));
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A frame's custom controls with a frame module.
|
|
27
|
+
*
|
|
28
|
+
* @param loaders - the frame modules, by control; none hands every message on as it comes.
|
|
29
|
+
* @param source - the story's source, whose docs name the controls given by type.
|
|
30
|
+
* @param file - the story's file, the key of its docs.
|
|
31
|
+
* @param report - says what went wrong.
|
|
32
|
+
*/
|
|
33
|
+
export const panelControls = (loaders, source, file, report) => {
|
|
34
|
+
const loadDocs = sourceFiles(source).docs[file];
|
|
35
|
+
let made;
|
|
36
|
+
// the panel's values last given, as JSON: what the made values came from
|
|
37
|
+
let given = {};
|
|
38
|
+
let count = 0;
|
|
39
|
+
// the values still turning, which the other messages wait for
|
|
40
|
+
let turning = Promise.resolve();
|
|
41
|
+
const reportError = (error) => report(error instanceof Error ? error.message : String(error));
|
|
42
|
+
return {
|
|
43
|
+
take: (message, { story, controls, tellReady }, answer) => {
|
|
44
|
+
if (controls === undefined)
|
|
45
|
+
return;
|
|
46
|
+
if (message.type !== "forgebook:args") {
|
|
47
|
+
if (loaders === undefined)
|
|
48
|
+
answer(controls);
|
|
49
|
+
else
|
|
50
|
+
turning = turning.then(() => answer(controls));
|
|
51
|
+
}
|
|
52
|
+
else if (loaders === undefined)
|
|
53
|
+
controls.setPanelArgs(message.args);
|
|
54
|
+
else if (!mayTurn(message.args, story, loaders, source)) {
|
|
55
|
+
// nothing a module could turn or name: no module, and no docs, load for this story
|
|
56
|
+
const hadOwn = Object.keys(made?.own ?? {}).length > 0;
|
|
57
|
+
count += 1;
|
|
58
|
+
made = undefined;
|
|
59
|
+
turning = turning.then(() => {
|
|
60
|
+
controls.setPanelArgs(message.args);
|
|
61
|
+
if (hadOwn)
|
|
62
|
+
tellReady();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
count += 1;
|
|
67
|
+
const asked = count;
|
|
68
|
+
turning = import("./controlValues.js")
|
|
69
|
+
.then(({ controlValuesOf }) => controlValuesOf(message.args, loaders, { ...story, loadDocs }))
|
|
70
|
+
.then((next) => {
|
|
71
|
+
// values the reader changed again meanwhile are the next call's to draw
|
|
72
|
+
if (asked !== count)
|
|
73
|
+
return;
|
|
74
|
+
const isOwnNew = JSON.stringify(next.own) !== JSON.stringify(made?.own ?? {});
|
|
75
|
+
made = next;
|
|
76
|
+
given = message.args;
|
|
77
|
+
controls.setPanelArgs(message.args);
|
|
78
|
+
for (const problem of next.problems)
|
|
79
|
+
report(problem);
|
|
80
|
+
// the panel shows the story's own value a module names, told once known; a story in error stays one
|
|
81
|
+
const isError = document.documentElement.getAttribute(STATUS_ATTRIBUTE) === "error";
|
|
82
|
+
if (isOwnNew && !isError)
|
|
83
|
+
tellReady();
|
|
84
|
+
})
|
|
85
|
+
.catch((error) => {
|
|
86
|
+
reportError(error);
|
|
87
|
+
// without the modules the story still takes the values plain data can give
|
|
88
|
+
if (asked !== count)
|
|
89
|
+
return;
|
|
90
|
+
made = undefined;
|
|
91
|
+
controls.setPanelArgs(message.args);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
storyArgs: (resolved) => {
|
|
96
|
+
const dropped = made?.dropped ?? [];
|
|
97
|
+
return Object.fromEntries(Object.entries({ ...resolved, ...made?.values }).filter(([name]) => !dropped.includes(name)));
|
|
98
|
+
},
|
|
99
|
+
withOwn: (own) => ({ ...own, ...made?.own }),
|
|
100
|
+
panelArgs: (values, shown) => {
|
|
101
|
+
const kept = Object.entries(made?.values ?? {}).flatMap(([name, value]) => {
|
|
102
|
+
const json = given[name];
|
|
103
|
+
return json !== undefined && Object.hasOwn(values, name) && values[name] === value
|
|
104
|
+
? [[name, json]]
|
|
105
|
+
: [];
|
|
106
|
+
});
|
|
107
|
+
return { ...shown, ...Object.fromEntries(kept) };
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A story's values as they cross to the panel, and back: its own value found by name among the source's named values, and
|
|
3
|
+
* a name the panel sent turned back into the value for the story. Read in the frame.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* A component or a function cannot cross between the shell and a frame; its name can, and each side holds the same source.
|
|
7
|
+
* Pure.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { type NamedArg, type PanelArgs } from "../messages.ts";
|
|
12
|
+
import { type NamedValues } from "../namedValues.ts";
|
|
13
|
+
/**
|
|
14
|
+
* The name of a value among the named ones, when it is one of them.
|
|
15
|
+
*
|
|
16
|
+
* @param value - a story's own arg.
|
|
17
|
+
* @param namedValues - the source's named values.
|
|
18
|
+
*/
|
|
19
|
+
export declare const nameOf: (value: unknown, namedValues: NamedValues) => NamedArg | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* A story's own args as the panel can show them: plain data as it is, a named value by its name at any depth; an arg
|
|
22
|
+
* with anything else in it (an element, a function, a date) is left out whole.
|
|
23
|
+
*
|
|
24
|
+
* @param args - the story's args.
|
|
25
|
+
* @param namedValues - the source's named values; none by default.
|
|
26
|
+
*/
|
|
27
|
+
export declare const panelArgsOf: (args: Readonly<Record<string, unknown>>, namedValues?: NamedValues) => PanelArgs;
|
|
28
|
+
/**
|
|
29
|
+
* The panel's values as the story takes them: a name turned back into its value, a name the source no longer offers
|
|
30
|
+
* left out so the story keeps its own, and the panel's "no value" as `undefined` over the story's own.
|
|
31
|
+
*
|
|
32
|
+
* @param args - the panel's values.
|
|
33
|
+
* @param namedValues - the source's named values; none by default.
|
|
34
|
+
*/
|
|
35
|
+
export declare const storyArgsOf: (args: PanelArgs, namedValues?: NamedValues) => Readonly<Record<string, unknown>>;
|