forgebook 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +994 -72
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +182 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +62 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +95 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +204 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +323 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +29 -5
- package/dist/src/addressArgs.js +58 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +148 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +69 -185
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +83 -0
- package/dist/src/componentDocs.js +20 -3
- package/dist/src/controlCode.d.ts +27 -0
- package/dist/src/controlCode.js +41 -0
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/controlValues.d.ts +39 -0
- package/dist/src/frame/controlValues.js +143 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +10 -1
- package/dist/src/frame/mountFrame.js +160 -55
- package/dist/src/frame/panelControls.d.ts +67 -0
- package/dist/src/frame/panelControls.js +110 -0
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/AuthoredHome.js +3 -1
- package/dist/src/shell/CodeTab.d.ts +12 -6
- package/dist/src/shell/CodeTab.js +47 -3
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +6 -6
- package/dist/src/shell/ComponentPage.js +8 -2
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +125 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +30 -12
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +18 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PageWidth.d.ts +29 -0
- package/dist/src/shell/PageWidth.js +18 -0
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +22 -11
- package/dist/src/shell/PropRows.js +62 -24
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -22
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +141 -23
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +29 -49
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/StoryPicker.d.ts +4 -2
- package/dist/src/shell/StoryPicker.js +3 -3
- package/dist/src/shell/Switch.d.ts +29 -0
- package/dist/src/shell/Switch.js +11 -0
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.js +7 -2
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +62 -0
- package/dist/src/shell/customControls.js +81 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +29 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/frameOrder.d.ts +35 -0
- package/dist/src/shell/frameOrder.js +45 -0
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +30 -0
- package/dist/src/shell/laterStrings.js +43 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +376 -169
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +9 -0
- package/dist/src/shell/useAddressArgs.js +56 -11
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useFrameQueue.d.ts +8 -3
- package/dist/src/shell/useFrameQueue.js +42 -12
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollSettled.d.ts +18 -0
- package/dist/src/shell/useScrollSettled.js +56 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +148 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +99 -3
- package/dist/src/storyCheck.js +39 -1
- package/dist/src/storyCodeText.d.ts +52 -0
- package/dist/src/storyCodeText.js +30 -0
- package/dist/src/storyControls.d.ts +103 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +354 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +135 -66
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +51 -0
- package/dist/src/vite/agentStoryCode.js +44 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/argControlsConfig.d.ts +30 -0
- package/dist/src/vite/argControlsConfig.js +176 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +21 -4
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +67 -1
- package/dist/src/vite/configFile.d.ts +15 -2
- package/dist/src/vite/configFile.js +109 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +172 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +55 -73
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +119 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +187 -60
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/typedControls.d.ts +31 -0
- package/dist/src/vite/typedControls.js +66 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* A story of a composed catalogue (`refs`), shown read-only: its own catalogue's embed page in a frame, on that
|
|
4
|
+
* catalogue's origin, with this catalogue's switches. Loaded the first time one is opened.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The embed page is the composed catalogue's own, so the story runs with its own preview, theme and frames, and this
|
|
8
|
+
* page runs none of its code: what crosses one way is the address (the story and the switches, which the embed reads as
|
|
9
|
+
* any address), the other way a height (`EmbedSizeMessage`), heard only from that frame's window and origin. A change of
|
|
10
|
+
* the toolbar's switches gives the frame a new address. Off this catalogue's origin the frame is sandboxed as a story's
|
|
11
|
+
* frame is, which keeps it from navigating this tab.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import "./refStory.css";
|
|
16
|
+
import { useEffect, useRef, useState } from "react";
|
|
17
|
+
import { refEmbedAddress, refStoryAddress } from "../catalogueRefs.js";
|
|
18
|
+
import { EMBED_SIZE_TYPE } from "../embed.js";
|
|
19
|
+
import { STAGE_HEIGHT_RANGE } from "../viewState.js";
|
|
20
|
+
import { FRAME_SANDBOX, framesOrigin } from "./framesOrigin.js";
|
|
21
|
+
import { Icon } from "./icons.js";
|
|
22
|
+
import { REF_STRINGS } from "./refStrings.js";
|
|
23
|
+
import { useRefIndex } from "./useRefIndex.js";
|
|
24
|
+
/** The frame's height before the embed reports its own, in CSS px. */
|
|
25
|
+
const WAITING_HEIGHT = 240;
|
|
26
|
+
/**
|
|
27
|
+
* The browser features another site's page may use: what shows a story (full screen, a video, a copy button), and none
|
|
28
|
+
* that asks the reader (the camera, the microphone, the position, the clipboard's reading). A permission the reader
|
|
29
|
+
* gave this catalogue would otherwise be that site's too, without a question.
|
|
30
|
+
*/
|
|
31
|
+
const REF_PERMISSIONS = [
|
|
32
|
+
"fullscreen",
|
|
33
|
+
"picture-in-picture",
|
|
34
|
+
"autoplay",
|
|
35
|
+
"encrypted-media",
|
|
36
|
+
"clipboard-write"
|
|
37
|
+
].join("; ");
|
|
38
|
+
/** The story's component title and name, as the index gives them; none until it is read, or when it lists neither. */
|
|
39
|
+
const namesOf = (index, storyId) => {
|
|
40
|
+
for (const component of index?.components ?? []) {
|
|
41
|
+
const story = component.stories.find((each) => each.id === storyId);
|
|
42
|
+
if (story !== undefined)
|
|
43
|
+
return { component: component.title.split("/").join(" › "), story: story.name };
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Whether a message is a height from the embed page: its type and a number, nothing else is read.
|
|
49
|
+
*
|
|
50
|
+
* @param data - the message.
|
|
51
|
+
*/
|
|
52
|
+
const heightOf = (data) => {
|
|
53
|
+
if (typeof data !== "object" || data === null)
|
|
54
|
+
return undefined;
|
|
55
|
+
const type = Reflect.get(data, "type");
|
|
56
|
+
const height = Reflect.get(data, "height");
|
|
57
|
+
// never taller than a stage: the embed scrolls a taller story inside its frame, and a page could say any number
|
|
58
|
+
return type === EMBED_SIZE_TYPE && typeof height === "number" && Number.isFinite(height) && height > 0
|
|
59
|
+
? Math.min(Math.ceil(height), STAGE_HEIGHT_RANGE.max)
|
|
60
|
+
: undefined;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The embed page's frame, as tall as the story it reports.
|
|
64
|
+
*
|
|
65
|
+
* @param props - the composed catalogue, the frame's address and its accessible name.
|
|
66
|
+
*/
|
|
67
|
+
const RefFrame = ({ composed, address, title }) => {
|
|
68
|
+
const frameRef = useRef(null);
|
|
69
|
+
const [height, setHeight] = useState(undefined);
|
|
70
|
+
const origin = new URL(composed.url).origin;
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
const onMessage = (event) => {
|
|
73
|
+
if (event.origin !== origin || event.source !== frameRef.current?.contentWindow)
|
|
74
|
+
return;
|
|
75
|
+
const reported = heightOf(event.data);
|
|
76
|
+
if (reported !== undefined)
|
|
77
|
+
setHeight(reported);
|
|
78
|
+
};
|
|
79
|
+
window.addEventListener("message", onMessage);
|
|
80
|
+
return () => window.removeEventListener("message", onMessage);
|
|
81
|
+
}, [origin]);
|
|
82
|
+
return (_jsx("iframe", { ref: frameRef, className: "forgebook-ref-story__frame", src: address, title: title, allow: REF_PERMISSIONS,
|
|
83
|
+
// on this catalogue's own origin a sandbox could be lifted by what runs in it; elsewhere it keeps this tab
|
|
84
|
+
sandbox: origin === window.location.origin ? undefined : FRAME_SANDBOX, style: { height: height ?? WAITING_HEIGHT } }));
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Whether a composed catalogue is served on the origin this catalogue's stories run on, where it is not this page.
|
|
88
|
+
*
|
|
89
|
+
* @param composed - the composed catalogue.
|
|
90
|
+
*/
|
|
91
|
+
const isOnFramesOrigin = (composed) => {
|
|
92
|
+
const origin = new URL(composed.url).origin;
|
|
93
|
+
return origin === framesOrigin() && origin !== window.location.origin;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Why a story of a composed catalogue is not shown, or none: the shell names only a catalogue it composes, and one on
|
|
97
|
+
* this catalogue's stories' origin would be framed as one of them and share their storage.
|
|
98
|
+
*
|
|
99
|
+
* @param composed - the composed catalogue the address names, if the configuration has it.
|
|
100
|
+
* @param refId - the id the address names.
|
|
101
|
+
*/
|
|
102
|
+
const refusalOf = (composed, refId) => {
|
|
103
|
+
if (composed === undefined)
|
|
104
|
+
return REF_STRINGS.unknownRef(refId);
|
|
105
|
+
return isOnFramesOrigin(composed) ? REF_STRINGS.onFramesOrigin(composed.title) : undefined;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* A story of a composed catalogue, read-only.
|
|
109
|
+
*
|
|
110
|
+
* @param props - the composed catalogues, the one and the story the address names, and the switches.
|
|
111
|
+
*/
|
|
112
|
+
export const RefStoryPage = ({ refs, refId, storyId, switches }) => {
|
|
113
|
+
const composed = refs.find((each) => each.id === refId);
|
|
114
|
+
const state = useRefIndex(composed, true);
|
|
115
|
+
const refusal = refusalOf(composed, refId);
|
|
116
|
+
if (composed === undefined || refusal !== undefined)
|
|
117
|
+
return (_jsx("div", { className: "forgebook-workspace", role: "alert", children: _jsx("h1", { className: "forgebook-empty", children: refusal }) }));
|
|
118
|
+
const names = namesOf(state.status === "ready" ? state.index : undefined, storyId);
|
|
119
|
+
const storyName = names?.story ?? storyId;
|
|
120
|
+
return (_jsxs("div", { className: "forgebook-workspace forgebook-ref-story", children: [_jsxs("header", { className: "forgebook-header", children: [_jsx("p", { className: "forgebook-header__path", children: [composed.title, names?.component].filter((part) => part !== undefined).join(" · ") }), _jsxs("div", { className: "forgebook-header__row", children: [_jsx("h1", { className: "forgebook-header__title", children: storyName }), _jsxs("a", { className: "forgebook-button", href: refStoryAddress(composed, storyId), target: "_blank", rel: "noopener noreferrer", children: [_jsx(Icon, { name: "external", size: 12 }), REF_STRINGS.openThere(composed.title)] })] }), _jsx("p", { className: "forgebook-ref-story__note", children: REF_STRINGS.readOnly })] }), _jsx("div", { className: "forgebook-ref-story__stage", children: _jsx(RefFrame
|
|
121
|
+
// a new story is a new frame: its height starts over with it
|
|
122
|
+
, { composed: composed, address: refEmbedAddress(composed, storyId, switches), title: REF_STRINGS.storyTitle(storyName, composed.title) }, storyId) })] }));
|
|
123
|
+
};
|
|
@@ -112,24 +112,30 @@ const ResultNote = ({ result, listed }) => {
|
|
|
112
112
|
return (_jsxs("p", { className: "forgebook-result__note", children: [more > 0 ? _jsx("span", { children: SEARCH_STRINGS.more(more) }) : null, result.missed.length > 0 ? _jsx("span", { children: SEARCH_STRINGS.missing(result.missed.join(", ")) }) : null] }));
|
|
113
113
|
};
|
|
114
114
|
/** The answer's rows, for the keys and the list. */
|
|
115
|
-
const useResultRows = (answer) => {
|
|
115
|
+
const useResultRows = (answer, hrefOf) => {
|
|
116
116
|
const baseId = useId();
|
|
117
117
|
return useMemo(() => answer.results.map((result, place) => ({
|
|
118
118
|
result,
|
|
119
|
-
own: { id: `${baseId}-${place}`, target: result.target },
|
|
119
|
+
own: { id: `${baseId}-${place}`, key: hrefOf(result.target), target: result.target },
|
|
120
120
|
hits: result.hits.map((hit, hitPlace) => ({
|
|
121
121
|
hit,
|
|
122
|
-
row: {
|
|
122
|
+
row: {
|
|
123
|
+
id: `${baseId}-${place}-${hitPlace}`,
|
|
124
|
+
key: `${hrefOf(result.target)} ${hitPlace}`,
|
|
125
|
+
target: hit.target
|
|
126
|
+
}
|
|
123
127
|
}))
|
|
124
|
-
})), [answer, baseId]);
|
|
128
|
+
})), [answer, baseId, hrefOf]);
|
|
125
129
|
};
|
|
126
130
|
/** The highlighted row: moved by the keys and the pointer, kept in view, named to the field. */
|
|
127
|
-
const useActiveRow = ({ rows, isShown, hrefOf, onOpen, onActiveChange, keysRef }) => {
|
|
128
|
-
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const
|
|
131
|
+
const useActiveRow = ({ rows, isShown, words, isBehind, hrefOf, onOpen, onActiveChange, keysRef }) => {
|
|
132
|
+
// what a person chose is a row, not a place: an index that arrives moves the rows, and Enter must open the one chosen.
|
|
133
|
+
// Until they choose, and for new words, it is the first
|
|
134
|
+
const [chosen, setChosen] = useState();
|
|
135
|
+
const chosenPlace = chosen?.words === words ? rows.findIndex((row) => row.key === chosen.key) : -1;
|
|
136
|
+
const place = Math.max(chosenPlace, 0);
|
|
137
|
+
const active = rows[place];
|
|
138
|
+
const setActive = (row) => setChosen({ words, key: row.key });
|
|
133
139
|
const activeId = isShown ? active?.id : undefined;
|
|
134
140
|
useEffect(() => onActiveChange(activeId), [activeId, onActiveChange]);
|
|
135
141
|
const listRef = useRef(null);
|
|
@@ -138,23 +144,42 @@ const useActiveRow = ({ rows, isShown, hrefOf, onOpen, onActiveChange, keysRef }
|
|
|
138
144
|
return;
|
|
139
145
|
listRef.current?.querySelector(`[id="${CSS.escape(activeId)}"]`)?.scrollIntoView({ block: "nearest" });
|
|
140
146
|
}, [activeId]);
|
|
147
|
+
const act = ({ key, hasModifier }) => {
|
|
148
|
+
if (activeId === undefined || active === undefined)
|
|
149
|
+
return false;
|
|
150
|
+
const step = KEY_STEPS[key];
|
|
151
|
+
const next = step === undefined ? undefined : rows[(place + step + rows.length) % rows.length];
|
|
152
|
+
if (next !== undefined)
|
|
153
|
+
setActive(next);
|
|
154
|
+
else if (key !== "Enter")
|
|
155
|
+
return false;
|
|
156
|
+
else if (hasModifier)
|
|
157
|
+
window.open(hrefOf(active.target), "_blank", "noopener");
|
|
158
|
+
else
|
|
159
|
+
onOpen(active.target);
|
|
160
|
+
return true;
|
|
161
|
+
};
|
|
162
|
+
// a key pressed while the list is behind the words is meant for the list of those words, and waits for it
|
|
163
|
+
const waitingKeys = useRef([]);
|
|
164
|
+
useEffect(() => {
|
|
165
|
+
if (isBehind)
|
|
166
|
+
return;
|
|
167
|
+
const next = waitingKeys.current.shift();
|
|
168
|
+
// one at a time: the next key acts on the row this one moved to, which the next render gives
|
|
169
|
+
if (next !== undefined && !act(next))
|
|
170
|
+
waitingKeys.current = [];
|
|
171
|
+
});
|
|
141
172
|
useImperativeHandle(keysRef, () => ({
|
|
142
173
|
press: (key, hasModifier) => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return false;
|
|
150
|
-
else if (hasModifier)
|
|
151
|
-
window.open(hrefOf(active.target), "_blank", "noopener");
|
|
152
|
-
else
|
|
153
|
-
onOpen(active.target);
|
|
154
|
-
return true;
|
|
174
|
+
const isListKey = key === "Enter" || KEY_STEPS[key] !== undefined;
|
|
175
|
+
if (isListKey && (isBehind || waitingKeys.current.length > 0)) {
|
|
176
|
+
waitingKeys.current.push({ key, hasModifier });
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
return act({ key, hasModifier });
|
|
155
180
|
}
|
|
156
181
|
}));
|
|
157
|
-
return { active, setActive
|
|
182
|
+
return { active, setActive, listRef };
|
|
158
183
|
};
|
|
159
184
|
/** The answer's state, in a line: how many results, what is still coming, what could not be read. */
|
|
160
185
|
const PanelStatus = ({ total, query, isLoading, hasFailed }) => (_jsxs("p", { className: "forgebook-search-panel__status", role: "status", children: [total === 0 && !isLoading ? _jsx("span", { children: SEARCH_STRINGS.nothing(query.trim()) }) : null, total > 0 ? _jsx("span", { children: SEARCH_STRINGS.count(total) }) : null, isLoading ? _jsx("span", { children: SEARCH_STRINGS.reading }) : null, hasFailed ? _jsx("span", { children: SEARCH_STRINGS.unreadable }) : null] }));
|
|
@@ -175,7 +200,7 @@ export const SearchPanel = ({ tree, sources, query, isOpen, field, sidebarWidth,
|
|
|
175
200
|
// the field never waits for a long list
|
|
176
201
|
const words = useDeferredValue(query);
|
|
177
202
|
const answer = useMemo(() => searchCatalogue(all, words, LIMITS), [all, words]);
|
|
178
|
-
const results = useResultRows(answer);
|
|
203
|
+
const results = useResultRows(answer, hrefOf);
|
|
179
204
|
const rows = useMemo(() => results.flatMap(({ own, hits }) => [own, ...hits.map(({ row }) => row)]), [results]);
|
|
180
205
|
const isShown = isOpen && hasQuery;
|
|
181
206
|
const panelRef = useRef(null);
|
|
@@ -188,6 +213,8 @@ export const SearchPanel = ({ tree, sources, query, isOpen, field, sidebarWidth,
|
|
|
188
213
|
const { active, setActive, listRef } = useActiveRow({
|
|
189
214
|
rows,
|
|
190
215
|
isShown,
|
|
216
|
+
words,
|
|
217
|
+
isBehind: words !== query,
|
|
191
218
|
hrefOf,
|
|
192
219
|
onOpen,
|
|
193
220
|
onActiveChange,
|
|
@@ -10,8 +10,11 @@ import { type AddressTexts } from "../addressTexts.ts";
|
|
|
10
10
|
import type { CatalogueLists } from "../catalogue.ts";
|
|
11
11
|
import type { ViewSwitch } from "../switches.ts";
|
|
12
12
|
import type { WrittenHomeProps } from "./AuthoredHome.tsx";
|
|
13
|
+
import type { ArgControlLoaders } from "./customControls.ts";
|
|
13
14
|
import { type LoadPluginHosts } from "./pluginHostsContext.ts";
|
|
14
15
|
import type { ShellPlugin } from "./pluginTabs.tsx";
|
|
16
|
+
import type { ShellRefs } from "./refParts.tsx";
|
|
17
|
+
import { type ToolbarProps } from "./Toolbar.tsx";
|
|
15
18
|
/** What an app passes to the shell. */
|
|
16
19
|
export type ShellConfig = {
|
|
17
20
|
/** The catalogue's name, in the page title and the sidebar. */
|
|
@@ -30,6 +33,8 @@ export type ShellConfig = {
|
|
|
30
33
|
readonly heights?: string;
|
|
31
34
|
/** The sources, in the order the sidebar lists them. */
|
|
32
35
|
readonly sources: readonly StorySource[];
|
|
36
|
+
/** The catalogue's own story patterns, for a home with no story to say where it looks; none by default. */
|
|
37
|
+
readonly storyGlobs?: readonly string[];
|
|
33
38
|
/**
|
|
34
39
|
* The frame page's address: relative to the shell's (`frame.html`) when the frames share its origin, on the frames'
|
|
35
40
|
* origin otherwise (`mountShell` makes it).
|
|
@@ -55,6 +60,13 @@ export type ShellConfig = {
|
|
|
55
60
|
readonly home?: () => Promise<ComponentType<WrittenHomeProps>>;
|
|
56
61
|
/** Loads the catalogue's design tokens, on first use; none when it has none. */
|
|
57
62
|
readonly loadTokens?: () => Promise<unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Loads the previews of the catalogue's galleries, when one first opens; none when it gives none. The generated page
|
|
65
|
+
* gives what the configuration's check allowed; the page checks nothing itself.
|
|
66
|
+
*/
|
|
67
|
+
readonly loadSwitchPreviews?: ToolbarProps["loadSwitchPreviews"];
|
|
68
|
+
/** Loads each custom control `argControls` registers, by name; none when it registers none. */
|
|
69
|
+
readonly argControls?: ArgControlLoaders;
|
|
58
70
|
/** The plugins with views (the generated page passes them); none by default. */
|
|
59
71
|
readonly plugins?: readonly ShellPlugin[];
|
|
60
72
|
/**
|
|
@@ -67,6 +79,12 @@ export type ShellConfig = {
|
|
|
67
79
|
* texts that are not plain words from a story that may write them into markup. `any` by default.
|
|
68
80
|
*/
|
|
69
81
|
readonly addressTexts?: AddressTexts;
|
|
82
|
+
/**
|
|
83
|
+
* Other catalogues, built and deployed, listed after this one's stories and shown read-only (`catalogueRefs.ts`), and
|
|
84
|
+
* the code that draws them (`forgebook/shell/refs`): the generated page gives them only for a catalogue that has some,
|
|
85
|
+
* so the others' first load carries none of it. None by default.
|
|
86
|
+
*/
|
|
87
|
+
readonly refs?: ShellRefs;
|
|
70
88
|
};
|
|
71
89
|
/**
|
|
72
90
|
* The catalogue's page: its settings computed once from the configuration (its switches, its languages' switch, its
|
package/dist/src/shell/Shell.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { readArgsParam, readStorybookLink } from "../addressArgsParam.js";
|
|
4
|
+
import { addressArgsRead } from "../addressTexts.js";
|
|
4
5
|
import { deviceDefaultOf, pageDeviceDefault } from "../deviceView.js";
|
|
5
|
-
import { panelArgsParam
|
|
6
|
+
import { panelArgsParam } from "../messages.js";
|
|
6
7
|
import { anchorOf } from "../pageAddress.js";
|
|
7
8
|
import { findPage } from "../pageTree.js";
|
|
8
9
|
import { sourceFiles } from "../sourceFiles.js";
|
|
9
10
|
import { storyBackground } from "../storyBackground.js";
|
|
10
11
|
import { NOT_FIXED } from "../storyGlobals.js";
|
|
11
12
|
import { knownHeight } from "../storyHeights.js";
|
|
12
|
-
import { componentId, findComponent, findComponentByTitle, findStory, isLogicComponent, sidebarStoryIds, storyTree } from "../storyTree.js";
|
|
13
|
+
import { componentId, findComponent, findComponentByTitle, findStory, isLogicComponent, sidebarStoryIds, storyOfAddress, storyTree } from "../storyTree.js";
|
|
13
14
|
import { parseView, viewParams } from "../viewState.js";
|
|
14
15
|
import { CatalogueContext, NO_PLUGINS, useCatalogue, useConfiguredCatalogue } from "./catalogueContext.js";
|
|
16
|
+
import { HAS_REFS, shellRefs } from "./composition.js";
|
|
15
17
|
import { filesCodeLoader } from "./filesCode.js";
|
|
16
18
|
import { Icon } from "./icons.js";
|
|
17
19
|
import { LazyPage } from "./LazyPage.js";
|
|
@@ -19,16 +21,20 @@ import { LogicMark } from "./LogicMark.js";
|
|
|
19
21
|
import { lazyModule } from "./lazyModule.js";
|
|
20
22
|
import { PluginHostsContext } from "./pluginHostsContext.js";
|
|
21
23
|
import { Sidebar } from "./Sidebar.js";
|
|
22
|
-
import {
|
|
24
|
+
import { SidebarShade } from "./SidebarHandle.js";
|
|
23
25
|
import { Stage } from "./Stage.js";
|
|
24
26
|
import { StoryPicker } from "./StoryPicker.js";
|
|
25
27
|
import { STRINGS } from "./strings.js";
|
|
26
28
|
import { ShowSidebarButton, Toolbar } from "./Toolbar.js";
|
|
27
29
|
import { useAppearance } from "./useAppearance.js";
|
|
30
|
+
import { useEditedProblems } from "./useEditedProblems.js";
|
|
31
|
+
import { useListedTree } from "./useListedTree.js";
|
|
28
32
|
import { useRecentPages } from "./useRecentPages.js";
|
|
33
|
+
import { useShortcutHelp } from "./useShortcutHelp.js";
|
|
29
34
|
import { useShownView } from "./useShownView.js";
|
|
30
35
|
import { useSidebarLayout } from "./useSidebarLayout.js";
|
|
31
36
|
import { useSidebarOverlay } from "./useSidebarOverlay.js";
|
|
37
|
+
import { readStored } from "./useStored.js";
|
|
32
38
|
import { useStoryHeights } from "./useStoryHeights.js";
|
|
33
39
|
import { useStoryIdsElement } from "./useStoryIdsElement.js";
|
|
34
40
|
import { useStoryKeys } from "./useStoryKeys.js";
|
|
@@ -37,6 +43,15 @@ import { useSystemDark } from "./useSystemDark.js";
|
|
|
37
43
|
const DOC_PAGE = lazyModule(() => import("./DocPage.js").then((module) => module.DocPage));
|
|
38
44
|
/** The home, loaded when it is opened. */
|
|
39
45
|
const HOME_PAGE = lazyModule(() => import("./HomePage.js").then((module) => module.HomePage));
|
|
46
|
+
/** The address's parameter that names a composed catalogue; its story is in `story`, as a story of this one's is. */
|
|
47
|
+
const REF_PARAMETER = "ref";
|
|
48
|
+
/**
|
|
49
|
+
* A part of the composed catalogues, once its module is there; nothing for a catalogue that composes none, or on a page
|
|
50
|
+
* that shows none of their stories.
|
|
51
|
+
*
|
|
52
|
+
* @param props - the module, if any, and the part's props; none when there is nothing to draw.
|
|
53
|
+
*/
|
|
54
|
+
const RefSlot = ({ refs, part }) => refs === undefined || part === undefined ? null : (_jsx(LazyPage, { module: refsModuleOf(refs), header: null, pageProps: part }));
|
|
40
55
|
/** A component's page, loaded when one is opened. */
|
|
41
56
|
const COMPONENT_PAGE = lazyModule(() => import("./ComponentPage.js").then((module) => module.ComponentPage));
|
|
42
57
|
/**
|
|
@@ -51,6 +66,8 @@ const HOME = { kind: "home" };
|
|
|
51
66
|
const pageKey = (page) => {
|
|
52
67
|
if (page.kind === "home")
|
|
53
68
|
return page.kind;
|
|
69
|
+
if (HAS_REFS && page.kind === "ref")
|
|
70
|
+
return `ref:${page.ref}/${page.id}`;
|
|
54
71
|
// a heading is a place of its own in the history: Back from it returns to where the reader was
|
|
55
72
|
return page.kind === "story" ? `story:${page.id}` : `${page.kind}:${page.id}#${page.anchor ?? ""}`;
|
|
56
73
|
};
|
|
@@ -85,16 +102,20 @@ const drawnWidth = (width, fill) => (width === "fill" ? fill : width);
|
|
|
85
102
|
*/
|
|
86
103
|
const stageHeight = (heights, storyId, width, shownWidth) => knownHeight(heights, storyId, drawnWidth(width, shownWidth ?? FILL_WIDTH));
|
|
87
104
|
/**
|
|
88
|
-
* The page an address's query and fragment name: a story wins, then a component,
|
|
105
|
+
* The page an address's query and fragment name: a composed catalogue's story wins, then a story, a component, a docs
|
|
106
|
+
* page; none is the home.
|
|
89
107
|
*
|
|
90
108
|
* @param search - the address's query.
|
|
91
109
|
* @param hash - its fragment.
|
|
92
110
|
*/
|
|
93
111
|
const pageOf = (search, hash) => {
|
|
94
112
|
const params = new URLSearchParams(search);
|
|
95
|
-
const story = params
|
|
113
|
+
const story = storyOfAddress(params);
|
|
96
114
|
const component = params.get("component");
|
|
97
115
|
const page = params.get("page");
|
|
116
|
+
const ref = HAS_REFS ? params.get(REF_PARAMETER) : null;
|
|
117
|
+
if (ref !== null && story !== null)
|
|
118
|
+
return { kind: "ref", ref, id: story };
|
|
98
119
|
if (story !== null)
|
|
99
120
|
return { kind: "story", id: story };
|
|
100
121
|
const anchor = anchorOf(hash.replace(/^#/, ""));
|
|
@@ -112,32 +133,50 @@ const pageOf = (search, hash) => {
|
|
|
112
133
|
*/
|
|
113
134
|
const readAddress = (catalogue, addressTexts) => {
|
|
114
135
|
const params = new URLSearchParams(window.location.search);
|
|
136
|
+
const param = params.get("args");
|
|
115
137
|
return {
|
|
116
138
|
page: pageOf(window.location.search, window.location.hash),
|
|
117
139
|
view: parseView(window.location.search, catalogue),
|
|
118
|
-
|
|
119
|
-
matrix: (params.get("matrix") ?? "").split(",").filter((name) => name !== "")
|
|
140
|
+
...addressArgsRead(readArgsParam(param), param, addressTexts),
|
|
141
|
+
matrix: (params.get("matrix") ?? "").split(",").filter((name) => name !== ""),
|
|
142
|
+
tags: params.getAll("tag").filter((tag) => tag !== "" && tag !== "!")
|
|
120
143
|
};
|
|
121
144
|
};
|
|
145
|
+
/**
|
|
146
|
+
* Writes a composed catalogue's story into an address's parameters; nothing for another page.
|
|
147
|
+
*
|
|
148
|
+
* @param params - the parameters.
|
|
149
|
+
* @param page - the page.
|
|
150
|
+
*/
|
|
151
|
+
const writeRefPage = (params, page) => {
|
|
152
|
+
if (page.kind !== "ref")
|
|
153
|
+
return;
|
|
154
|
+
params.set(REF_PARAMETER, page.ref);
|
|
155
|
+
params.set("story", page.id);
|
|
156
|
+
};
|
|
122
157
|
/**
|
|
123
158
|
* The query of an address.
|
|
124
159
|
*
|
|
125
160
|
* @param address - the page, the view, the panel's values and the matrix's axes.
|
|
126
161
|
* @param catalogue - the catalogue's switches and default audience, for the view's values.
|
|
127
162
|
*/
|
|
128
|
-
const addressQuery = ({ page, view, panelArgs, matrix }, catalogue) => {
|
|
129
|
-
const params = viewParams(view, catalogue.switches, catalogue.audience);
|
|
163
|
+
const addressQuery = ({ page, view, panelArgs, link, matrix, tags }, catalogue) => {
|
|
164
|
+
const params = viewParams(view, catalogue.switches, catalogue.audience, catalogue.play);
|
|
165
|
+
if (HAS_REFS)
|
|
166
|
+
writeRefPage(params, page);
|
|
130
167
|
if (page.kind === "story")
|
|
131
168
|
params.set("story", page.id);
|
|
132
169
|
if (page.kind === "component")
|
|
133
170
|
params.set("component", page.id);
|
|
134
171
|
if (page.kind === "page")
|
|
135
172
|
params.set("page", page.id);
|
|
136
|
-
const args = page.kind === "story" ? panelArgsParam(panelArgs) : "";
|
|
173
|
+
const args = page.kind === "story" ? (link?.param ?? panelArgsParam(panelArgs)) : "";
|
|
137
174
|
if (args !== "")
|
|
138
175
|
params.set("args", args);
|
|
139
176
|
if (page.kind === "story" && matrix.length > 0)
|
|
140
177
|
params.set("matrix", matrix.join(","));
|
|
178
|
+
for (const tag of tags)
|
|
179
|
+
params.append("tag", tag);
|
|
141
180
|
const query = params.toString();
|
|
142
181
|
// the fragment is part of what is written back on every change of the view, or a change would lose the heading
|
|
143
182
|
const fragment = (page.kind === "page" || page.kind === "component") && page.anchor !== undefined
|
|
@@ -145,7 +184,27 @@ const addressQuery = ({ page, view, panelArgs, matrix }, catalogue) => {
|
|
|
145
184
|
: "";
|
|
146
185
|
return `${query === "" ? window.location.pathname : `?${query}`}${fragment}`;
|
|
147
186
|
};
|
|
148
|
-
/**
|
|
187
|
+
/**
|
|
188
|
+
* What the address's page shows in a catalogue that composes others: a composed catalogue's story, or what `shownPage`
|
|
189
|
+
* said. A `ref` that names no composed catalogue is another site's mark (`?ref=newsletter`): the story is this
|
|
190
|
+
* catalogue's.
|
|
191
|
+
*
|
|
192
|
+
* @param tree - the tree.
|
|
193
|
+
* @param page - the address's page.
|
|
194
|
+
* @param refs - the composed catalogues, if any.
|
|
195
|
+
* @param shown - what `shownPage` said of it.
|
|
196
|
+
*/
|
|
197
|
+
const shownRef = (tree, page, refs, shown) => {
|
|
198
|
+
if (page.kind !== "ref")
|
|
199
|
+
return shown;
|
|
200
|
+
return refs?.catalogues.some((each) => each.id === page.ref)
|
|
201
|
+
? { kind: "ref", place: { refId: page.ref, storyId: page.id } }
|
|
202
|
+
: shownPage(tree, { kind: "story", id: page.id });
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* What the address's page shows: a story or a component that is not there (renamed, removed) says so, never another. A
|
|
206
|
+
* composed catalogue's story is `shownRef`'s.
|
|
207
|
+
*/
|
|
149
208
|
const shownPage = (tree, page) => {
|
|
150
209
|
if (page.kind === "story") {
|
|
151
210
|
const location = findStory(tree, page.id);
|
|
@@ -188,6 +247,37 @@ const isLogicPage = (shown) => {
|
|
|
188
247
|
};
|
|
189
248
|
/** The shown component's place, a story's too; none on any other page. */
|
|
190
249
|
const componentLocationOf = (shown) => shown.kind === "story" || shown.kind === "component" ? shown.location : undefined;
|
|
250
|
+
/** The shown story of a composed catalogue; none on any other page. */
|
|
251
|
+
const refPlaceOf = (shown) => shown.kind === "ref" ? shown.place : undefined;
|
|
252
|
+
/** The page of a composed catalogue's story. */
|
|
253
|
+
const refPageOf = ({ refId, storyId }) => ({ kind: "ref", ref: refId, id: storyId });
|
|
254
|
+
/** The composed catalogues' code, once a part of it was first drawn: a page holds one shell, with one configuration. */
|
|
255
|
+
let refsModule;
|
|
256
|
+
/** The composed catalogues' code, loaded when a part of it is first drawn. */
|
|
257
|
+
const refsModuleOf = (refs) => {
|
|
258
|
+
refsModule ??= lazyModule(refs.load);
|
|
259
|
+
return refsModule;
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* What the composed catalogues add to the shown page: their sidebar sections, and a story's page when one is shown;
|
|
263
|
+
* nothing for a catalogue that composes none.
|
|
264
|
+
*
|
|
265
|
+
* @param refs - the composed catalogues, if any.
|
|
266
|
+
* @param current - the shown story of one of them, if any.
|
|
267
|
+
* @param links - how a story of theirs is linked and opened.
|
|
268
|
+
* @param switches - this catalogue's switches, with the view's values.
|
|
269
|
+
*/
|
|
270
|
+
const refSlotsOf = (refs, current, links, switches) => {
|
|
271
|
+
if (refs === undefined)
|
|
272
|
+
return { sidebar: {}, page: null };
|
|
273
|
+
const page = current === undefined ? undefined : { place: "page", refs: refs.catalogues, ...current, switches };
|
|
274
|
+
return {
|
|
275
|
+
sidebar: {
|
|
276
|
+
composed: _jsx(RefSlot, { refs: refs, part: { place: "sidebar", refs: refs.catalogues, current, ...links } })
|
|
277
|
+
},
|
|
278
|
+
page: _jsx(RefSlot, { refs: refs, part: page })
|
|
279
|
+
};
|
|
280
|
+
};
|
|
191
281
|
/** The shown docs page's place; none on any other page. */
|
|
192
282
|
const pageLocationOf = (shown) => shown.kind === "page" ? shown.location : undefined;
|
|
193
283
|
/** Whether nothing shown follows the view's switches: the home, or a docs page without a story. */
|
|
@@ -324,7 +414,7 @@ const RelatedLinks = ({ related, hrefOf, onOpen }) => related.length === 0 ? nul
|
|
|
324
414
|
* @param props - the problems, the shown component's place, the message when a named page is missing, the picker
|
|
325
415
|
* of the component's stories, and the related components.
|
|
326
416
|
*/
|
|
327
|
-
const ShellHeader = ({ problems, location, page, message, picker, related, isLogic }) => (_jsxs(_Fragment, { children: [problems.length > 0 ? (_jsxs("div", { className: "forgebook-problems", role: "alert", children: [_jsx("strong", { children: STRINGS.indexProblems }), _jsx("ul", { children: problems.map((problem) => (_jsx("li", { children: problem }, problem))) })] })) : null, message === undefined ? null : (_jsx("
|
|
417
|
+
const ShellHeader = ({ problems, location, page, message, picker, related, isLogic }) => (_jsxs(_Fragment, { children: [problems.length > 0 ? (_jsxs("div", { className: "forgebook-problems", role: "alert", children: [_jsx("strong", { children: STRINGS.indexProblems }), _jsx("ul", { children: problems.map((problem) => (_jsx("li", { children: problem }, problem))) })] })) : null, message === undefined ? null : (_jsx("div", { role: "alert", children: _jsx("h1", { className: "forgebook-empty", children: message }) })), location === undefined ? null : (_jsxs("header", { className: "forgebook-header", children: [_jsxs("p", { className: "forgebook-header__path", children: [[location.source.name, location.family.name, location.group.name]
|
|
328
418
|
.filter((part) => part !== undefined)
|
|
329
419
|
.join(" · "), location.component.alsoIn.length === 0 ? null : (_jsxs("span", { className: "forgebook-header__also-in", children: [" · ", STRINGS.alsoIn(location.component.alsoIn.map((place) => place.split("/").join(" › ")).join(", "))] }))] }), _jsxs("div", { className: "forgebook-header__row", children: [_jsx("h1", { className: "forgebook-header__title", children: location.component.name }), isLogic ? _jsx(LogicMark, {}) : null, picker, location.component.design === undefined ? null : (_jsxs("a", { className: "forgebook-button", href: location.component.design.url, target: "_blank", rel: "noopener noreferrer", children: [_jsx(Icon, { name: "external", size: 14 }), STRINGS.openInFigma] }))] }), related] })), page === undefined ? null : (_jsxs("header", { className: "forgebook-header", children: [_jsx("p", { className: "forgebook-header__path", children: [page.source.name, page.page.group].filter((part) => part !== undefined).join(" · ") }), _jsx("div", { className: "forgebook-header__row", children: _jsx("h1", { className: "forgebook-header__title", children: page.page.name }) })] }))] }));
|
|
330
420
|
/** A story's page. */
|
|
@@ -357,12 +447,23 @@ const useAddress = (catalogue, addressTexts) => {
|
|
|
357
447
|
window.addEventListener("popstate", onBack);
|
|
358
448
|
return () => window.removeEventListener("popstate", onBack);
|
|
359
449
|
}, [catalogue, addressTexts]);
|
|
450
|
+
// a link in Storybook's form has its reader loaded for it; a value changed meanwhile, or another page, has the last word
|
|
451
|
+
const waitingParam = address.link?.isWaiting === true ? address.link.param : undefined;
|
|
452
|
+
useEffect(() => {
|
|
453
|
+
if (waitingParam === undefined)
|
|
454
|
+
return;
|
|
455
|
+
void readStorybookLink(waitingParam, ({ readStorybookArgs }, param) => readStorybookArgs(param)).then((read) => setAddress((current) => current.link?.isWaiting === true && current.link.param === waitingParam
|
|
456
|
+
? { ...current, ...addressArgsRead(read, waitingParam, addressTexts) }
|
|
457
|
+
: current));
|
|
458
|
+
}, [waitingParam, addressTexts]);
|
|
360
459
|
// a height set with the foot handle belongs to the story it was set on: another page starts at its own
|
|
361
460
|
const pageAddress = (page) => ({
|
|
362
461
|
page,
|
|
363
462
|
view: { ...address.view, height: "auto" },
|
|
364
463
|
panelArgs: {},
|
|
365
|
-
|
|
464
|
+
link: undefined,
|
|
465
|
+
matrix: [],
|
|
466
|
+
tags: address.tags
|
|
366
467
|
});
|
|
367
468
|
const open = (page, movesFocus) => {
|
|
368
469
|
const next = pageAddress(page);
|
|
@@ -411,8 +512,9 @@ const useOwnPageId = (address, ownPage, replaceAddress) => {
|
|
|
411
512
|
*
|
|
412
513
|
* @param props - the configuration.
|
|
413
514
|
*/
|
|
414
|
-
const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addressTexts = "any", plugins = NO_PLUGINS, loadTokens, home }) => {
|
|
515
|
+
const ShellPage = ({ title, logo, hasBranding, heights, sources, storyGlobs, frameUrl, addressTexts = "any", plugins = NO_PLUGINS, loadTokens, loadSwitchPreviews, argControls, home }) => {
|
|
415
516
|
const tree = useMemo(() => storyTree(sources), [sources]);
|
|
517
|
+
const problems = useEditedProblems(tree.problems);
|
|
416
518
|
// the written home's module, loaded when the home is first opened
|
|
417
519
|
const writtenHome = useMemo(() => (home === undefined ? undefined : lazyModule(home)), [home]);
|
|
418
520
|
const idsByTitle = useMemo(() => componentIdsByTitle(tree), [tree]);
|
|
@@ -440,7 +542,18 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
440
542
|
const isSystemDark = useSystemDark();
|
|
441
543
|
const appearance = useAppearance(address.view, catalogue.switches);
|
|
442
544
|
useStoryIdsElement(useMemo(() => sidebarStoryIds(tree, catalogue.storyGroups.map((group) => group.id)), [tree, catalogue.storyGroups]));
|
|
443
|
-
const
|
|
545
|
+
const { help, showHelp } = useShortcutHelp();
|
|
546
|
+
let shown = shownPage(tree, address.page);
|
|
547
|
+
// what composition adds to the page; the build removes this whole block from a catalogue that composes none
|
|
548
|
+
let refSlots;
|
|
549
|
+
if (HAS_REFS) {
|
|
550
|
+
const refs = shellRefs();
|
|
551
|
+
shown = shownRef(tree, address.page, refs, shown);
|
|
552
|
+
refSlots = refSlotsOf(refs, refPlaceOf(shown), {
|
|
553
|
+
refStoryHref: (place) => addressQuery(pageAddress(refPageOf(place)), catalogue),
|
|
554
|
+
onOpenRefStory: (place) => openPage(refPageOf(place))
|
|
555
|
+
}, address.view.switches);
|
|
556
|
+
}
|
|
444
557
|
const location = componentLocationOf(shown);
|
|
445
558
|
const ownPage = recentPageOf(shown);
|
|
446
559
|
const recent = useRecentPages(ownPage);
|
|
@@ -463,16 +576,21 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
463
576
|
catalogueDevice: catalogue.device,
|
|
464
577
|
onAddressViewChange: changeView
|
|
465
578
|
});
|
|
466
|
-
|
|
579
|
+
const listedTree = useListedTree(tree, address.tags);
|
|
580
|
+
useStoryKeys(listedTree, shownStoryId, shown.kind === "component" ? shown.location.component.stories[0]?.id : undefined, (id) => openPage({ kind: "story", id }));
|
|
467
581
|
const source = sources.find((candidate) => candidate.id === location?.source.id);
|
|
468
582
|
const files = source === undefined ? undefined : sourceFiles(source);
|
|
469
583
|
const storyHrefOf = (story) => addressQuery(pageAddress(storyPage(story)), catalogue);
|
|
470
584
|
const columnHeightOf = (storyId) => knownHeight(storyHeights, storyId, drawnWidth(address.view.width, PAGE_COLUMN_WIDTH));
|
|
471
|
-
|
|
585
|
+
// the component's page puts its width's button in the header (`PageWidth.tsx`); until then, and on a story's page,
|
|
586
|
+
// an empty place of the button's size keeps the picker where it stays
|
|
587
|
+
const headerWith = (tools) => (_jsx(ShellHeader, { problems: problems, location: location, page: shownPageLocation, isLogic: isLogicPage(shown), message: shown.kind === "missing" ? shown.message : undefined, picker: location === undefined ? null : (_jsx(StoryPicker, { component: location.component, currentStoryId: shownStoryId, onOpenComponent: () => openPage(componentPage(location.component)), onOpenStory: (story) => openPage(storyPage(story)), children: tools })), related: _jsx(RelatedLinks, { related: relatedComponents(tree, location), hrefOf: (page) => addressQuery(pageAddress(page), catalogue), onOpen: openPage }) }));
|
|
588
|
+
const header = headerWith(_jsx("span", { className: "forgebook-page-width" }));
|
|
472
589
|
const homeProps = {
|
|
473
590
|
title,
|
|
474
591
|
tree,
|
|
475
592
|
sources,
|
|
593
|
+
storyGlobs,
|
|
476
594
|
recent,
|
|
477
595
|
hrefOf: (page) => addressQuery(pageAddress(page), catalogue),
|
|
478
596
|
onOpen: (page) => openPage(page),
|
|
@@ -496,9 +614,9 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
496
614
|
header,
|
|
497
615
|
scroll
|
|
498
616
|
};
|
|
499
|
-
return (_jsxs("div", { className: "catalogue", children: [_jsx(Sidebar, { width: sidebarWidth, isOpen: isSidebarOpen, isOverlay: isSidebarOverlay, sidebarRef: sidebarRef, hideButtonRef: hideButtonRef, onHide: hideSidebar, onShow: showSidebar, appearance: appearance, title: title, logo: logo, hasBranding: hasBranding !== false, tree: tree, sources: sources, searchHref: (target) => addressQuery(pageAddress(target), catalogue), onOpenResult: openFound, isHome: shown.kind === "home", homeHref: addressQuery(pageAddress(HOME), catalogue), onOpenHome: () => openPage(HOME), current: sidebarCurrent(location, shownStoryId), currentPageId: shownPageLocation?.page.id, pageHref: (id) => addressQuery(pageAddress({ kind: "page", id }), catalogue), onOpenPage: (id) => openPage({ kind: "page", id }), componentHref: (sourceId, componentTitle) => addressQuery(pageAddress(titledPage(idsByTitle, sourceId, componentTitle)), catalogue), onOpenComponent: (sourceId, componentTitle) => openPage(titledPage(idsByTitle, sourceId, componentTitle)) }), _jsx(
|
|
617
|
+
return (_jsxs("div", { className: "catalogue", children: [_jsx(Sidebar, { width: sidebarWidth, onWidthChange: setSidebarWidth, isOpen: isSidebarOpen, isOverlay: isSidebarOverlay, sidebarRef: sidebarRef, hideButtonRef: hideButtonRef, onHide: hideSidebar, onShow: showSidebar, appearance: appearance, onShowKeys: showHelp, title: title, logo: logo, hasBranding: hasBranding !== false, tree: listedTree, wholeTree: tree, tags: address.tags, onTagsChange: (tags) => replaceAddress({ ...address, tags }), sources: sources, searchHref: (target) => addressQuery(pageAddress(target), catalogue), onOpenResult: openFound, isHome: shown.kind === "home", homeHref: addressQuery(pageAddress(HOME), catalogue), onOpenHome: () => openPage(HOME), current: sidebarCurrent(location, shownStoryId), currentPageId: shownPageLocation?.page.id, pageHref: (id) => addressQuery(pageAddress({ kind: "page", id }), catalogue), onOpenPage: (id) => openPage({ kind: "page", id }), ...refSlots?.sidebar, componentHref: (sourceId, componentTitle) => addressQuery(pageAddress(titledPage(idsByTitle, sourceId, componentTitle)), catalogue), onOpenComponent: (sourceId, componentTitle) => openPage(titledPage(idsByTitle, sourceId, componentTitle)) }), help, _jsx(SidebarShade, { isOverlay: isSidebarOverlay, isOpen: isSidebarOpen, onHide: hideSidebar }), _jsxs("main", { className: "forgebook-main", inert: isSidebarOver, children: [_jsx(ShellBar, { isHome: hasNoStories(shown), view: shownView, onViewChange: changeShownView, isStoryPage: shown.kind === "story", isComponentPage: shown.kind === "component", isLogic: isLogicPage(shown),
|
|
500
618
|
// under a sidebar lying over the page the button stays, so the bar's controls never move behind it
|
|
501
|
-
onShowSidebar: isSidebarOpen && !isSidebarOver ? undefined : showSidebar, showSidebarRef: showButtonRef, shownWidth: shown.kind === "story" ? shownWidth : undefined, fixed: fixedOfShown(fixedViews, shown), deviceDefault: deviceOfShown(catalogue.device, shown) }), shown.kind === "component" ? (_jsx(LazyPage, { module: COMPONENT_PAGE, header: header, pageProps: {
|
|
619
|
+
onShowSidebar: isSidebarOpen && !isSidebarOver ? undefined : showSidebar, showSidebarRef: showButtonRef, shownWidth: shown.kind === "story" ? shownWidth : undefined, fixed: fixedOfShown(fixedViews, shown), deviceDefault: deviceOfShown(catalogue.device, shown), loadSwitchPreviews: loadSwitchPreviews }), shown.kind === "component" ? (_jsx(LazyPage, { module: COMPONENT_PAGE, header: header, pageProps: {
|
|
502
620
|
component: shown.location.component,
|
|
503
621
|
anchor: shown.anchor,
|
|
504
622
|
view: address.view,
|
|
@@ -510,7 +628,7 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
510
628
|
...componentLoaders(files, shown.location.component),
|
|
511
629
|
background: storyBackground(shown.location.source.background, address.view, catalogue, isSystemDark),
|
|
512
630
|
heightOf: columnHeightOf,
|
|
513
|
-
|
|
631
|
+
headerWith,
|
|
514
632
|
scroll,
|
|
515
633
|
usedIn: usedInLinks(source, catalogue.hasUsedIn, tree, {
|
|
516
634
|
hrefOf: (page) => addressQuery(pageAddress(page), catalogue),
|
|
@@ -528,7 +646,7 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
528
646
|
anchor: shown.anchor,
|
|
529
647
|
onOpenPage: (id) => openPage({ kind: "page", id }),
|
|
530
648
|
onOpenAnchor: openAnchor
|
|
531
|
-
} }, shown.location.page.id)) : null, shown.kind === "story" ? (_jsx(Stage, { component: shown.location.component, story: shown.location.story, view: shownView, onViewChange: changeShownView, onFixedChange: (storyId, fixed) => setFixedViews((current) => new Map(current).set(storyId, fixed)), panelArgs: address.panelArgs, onPanelArgsChange: (panelArgs) => replaceAddress({ ...address, panelArgs }), matrixAxes: address.matrix, onMatrixAxesChange: (matrix) => replaceAddress({ ...address, matrix }), frameUrl: frameUrl, plugins: plugins, ...storyLoaders(files, shown.location.story), namedValues: source?.namedValues, header: header, onShownWidthChange: setShownWidth, scroll: scroll, backgroundOf: (view) => storyBackground(shown.location.source.background, view, catalogue, isSystemDark), measuredHeight: stageHeight(storyHeights, shown.location.story.id, address.view.width, shownWidth) })) : null, shown.kind === "missing" ? header : null] })] }));
|
|
649
|
+
} }, shown.location.page.id)) : null, shown.kind === "story" ? (_jsx(Stage, { loadTokens: loadTokens, argControls: argControls, component: shown.location.component, story: shown.location.story, view: shownView, onViewChange: changeShownView, onFixedChange: (storyId, fixed) => setFixedViews((current) => new Map(current).set(storyId, fixed)), panelArgs: address.panelArgs, addressLink: address.link, onPanelArgsChange: (panelArgs) => replaceAddress({ ...address, panelArgs, link: undefined }), matrixAxes: address.matrix, onMatrixAxesChange: (matrix) => replaceAddress({ ...address, matrix }), frameUrl: frameUrl, plugins: plugins, ...storyLoaders(files, shown.location.story), namedValues: source?.namedValues, header: header, onShownWidthChange: setShownWidth, scroll: scroll, backgroundOf: (view) => storyBackground(shown.location.source.background, view, catalogue, isSystemDark), measuredHeight: stageHeight(storyHeights, shown.location.story.id, address.view.width, shownWidth) })) : null, refSlots?.page, shown.kind === "missing" ? header : null] })] }));
|
|
532
650
|
};
|
|
533
651
|
/**
|
|
534
652
|
* The catalogue's page: its settings computed once from the configuration (its switches, its languages' switch, its
|
|
@@ -536,4 +654,4 @@ const ShellPage = ({ title, logo, hasBranding, heights, sources, frameUrl, addre
|
|
|
536
654
|
*
|
|
537
655
|
* @param props - the configuration.
|
|
538
656
|
*/
|
|
539
|
-
export const Shell = (props) => (_jsx(CatalogueContext.Provider, { value: useConfiguredCatalogue(props), children: _jsx(PluginHostsContext.Provider, { value: props.pluginHosts, children: _jsx(ShellPage, { ...props }) }) }));
|
|
657
|
+
export const Shell = (props) => (_jsx(CatalogueContext.Provider, { value: useConfiguredCatalogue(props, readStored), children: _jsx(PluginHostsContext.Provider, { value: props.pluginHosts, children: _jsx(ShellPage, { ...props }) }) }));
|