forgebook 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +917 -74
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +54 -6
- package/dist/src/addressArgs.js +72 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +58 -14
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +35 -60
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tells the shell the colour scheme a frame's document draws in, so the frame element can have the same one.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* A browser paints an opaque canvas behind an embedded document when its used colour scheme differs from its frame
|
|
6
|
+
* element's: white for a light document, near black for a dark one, over the page colour the shell draws behind the
|
|
7
|
+
* frame. Which scheme the document draws in is its own business (a theme's `color-scheme`, a `meta` tag, the system's
|
|
8
|
+
* preference), and only the document can read it; writing a scheme on the document instead would change how the story
|
|
9
|
+
* draws its controls.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import type { FrameMessage } from "../messages.ts";
|
|
14
|
+
/** A colour scheme a document draws in. */
|
|
15
|
+
export type CanvasScheme = "light" | "dark";
|
|
16
|
+
/**
|
|
17
|
+
* The scheme a canvas colour belongs to.
|
|
18
|
+
*
|
|
19
|
+
* @param colour - the computed colour of `Canvas`, as `rgb(18, 18, 18)`.
|
|
20
|
+
* @returns the scheme; light when the text is not a colour, as a document that declares no scheme draws.
|
|
21
|
+
*/
|
|
22
|
+
export declare const schemeOfCanvas: (colour: string) => CanvasScheme;
|
|
23
|
+
/**
|
|
24
|
+
* Follows the scheme a frame's document draws in: tells it now, and again when it changes with the root (a switch, a
|
|
25
|
+
* theme's class), a style sheet that finished loading, or the system's preference.
|
|
26
|
+
*
|
|
27
|
+
* @param document - the frame's document.
|
|
28
|
+
* @param window - its window.
|
|
29
|
+
* @param storyId - the story's id, for the shell.
|
|
30
|
+
* @param tellShell - tells the shell, once for each change.
|
|
31
|
+
* @returns what checks it again, for what no event says: styles a story's module brought with it.
|
|
32
|
+
*/
|
|
33
|
+
export declare const followCanvasScheme: (document: Document, window: Window, storyId: string, tellShell: (message: FrameMessage) => void) => (() => void);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tells the shell the colour scheme a frame's document draws in, so the frame element can have the same one.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* A browser paints an opaque canvas behind an embedded document when its used colour scheme differs from its frame
|
|
6
|
+
* element's: white for a light document, near black for a dark one, over the page colour the shell draws behind the
|
|
7
|
+
* frame. Which scheme the document draws in is its own business (a theme's `color-scheme`, a `meta` tag, the system's
|
|
8
|
+
* preference), and only the document can read it; writing a scheme on the document instead would change how the story
|
|
9
|
+
* draws its controls.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
/** Red, green and blue summed above this is a light canvas: browsers keep theirs near white or near black. */
|
|
14
|
+
const LIGHT_CANVAS_SUM = 382;
|
|
15
|
+
/**
|
|
16
|
+
* The scheme a canvas colour belongs to.
|
|
17
|
+
*
|
|
18
|
+
* @param colour - the computed colour of `Canvas`, as `rgb(18, 18, 18)`.
|
|
19
|
+
* @returns the scheme; light when the text is not a colour, as a document that declares no scheme draws.
|
|
20
|
+
*/
|
|
21
|
+
export const schemeOfCanvas = (colour) => {
|
|
22
|
+
const channels = colour.match(/\d+(?:\.\d+)?/g)?.slice(0, 3) ?? [];
|
|
23
|
+
const sum = channels.reduce((total, channel) => total + Number(channel), 0);
|
|
24
|
+
return channels.length === 3 && sum <= LIGHT_CANVAS_SUM ? "dark" : "light";
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The scheme a document draws in, read from what its `Canvas` system colour resolves to: this takes in `color-scheme`
|
|
28
|
+
* with several values, the system's preference and a `meta` tag, which the computed property alone does not say.
|
|
29
|
+
*
|
|
30
|
+
* @param document - the document.
|
|
31
|
+
* @param window - its window.
|
|
32
|
+
*/
|
|
33
|
+
const usedScheme = (document, window) => {
|
|
34
|
+
// in the `head`, where no story's observer of the page sees it come and go; it inherits the root's scheme
|
|
35
|
+
const probe = document.createElement("meta");
|
|
36
|
+
probe.style.color = "Canvas";
|
|
37
|
+
document.head.append(probe);
|
|
38
|
+
const colour = window.getComputedStyle(probe).color;
|
|
39
|
+
probe.remove();
|
|
40
|
+
return schemeOfCanvas(colour);
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Follows the scheme a frame's document draws in: tells it now, and again when it changes with the root (a switch, a
|
|
44
|
+
* theme's class), a style sheet that finished loading, or the system's preference.
|
|
45
|
+
*
|
|
46
|
+
* @param document - the frame's document.
|
|
47
|
+
* @param window - its window.
|
|
48
|
+
* @param storyId - the story's id, for the shell.
|
|
49
|
+
* @param tellShell - tells the shell, once for each change.
|
|
50
|
+
* @returns what checks it again, for what no event says: styles a story's module brought with it.
|
|
51
|
+
*/
|
|
52
|
+
export const followCanvasScheme = (document, window, storyId, tellShell) => {
|
|
53
|
+
let told;
|
|
54
|
+
const check = () => {
|
|
55
|
+
const scheme = usedScheme(document, window);
|
|
56
|
+
if (scheme === told)
|
|
57
|
+
return;
|
|
58
|
+
told = scheme;
|
|
59
|
+
tellShell({ type: "forgebook:scheme", storyId, scheme });
|
|
60
|
+
};
|
|
61
|
+
new MutationObserver(check).observe(document.documentElement, { attributes: true });
|
|
62
|
+
// a `load` does not bubble: seen on its way down, as a `link` of the `head` finishes
|
|
63
|
+
document.addEventListener("load", check, true);
|
|
64
|
+
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", check);
|
|
65
|
+
check();
|
|
66
|
+
return check;
|
|
67
|
+
};
|
package/dist/src/frame/frame.css
CHANGED
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
--forgebook-radius-control-small: 6px;
|
|
6
6
|
--forgebook-radius-control: 7px;
|
|
7
7
|
--forgebook-radius-card: 12px;
|
|
8
|
+
--forgebook-focus-edge: inset 0 0 0 1px var(--forgebook-accent);
|
|
9
|
+
--forgebook-focus-halo: color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
|
|
10
|
+
--forgebook-text-display: 700 1.375rem/1.2 var(--forgebook-font-sans);
|
|
11
|
+
--forgebook-text-card-title: 600 0.875rem/1.3 var(--forgebook-font-sans);
|
|
12
|
+
--forgebook-text-body: 400 0.8125rem/1.4 var(--forgebook-font-sans);
|
|
13
|
+
--forgebook-text-row-label: 500 0.8125rem/1.35 var(--forgebook-font-sans);
|
|
14
|
+
--forgebook-text-row-compact: 400 0.78125rem/1.4 var(--forgebook-font-sans);
|
|
15
|
+
--forgebook-text-control: 500 0.75rem/1.3 var(--forgebook-font-sans);
|
|
16
|
+
--forgebook-text-caption: 400 0.6875rem/1.35 var(--forgebook-font-sans);
|
|
17
|
+
--forgebook-text-label: 600 0.6875rem/1.3 var(--forgebook-font-sans);
|
|
18
|
+
--forgebook-text-mono: 400 0.71875rem/1.4 var(--forgebook-font-mono);
|
|
19
|
+
--forgebook-text-mono-small: 400 0.6875rem/1.6 var(--forgebook-font-mono);
|
|
8
20
|
--forgebook-window: #f6f6f8;
|
|
9
21
|
--forgebook-sidebar: #ebebef;
|
|
10
22
|
--forgebook-surface: #fff;
|
|
@@ -19,6 +31,8 @@
|
|
|
19
31
|
--forgebook-accent-text: #0059d2;
|
|
20
32
|
--forgebook-on-accent: #fff;
|
|
21
33
|
--forgebook-danger-text: #bc1f16;
|
|
34
|
+
--forgebook-caution-text: #935200;
|
|
35
|
+
--forgebook-positive-text: #077229;
|
|
22
36
|
--forgebook-code-keyword: #7036c4;
|
|
23
37
|
--forgebook-code-type: #0059d2;
|
|
24
38
|
--forgebook-code-string: #077229;
|
|
@@ -59,7 +73,7 @@
|
|
|
59
73
|
.forgebook-matrix__corner,
|
|
60
74
|
.forgebook-matrix__name {
|
|
61
75
|
padding: 0.5rem 0.75rem;
|
|
62
|
-
font:
|
|
76
|
+
font: var(--forgebook-text-mono-small);
|
|
63
77
|
text-align: start;
|
|
64
78
|
white-space: nowrap;
|
|
65
79
|
opacity: 0.7;
|
|
@@ -68,9 +82,28 @@
|
|
|
68
82
|
padding: 0.75rem;
|
|
69
83
|
vertical-align: middle;
|
|
70
84
|
}
|
|
85
|
+
.forgebook-frame-pending {
|
|
86
|
+
margin: 0;
|
|
87
|
+
padding: 0.5rem 0.75rem;
|
|
88
|
+
font: var(--forgebook-text-mono-small);
|
|
89
|
+
color: #fff;
|
|
90
|
+
background: #8a1c1c;
|
|
91
|
+
}
|
|
71
92
|
.forgebook-frame-error {
|
|
93
|
+
--forgebook-focus-edge: inset 0 0 0 1px var(--forgebook-accent);
|
|
94
|
+
--forgebook-focus-halo: color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
|
|
95
|
+
--forgebook-text-display: 700 1.375rem/1.2 var(--forgebook-font-sans);
|
|
96
|
+
--forgebook-text-card-title: 600 0.875rem/1.3 var(--forgebook-font-sans);
|
|
97
|
+
--forgebook-text-body: 400 0.8125rem/1.4 var(--forgebook-font-sans);
|
|
98
|
+
--forgebook-text-row-label: 500 0.8125rem/1.35 var(--forgebook-font-sans);
|
|
99
|
+
--forgebook-text-row-compact: 400 0.78125rem/1.4 var(--forgebook-font-sans);
|
|
100
|
+
--forgebook-text-control: 500 0.75rem/1.3 var(--forgebook-font-sans);
|
|
101
|
+
--forgebook-text-caption: 400 0.6875rem/1.35 var(--forgebook-font-sans);
|
|
102
|
+
--forgebook-text-label: 600 0.6875rem/1.3 var(--forgebook-font-sans);
|
|
103
|
+
--forgebook-text-mono: 400 0.71875rem/1.4 var(--forgebook-font-mono);
|
|
104
|
+
--forgebook-text-mono-small: 400 0.6875rem/1.6 var(--forgebook-font-mono);
|
|
72
105
|
margin: 1.5rem;
|
|
73
|
-
font:
|
|
106
|
+
font: var(--forgebook-text-body);
|
|
74
107
|
color: var(--forgebook-danger-text);
|
|
75
108
|
}
|
|
76
109
|
.forgebook-frame-error__message {
|
|
@@ -80,7 +113,7 @@
|
|
|
80
113
|
.forgebook-frame-error__stack {
|
|
81
114
|
margin: 0.75rem 0 0;
|
|
82
115
|
overflow-x: auto;
|
|
83
|
-
font:
|
|
116
|
+
font: var(--forgebook-text-mono-small);
|
|
84
117
|
color: var(--forgebook-text-secondary);
|
|
85
118
|
white-space: pre;
|
|
86
119
|
}
|
|
@@ -3,7 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* `ready` once the story rendered, what it waits for came and its play function is over; `error` when it could not
|
|
8
|
+
* render; `pending` when the frame gave up waiting, or cannot tell, so what it shows was not seen in its final state: a
|
|
9
|
+
* check reads that as not verified, never as passed.
|
|
10
|
+
*/
|
|
7
11
|
export declare const STATUS_ATTRIBUTE = "data-forgebook-status";
|
|
12
|
+
/** The root's attribute that says why the status is `pending`, in a sentence a person reads. */
|
|
13
|
+
export declare const PENDING_REASON_ATTRIBUTE = "data-forgebook-pending-reason";
|
|
14
|
+
/**
|
|
15
|
+
* The root's attribute set on a story that says it stays in a loading state (`parameters.suspense.expected`): the frame
|
|
16
|
+
* did not wait for it, and a check says so rather than let a preview turn the wait off unseen.
|
|
17
|
+
*/
|
|
18
|
+
export declare const NOT_AWAITED_ATTRIBUTE = "data-forgebook-not-awaited";
|
|
8
19
|
/** The root's attribute set once the frame's code runs; the page's guard against code that fails earlier reads it. */
|
|
9
20
|
export declare const FRAME_STARTED_ATTRIBUTE = "data-forgebook-started";
|
|
21
|
+
/** The class of the text saying why a frame's story could not be drawn: what a check reports as the reason. */
|
|
22
|
+
export declare const ERROR_MESSAGE_CLASS = "forgebook-frame-error__message";
|
|
23
|
+
/** The class of a thrown error's stack under its message: the dev server's answer rewrites it in the lines as written. */
|
|
24
|
+
export declare const ERROR_STACK_CLASS = "forgebook-frame-error__stack";
|
|
@@ -3,7 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* `ready` once the story rendered, what it waits for came and its play function is over; `error` when it could not
|
|
8
|
+
* render; `pending` when the frame gave up waiting, or cannot tell, so what it shows was not seen in its final state: a
|
|
9
|
+
* check reads that as not verified, never as passed.
|
|
10
|
+
*/
|
|
7
11
|
export const STATUS_ATTRIBUTE = "data-forgebook-status";
|
|
12
|
+
/** The root's attribute that says why the status is `pending`, in a sentence a person reads. */
|
|
13
|
+
export const PENDING_REASON_ATTRIBUTE = "data-forgebook-pending-reason";
|
|
14
|
+
/**
|
|
15
|
+
* The root's attribute set on a story that says it stays in a loading state (`parameters.suspense.expected`): the frame
|
|
16
|
+
* did not wait for it, and a check says so rather than let a preview turn the wait off unseen.
|
|
17
|
+
*/
|
|
18
|
+
export const NOT_AWAITED_ATTRIBUTE = "data-forgebook-not-awaited";
|
|
8
19
|
/** The root's attribute set once the frame's code runs; the page's guard against code that fails earlier reads it. */
|
|
9
20
|
export const FRAME_STARTED_ATTRIBUTE = "data-forgebook-started";
|
|
21
|
+
/** The class of the text saying why a frame's story could not be drawn: what a check reports as the reason. */
|
|
22
|
+
export const ERROR_MESSAGE_CLASS = "forgebook-frame-error__message";
|
|
23
|
+
/** The class of a thrown error's stack under its message: the dev server's answer rewrites it in the lines as written. */
|
|
24
|
+
export const ERROR_STACK_CLASS = "forgebook-frame-error__stack";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
|
-
import { switchValueOf, switchWithRole } from "../switches.js";
|
|
7
|
+
import { shownSwitches, switchValueOf, switchWithRole } from "../switches.js";
|
|
8
8
|
import { schemeOf } from "../viewState.js";
|
|
9
9
|
import { backdropSheet } from "./backdropPictures.js";
|
|
10
10
|
/** The id of the style sheet that draws the backdrop. */
|
|
@@ -96,12 +96,13 @@ const applySwitch = (root, each, value) => {
|
|
|
96
96
|
* @param catalogue - the catalogue's switches and backdrops.
|
|
97
97
|
*/
|
|
98
98
|
export const applyView = (root, view, catalogue) => {
|
|
99
|
+
const shown = shownSwitches(view.switches, catalogue.switches);
|
|
99
100
|
for (const each of catalogue.switches)
|
|
100
|
-
applySwitch(root, each,
|
|
101
|
+
applySwitch(root, each, shown[each.id]);
|
|
101
102
|
// a language read right to left draws the story right to left; leaving it gives the root its own direction back,
|
|
102
103
|
// unless a switch writes `dir` itself (the direction switch, applied above)
|
|
103
104
|
const language = switchWithRole(catalogue.switches, "language");
|
|
104
|
-
const isRightToLeft = language !== undefined && switchValueOf(language,
|
|
105
|
+
const isRightToLeft = language !== undefined && switchValueOf(language, shown[language.id])?.isRightToLeft === true;
|
|
105
106
|
const isDirWritten = catalogue.switches.some((each) => each.apply.kind === "attribute" && each.apply.name === "dir");
|
|
106
107
|
if (isRightToLeft)
|
|
107
108
|
root.setAttribute("dir", "rtl");
|
|
@@ -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
|
*
|
|
@@ -19,6 +19,7 @@ import { type ViewSwitch } from "../switches.ts";
|
|
|
19
19
|
import type { PlayToolsLoader } from "./playStory.ts";
|
|
20
20
|
import { type FramePlugin } from "./pluginFrames.ts";
|
|
21
21
|
import type { FrameRenderer } from "./renderer.ts";
|
|
22
|
+
import type { ValueSheets } from "./valueSheets.ts";
|
|
22
23
|
/** What an app passes to the frame. */
|
|
23
24
|
export type FrameConfig = {
|
|
24
25
|
/** The framework that draws the stories (`@forgebook/react` passes its own). */
|
|
@@ -36,6 +37,11 @@ export type FrameConfig = {
|
|
|
36
37
|
readonly previews?: readonly unknown[];
|
|
37
38
|
/** The switches of the toolbar and the View menu, as the shell's configuration gives them; the theme and contrast by default. */
|
|
38
39
|
readonly switches?: readonly ViewSwitch[];
|
|
40
|
+
/**
|
|
41
|
+
* The address of each switch value's own style sheet, by `<switch id>=<value>`; none when no value has one. The
|
|
42
|
+
* generated frame gives addresses the configuration's check allowed; the page checks nothing itself.
|
|
43
|
+
*/
|
|
44
|
+
readonly valueSheets?: ValueSheets;
|
|
39
45
|
/** The catalogue's lists (its backgrounds, text sizes, grid step, accessibility rules…); the defaults when none. */
|
|
40
46
|
readonly lists?: CatalogueLists;
|
|
41
47
|
/** Loads the play tools, when the project installs Testing Library (the generated frame passes it then). */
|
|
@@ -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,31 @@
|
|
|
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 { panelArgsOf, storyArgsOf } from "./panelValues.js";
|
|
36
38
|
import { startPluginFrames } from "./pluginFrames.js";
|
|
37
39
|
import { shellChannel } from "./shellChannel.js";
|
|
40
|
+
import { checkForShell } from "./shellCheck.js";
|
|
38
41
|
import { spillOutline } from "./spillOutline.js";
|
|
39
42
|
import { clearRetry, isStaleModuleError, markRetry, sessionStorageOf } from "./staleModule.js";
|
|
40
43
|
import { mergedPreviews, readPreview, readStory, startingGlobals } from "./storyModule.js";
|
|
@@ -48,11 +51,60 @@ import { runStory } from "./storyRun.js";
|
|
|
48
51
|
const tellDevServer = (report) => {
|
|
49
52
|
import.meta.hot?.send(LIVE_ERROR_EVENT, report);
|
|
50
53
|
};
|
|
51
|
-
//
|
|
54
|
+
// the browser writes a stack in the lines of the code Vite served, and the dev server answers with the lines as written
|
|
55
|
+
import.meta.hot?.on(MAPPED_STACK_EVENT, (answer) => {
|
|
56
|
+
if (!isMappedStackAnswer(answer))
|
|
57
|
+
return;
|
|
58
|
+
for (const shown of document.querySelectorAll(`.${ERROR_STACK_CLASS}`))
|
|
59
|
+
if (shown.textContent === answer.sent)
|
|
60
|
+
shown.textContent = answer.stack;
|
|
61
|
+
});
|
|
62
|
+
// 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
|
|
63
|
+
// story the frame gave up on keeps saying so until a new page waits for it again
|
|
52
64
|
import.meta.hot?.on("vite:afterUpdate", () => {
|
|
53
|
-
|
|
65
|
+
const status = document.documentElement.getAttribute(STATUS_ATTRIBUTE);
|
|
66
|
+
if (status === "error" || status === "pending")
|
|
54
67
|
window.location.reload();
|
|
55
68
|
});
|
|
69
|
+
/**
|
|
70
|
+
* 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
|
|
71
|
+
* browser says only that the import failed, and the reason reaches the page on the dev server's own channel.
|
|
72
|
+
*/
|
|
73
|
+
let servedError;
|
|
74
|
+
let followServedError;
|
|
75
|
+
import.meta.hot?.on("vite:error", ({ err }) => {
|
|
76
|
+
// the first since this page loaded: what its own import asked for, not what another frame's asked for later
|
|
77
|
+
servedError ??= bundlerErrorLines(err.message, err)[0];
|
|
78
|
+
followServedError?.();
|
|
79
|
+
followServedError = undefined;
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* What shows the sheets of a frame's values; none for a catalogue with none, which so loads no code for them.
|
|
83
|
+
*
|
|
84
|
+
* @param valueSheets - each value's sheet, when the catalogue has any.
|
|
85
|
+
* @param sheets - the frame's Styles setting.
|
|
86
|
+
* @param switches - the catalogue's switches.
|
|
87
|
+
* @param onFailed - told a sheet that did not load: the story is drawn without it.
|
|
88
|
+
*/
|
|
89
|
+
const valueSheetsShower = async (valueSheets, sheets, switches, onFailed) => {
|
|
90
|
+
if (valueSheets === undefined)
|
|
91
|
+
return undefined;
|
|
92
|
+
const { valueSheetUrls, valueSheetsIn } = await import("./valueSheets.js");
|
|
93
|
+
const show = valueSheetsIn(document, onFailed);
|
|
94
|
+
return (values) => show(valueSheetUrls(values, sheets, valueSheets, switches));
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Fails a frame whose story did not load, with the dev server's reason when the import only says it failed, as soon as
|
|
98
|
+
* the reason arrives: it may come after the failed import.
|
|
99
|
+
*
|
|
100
|
+
* @param message - the error's message.
|
|
101
|
+
* @param fail - shows a reason in the frame.
|
|
102
|
+
*/
|
|
103
|
+
const failedToLoad = (message, fail) => {
|
|
104
|
+
if (isStaleModuleError(message))
|
|
105
|
+
followServedError = () => fail(servedError ?? message);
|
|
106
|
+
fail(isStaleModuleError(message) ? (servedError ?? message) : message);
|
|
107
|
+
};
|
|
56
108
|
/**
|
|
57
109
|
* Does what a message of the shell asks of the rendered story; the view's live part is applied apart, before the story
|
|
58
110
|
* loads.
|
|
@@ -60,11 +112,13 @@ import.meta.hot?.on("vite:afterUpdate", () => {
|
|
|
60
112
|
* @param message - the message.
|
|
61
113
|
* @param controls - the rendered story's controls.
|
|
62
114
|
* @param storyId - the story's id, for the answers.
|
|
115
|
+
* @param pendingReason - why the story was not seen in its final state, if so: a check of what it shows now would pass
|
|
116
|
+
* on a fallback, so it answers this instead.
|
|
63
117
|
* @param rules - the catalogue's accessibility rules, for a check; none when it checks no accessibility.
|
|
64
118
|
* @param axeUrl - the address of axe's script, for a check.
|
|
65
119
|
* @param tellShell - tells the shell the check's result.
|
|
66
120
|
*/
|
|
67
|
-
const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
|
|
121
|
+
const answerShell = (message, controls, storyId, pendingReason, rules, axeUrl, tellShell) => {
|
|
68
122
|
if (message.type === "forgebook:replay")
|
|
69
123
|
void controls.replay();
|
|
70
124
|
else if (message.type === "forgebook:args")
|
|
@@ -73,29 +127,51 @@ const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
|
|
|
73
127
|
controls.setEvents(message.names);
|
|
74
128
|
else if (message.type === "forgebook:matrix")
|
|
75
129
|
controls.setMatrix(message.matrix ?? undefined);
|
|
76
|
-
else if (message.type === "forgebook:play-
|
|
77
|
-
controls.
|
|
130
|
+
else if (message.type === "forgebook:play-step")
|
|
131
|
+
controls.stepPlay(message.command);
|
|
78
132
|
else if (message.type === "forgebook:clock")
|
|
79
133
|
controls.setClock(message.state);
|
|
80
134
|
else if (message.type === "forgebook:clock-restart")
|
|
81
135
|
controls.restartClock();
|
|
82
|
-
else if (message.type === "forgebook:check")
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
136
|
+
else if (message.type === "forgebook:check")
|
|
137
|
+
checkForShell(storyId, pendingReason, rules, axeUrl, tellShell);
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Says on the page that the frame gave up on what the story loads: a person looking at the story, or at its picture,
|
|
141
|
+
* must not take the fallback for the story. Out of the story's own element, so the story is laid out as it was.
|
|
142
|
+
*
|
|
143
|
+
* @param reason - why.
|
|
144
|
+
*/
|
|
145
|
+
const showPending = (reason) => {
|
|
146
|
+
const notice = document.createElement("p");
|
|
147
|
+
notice.className = "forgebook-frame-pending";
|
|
148
|
+
notice.setAttribute("role", "status");
|
|
149
|
+
notice.textContent = `Not verified: ${reason}`;
|
|
150
|
+
document.body.prepend(notice);
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Says how a story ended on the frame's root and on its page.
|
|
154
|
+
*
|
|
155
|
+
* @param outcome - how it ended; an error that came during the wait stands, and this leaves it there.
|
|
156
|
+
* @param storyId - the story's id, for the dev server.
|
|
157
|
+
* @param isNotAwaited - whether the story said not to wait for what it loads, which a check reports.
|
|
158
|
+
* @returns why it was not seen in its final state, if so.
|
|
159
|
+
*/
|
|
160
|
+
const showOutcome = (outcome, storyId, isNotAwaited) => {
|
|
161
|
+
if (outcome.status === "error")
|
|
162
|
+
return undefined;
|
|
163
|
+
if (isNotAwaited)
|
|
164
|
+
document.documentElement.setAttribute(NOT_AWAITED_ATTRIBUTE, "");
|
|
165
|
+
document.documentElement.setAttribute(STATUS_ATTRIBUTE, outcome.status);
|
|
166
|
+
if (outcome.status === "ready")
|
|
167
|
+
return undefined;
|
|
168
|
+
document.documentElement.setAttribute(PENDING_REASON_ATTRIBUTE, outcome.reason);
|
|
169
|
+
showPending(outcome.reason);
|
|
170
|
+
tellDevServer({ kind: "render", storyId, view: window.location.search, message: outcome.reason });
|
|
171
|
+
return outcome.reason;
|
|
96
172
|
};
|
|
97
|
-
/** The play tools a project installed,
|
|
98
|
-
const
|
|
173
|
+
/** The play tools a project installed, and whether the frame's address lets its story play when it opens. */
|
|
174
|
+
const playOptions = ({ playTools }, playsOnOpen) => playTools === undefined ? { playsOnOpen } : { playTools, playsOnOpen };
|
|
99
175
|
/**
|
|
100
176
|
* Shows the story the address names in the given element.
|
|
101
177
|
*
|
|
@@ -113,7 +189,9 @@ export const mountFrame = async (container, config) => {
|
|
|
113
189
|
// the previews' modules: an edit of one (or of what it imports) brings its successor
|
|
114
190
|
let previews = config.previews ?? [];
|
|
115
191
|
let preview = mergedPreviews(previews.map(readPreview));
|
|
116
|
-
|
|
192
|
+
// a frame runs its play unless its own address says otherwise, whatever the catalogue's readers start with: tests and
|
|
193
|
+
// tools open frames with no word, and a new address written below must not add one
|
|
194
|
+
const view = parseView(window.location.search, { ...catalogue, readerPlay: "on" });
|
|
117
195
|
const shell = shellChannel(config.frames ?? SAME_ORIGIN, window);
|
|
118
196
|
const tellShell = shell.tell;
|
|
119
197
|
applyView(document.documentElement, view, catalogue);
|
|
@@ -136,17 +214,19 @@ export const mountFrame = async (container, config) => {
|
|
|
136
214
|
tellShell({ type: "forgebook:size", storyId, height });
|
|
137
215
|
};
|
|
138
216
|
new ResizeObserver(reportSize).observe(document.body);
|
|
139
|
-
const
|
|
217
|
+
const reportScheme = followCanvasScheme(document, window, storyId, tellShell);
|
|
218
|
+
const reportError = (message, stack) => {
|
|
140
219
|
document.documentElement.setAttribute(STATUS_ATTRIBUTE, "error");
|
|
141
220
|
tellShell({ type: "forgebook:error", storyId, message });
|
|
142
|
-
|
|
221
|
+
const report = { kind: "render", storyId, view: window.location.search, message };
|
|
222
|
+
tellDevServer(stack === undefined ? report : { ...report, stack });
|
|
143
223
|
};
|
|
144
224
|
const fail = (message) => {
|
|
145
225
|
const box = document.createElement("div");
|
|
146
226
|
box.className = "forgebook-frame-error";
|
|
147
227
|
box.setAttribute("role", "alert");
|
|
148
228
|
const text = document.createElement("p");
|
|
149
|
-
text.className =
|
|
229
|
+
text.className = ERROR_MESSAGE_CLASS;
|
|
150
230
|
text.textContent = message;
|
|
151
231
|
box.append(text);
|
|
152
232
|
container.replaceChildren(box);
|
|
@@ -165,6 +245,11 @@ export const mountFrame = async (container, config) => {
|
|
|
165
245
|
.then(({ applyTools }) => applyTools(document, latestTools, catalogue.gridStep))
|
|
166
246
|
.catch((error) => reportError(error instanceof Error ? error.message : String(error)));
|
|
167
247
|
};
|
|
248
|
+
// what shows the sheets of the values drawn, for a catalogue with any; set once the source's are placed
|
|
249
|
+
let showValueSheets;
|
|
250
|
+
// the view asked for while its sheets load: the next message is compared with it, or going back would stop short of
|
|
251
|
+
// overtaking it, and the sheets would then draw a view the reader already left
|
|
252
|
+
let askedView;
|
|
168
253
|
shell.listen((message) => {
|
|
169
254
|
if (message.type === "forgebook:tools")
|
|
170
255
|
showTools(message.tools);
|
|
@@ -174,15 +259,29 @@ export const mountFrame = async (container, config) => {
|
|
|
174
259
|
return;
|
|
175
260
|
const shown = withFixed(message.view, fixed);
|
|
176
261
|
// 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))
|
|
262
|
+
const latest = askedView ?? shownView;
|
|
263
|
+
if (changeShown !== undefined && latest !== undefined && isSameLiveView(withFixed(latest, fixed), shown))
|
|
180
264
|
return;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
265
|
+
askedView = message.view;
|
|
266
|
+
const showLive = () => {
|
|
267
|
+
applyView(document.documentElement, shown, catalogue);
|
|
268
|
+
changeShown?.(message.view);
|
|
269
|
+
shownView = changeShown === undefined ? undefined : message.view;
|
|
270
|
+
askedView = undefined;
|
|
271
|
+
const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
|
|
272
|
+
window.history.replaceState(null, "", address);
|
|
273
|
+
};
|
|
274
|
+
// the root changes with the sheet that draws it; a later view overtakes this one
|
|
275
|
+
if (showValueSheets === undefined)
|
|
276
|
+
showLive();
|
|
277
|
+
else {
|
|
278
|
+
showValueSheets(shown.switches)
|
|
279
|
+
.then((isLast) => {
|
|
280
|
+
if (isLast)
|
|
281
|
+
showLive();
|
|
282
|
+
})
|
|
283
|
+
.catch((error) => reportError(error instanceof Error ? error.message : String(error)));
|
|
284
|
+
}
|
|
186
285
|
});
|
|
187
286
|
// 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
287
|
// drawn to renew in place, and a story file that failed to load keeps no other way to show its fix
|
|
@@ -210,6 +309,8 @@ export const mountFrame = async (container, config) => {
|
|
|
210
309
|
await source.setup?.();
|
|
211
310
|
await preview.setup?.();
|
|
212
311
|
await loadSheets(document, viewSheets(source.sheets, view));
|
|
312
|
+
showValueSheets = await valueSheetsShower(config.valueSheets, view.sheets, switches, reportError);
|
|
313
|
+
await showValueSheets?.(view.switches);
|
|
213
314
|
// the story file's exports: an edit of the file hands them on with its successor's
|
|
214
315
|
let shownFile = await load();
|
|
215
316
|
const first = readStory(shownFile, location.story.exportName, preview);
|
|
@@ -220,12 +321,15 @@ export const mountFrame = async (container, config) => {
|
|
|
220
321
|
const plugins = startPluginFrames(config.plugins, storyId, tellShell);
|
|
221
322
|
let story = first;
|
|
222
323
|
fixed = fixedViewOf(story.globals, story.parameters, catalogue);
|
|
324
|
+
await showValueSheets?.(withFixed(view, fixed).switches);
|
|
223
325
|
applyView(document.documentElement, withFixed(view, fixed), catalogue);
|
|
224
326
|
let controls;
|
|
327
|
+
// why the story was not seen in its final state: a check of what it shows would pass on a fallback
|
|
328
|
+
let pendingReason;
|
|
225
329
|
const clock = storyFrameClock(story.clockStart, isClockHeldIn(window.location.search));
|
|
226
330
|
shell.listen((message) => {
|
|
227
331
|
if (controls !== undefined)
|
|
228
|
-
answerShell(message, controls, storyId, catalogue.a11y, config.axeUrl, tellShell);
|
|
332
|
+
answerShell(message, controls, storyId, pendingReason, catalogue.a11y, config.axeUrl, tellShell);
|
|
229
333
|
});
|
|
230
334
|
// the language's texts, and the switches the story reads (the language's provider reads its id among them); a
|
|
231
335
|
// language the source gives as a loader is loaded as it is shown
|
|
@@ -262,7 +366,7 @@ export const mountFrame = async (container, config) => {
|
|
|
262
366
|
container,
|
|
263
367
|
story,
|
|
264
368
|
identity: { id: storyId, name: location.story.name, title: location.component.title },
|
|
265
|
-
...
|
|
369
|
+
...playOptions(config, view.play === "on"),
|
|
266
370
|
pluginSetups: plugins.setups,
|
|
267
371
|
renderer: config.renderer,
|
|
268
372
|
clock,
|
|
@@ -270,14 +374,17 @@ export const mountFrame = async (container, config) => {
|
|
|
270
374
|
decorators: [...preview.decorators, ...plugins.decorators],
|
|
271
375
|
...shown,
|
|
272
376
|
resolveArgs: (args) => storyArgsOf(args, source.namedValues),
|
|
273
|
-
onControlsReady: (next) => {
|
|
377
|
+
onControlsReady: (next, outcome) => {
|
|
274
378
|
controls = next;
|
|
275
379
|
clearRetry(sessionStorageOf(window), window.location.href);
|
|
276
380
|
// the height first: the shell sizes the frame to the drawn story before anything reads it as ready, instead of
|
|
277
381
|
// waiting on the resize observer, which may report after the ready status
|
|
278
382
|
reportSize();
|
|
279
|
-
|
|
280
|
-
|
|
383
|
+
reportScheme();
|
|
384
|
+
pendingReason = showOutcome(outcome, storyId, story.suspense.isExpected);
|
|
385
|
+
// the shell keeps an error it was told, and would read this as the story being fine again
|
|
386
|
+
if (outcome.status !== "error")
|
|
387
|
+
tellReady();
|
|
281
388
|
changeShown = (live) => {
|
|
282
389
|
shownCount += 1;
|
|
283
390
|
const count = shownCount;
|
|
@@ -296,7 +403,7 @@ export const mountFrame = async (container, config) => {
|
|
|
296
403
|
});
|
|
297
404
|
};
|
|
298
405
|
},
|
|
299
|
-
onError: reportError,
|
|
406
|
+
onError: (message, stack) => reportError(message, stack),
|
|
300
407
|
onTrace: (trace) => {
|
|
301
408
|
tellShell({ type: "forgebook:play", storyId, trace });
|
|
302
409
|
if (trace.status === "failed")
|
|
@@ -370,6 +477,6 @@ export const mountFrame = async (container, config) => {
|
|
|
370
477
|
window.location.reload();
|
|
371
478
|
return;
|
|
372
479
|
}
|
|
373
|
-
|
|
480
|
+
failedToLoad(message, fail);
|
|
374
481
|
}
|
|
375
482
|
};
|