forgebook 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +136 -2
- package/dist/bin/forgebook/catalogueVite.d.ts +16 -0
- package/dist/bin/forgebook/catalogueVite.d.ts.map +1 -0
- package/dist/bin/forgebook/catalogueVite.js +15 -0
- package/dist/bin/forgebook/catalogueVite.js.map +1 -0
- package/dist/bin/forgebook/forgebook.d.mts +3 -0
- package/dist/bin/forgebook/forgebook.d.mts.map +1 -0
- package/dist/bin/forgebook/forgebook.mjs +93 -0
- package/dist/bin/forgebook/forgebook.mjs.map +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts +90 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.js +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.js.map +1 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts +9 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +132 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js.map +1 -0
- package/dist/bin/forgebook-docs/collectDocs.d.ts +17 -0
- package/dist/bin/forgebook-docs/collectDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/collectDocs.js +115 -0
- package/dist/bin/forgebook-docs/collectDocs.js.map +1 -0
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts +3 -0
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts.map +1 -0
- package/dist/bin/forgebook-docs/forgebook-docs.mjs +115 -0
- package/dist/bin/forgebook-docs/forgebook-docs.mjs.map +1 -0
- package/dist/bin/forgebook-docs/moduleDocs.d.ts +9 -0
- package/dist/bin/forgebook-docs/moduleDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/moduleDocs.js +62 -0
- package/dist/bin/forgebook-docs/moduleDocs.js.map +1 -0
- package/dist/bin/forgebook-docs/sassDocs.d.ts +20 -0
- package/dist/bin/forgebook-docs/sassDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/sassDocs.js +77 -0
- package/dist/bin/forgebook-docs/sassDocs.js.map +1 -0
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts +3 -0
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts.map +1 -0
- package/dist/bin/forgebook-texts/forgebook-texts.mjs +94 -0
- package/dist/bin/forgebook-texts/forgebook-texts.mjs.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts +26 -0
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.js +35 -0
- package/dist/bin/forgebook-texts/storyTextsReport.js.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts +25 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.js +7 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.js.map +1 -0
- package/dist/src/a11y.d.ts +28 -0
- package/dist/src/a11y.d.ts.map +1 -0
- package/dist/src/a11y.js +29 -0
- package/dist/src/a11y.js.map +1 -0
- package/dist/src/argTypes.d.ts +114 -0
- package/dist/src/argTypes.d.ts.map +1 -0
- package/dist/src/argTypes.js +254 -0
- package/dist/src/argTypes.js.map +1 -0
- package/dist/src/backdrops.d.ts +88 -0
- package/dist/src/backdrops.d.ts.map +1 -0
- package/dist/src/backdrops.js +202 -0
- package/dist/src/backdrops.js.map +1 -0
- package/dist/src/catalogue.d.ts +120 -0
- package/dist/src/catalogue.d.ts.map +1 -0
- package/dist/src/catalogue.js +80 -0
- package/dist/src/catalogue.js.map +1 -0
- package/dist/src/componentDocs.d.ts +98 -0
- package/dist/src/componentDocs.d.ts.map +1 -0
- package/dist/src/componentDocs.js +47 -0
- package/dist/src/componentDocs.js.map +1 -0
- package/dist/src/frame/checkStory.d.ts +20 -0
- package/dist/src/frame/checkStory.d.ts.map +1 -0
- package/dist/src/frame/checkStory.js +31 -0
- package/dist/src/frame/checkStory.js.map +1 -0
- package/dist/src/frame/frame.css +51 -0
- package/dist/src/frame/frameClock.d.ts +53 -0
- package/dist/src/frame/frameClock.d.ts.map +1 -0
- package/dist/src/frame/frameClock.js +80 -0
- package/dist/src/frame/frameClock.js.map +1 -0
- package/dist/src/frame/frameStatus.d.ts +8 -0
- package/dist/src/frame/frameStatus.d.ts.map +1 -0
- package/dist/src/frame/frameStatus.js +8 -0
- package/dist/src/frame/frameStatus.js.map +1 -0
- package/dist/src/frame/frameView.d.ts +33 -0
- package/dist/src/frame/frameView.d.ts.map +1 -0
- package/dist/src/frame/frameView.js +134 -0
- package/dist/src/frame/frameView.js.map +1 -0
- package/dist/src/frame/matrixLayout.d.ts +36 -0
- package/dist/src/frame/matrixLayout.d.ts.map +1 -0
- package/dist/src/frame/matrixLayout.js +87 -0
- package/dist/src/frame/matrixLayout.js.map +1 -0
- package/dist/src/frame/measureTools.d.ts +24 -0
- package/dist/src/frame/measureTools.d.ts.map +1 -0
- package/dist/src/frame/measureTools.js +141 -0
- package/dist/src/frame/measureTools.js.map +1 -0
- package/dist/src/frame/mountFrame.d.ts +47 -0
- package/dist/src/frame/mountFrame.d.ts.map +1 -0
- package/dist/src/frame/mountFrame.js +229 -0
- package/dist/src/frame/mountFrame.js.map +1 -0
- package/dist/src/frame/playStory.d.ts +40 -0
- package/dist/src/frame/playStory.d.ts.map +1 -0
- package/dist/src/frame/playStory.js +55 -0
- package/dist/src/frame/playStory.js.map +1 -0
- package/dist/src/frame/renderer.d.ts +85 -0
- package/dist/src/frame/renderer.d.ts.map +1 -0
- package/dist/src/frame/renderer.js +18 -0
- package/dist/src/frame/renderer.js.map +1 -0
- package/dist/src/frame/settle.d.ts +24 -0
- package/dist/src/frame/settle.d.ts.map +1 -0
- package/dist/src/frame/settle.js +25 -0
- package/dist/src/frame/settle.js.map +1 -0
- package/dist/src/frame/staleModule.d.ts +40 -0
- package/dist/src/frame/staleModule.d.ts.map +1 -0
- package/dist/src/frame/staleModule.js +74 -0
- package/dist/src/frame/staleModule.js.map +1 -0
- package/dist/src/frame/storyCanvas.d.ts +21 -0
- package/dist/src/frame/storyCanvas.d.ts.map +1 -0
- package/dist/src/frame/storyCanvas.js +30 -0
- package/dist/src/frame/storyCanvas.js.map +1 -0
- package/dist/src/frame/storyHooks.d.ts +31 -0
- package/dist/src/frame/storyHooks.d.ts.map +1 -0
- package/dist/src/frame/storyHooks.js +59 -0
- package/dist/src/frame/storyHooks.js.map +1 -0
- package/dist/src/frame/storyModule.d.ts +104 -0
- package/dist/src/frame/storyModule.d.ts.map +1 -0
- package/dist/src/frame/storyModule.js +205 -0
- package/dist/src/frame/storyModule.js.map +1 -0
- package/dist/src/frame/storyRun.d.ts +96 -0
- package/dist/src/frame/storyRun.d.ts.map +1 -0
- package/dist/src/frame/storyRun.js +318 -0
- package/dist/src/frame/storyRun.js.map +1 -0
- package/dist/src/languages.d.ts +15 -0
- package/dist/src/languages.d.ts.map +1 -0
- package/dist/src/languages.js +8 -0
- package/dist/src/languages.js.map +1 -0
- package/dist/src/matrix.d.ts +56 -0
- package/dist/src/matrix.d.ts.map +1 -0
- package/dist/src/matrix.js +61 -0
- package/dist/src/matrix.js.map +1 -0
- package/dist/src/messages.d.ts +203 -0
- package/dist/src/messages.d.ts.map +1 -0
- package/dist/src/messages.js +193 -0
- package/dist/src/messages.js.map +1 -0
- package/dist/src/namedValues.d.ts +38 -0
- package/dist/src/namedValues.d.ts.map +1 -0
- package/dist/src/namedValues.js +48 -0
- package/dist/src/namedValues.js.map +1 -0
- package/dist/src/pageConfig.d.ts +23 -0
- package/dist/src/pageConfig.d.ts.map +1 -0
- package/dist/src/pageConfig.js +1 -0
- package/dist/src/pageConfig.js.map +1 -0
- package/dist/src/playTrace.d.ts +41 -0
- package/dist/src/playTrace.d.ts.map +1 -0
- package/dist/src/playTrace.js +35 -0
- package/dist/src/playTrace.js.map +1 -0
- package/dist/src/shell/A11yTab.d.ts +44 -0
- package/dist/src/shell/A11yTab.d.ts.map +1 -0
- package/dist/src/shell/A11yTab.js +30 -0
- package/dist/src/shell/A11yTab.js.map +1 -0
- package/dist/src/shell/ApiReference.d.ts +18 -0
- package/dist/src/shell/ApiReference.d.ts.map +1 -0
- package/dist/src/shell/ApiReference.js +41 -0
- package/dist/src/shell/ApiReference.js.map +1 -0
- package/dist/src/shell/ClockControls.d.ts +43 -0
- package/dist/src/shell/ClockControls.d.ts.map +1 -0
- package/dist/src/shell/ClockControls.js +53 -0
- package/dist/src/shell/ClockControls.js.map +1 -0
- package/dist/src/shell/Code.d.ts +16 -0
- package/dist/src/shell/Code.d.ts.map +1 -0
- package/dist/src/shell/Code.js +9 -0
- package/dist/src/shell/Code.js.map +1 -0
- package/dist/src/shell/CodeTab.d.ts +17 -0
- package/dist/src/shell/CodeTab.d.ts.map +1 -0
- package/dist/src/shell/CodeTab.js +17 -0
- package/dist/src/shell/CodeTab.js.map +1 -0
- package/dist/src/shell/CodeText.d.ts +16 -0
- package/dist/src/shell/CodeText.d.ts.map +1 -0
- package/dist/src/shell/CodeText.js +10 -0
- package/dist/src/shell/CodeText.js.map +1 -0
- package/dist/src/shell/ComponentPage.d.ts +38 -0
- package/dist/src/shell/ComponentPage.d.ts.map +1 -0
- package/dist/src/shell/ComponentPage.js +146 -0
- package/dist/src/shell/ComponentPage.js.map +1 -0
- package/dist/src/shell/Dock.d.ts +42 -0
- package/dist/src/shell/Dock.d.ts.map +1 -0
- package/dist/src/shell/Dock.js +90 -0
- package/dist/src/shell/Dock.js.map +1 -0
- package/dist/src/shell/EventsTab.d.ts +25 -0
- package/dist/src/shell/EventsTab.d.ts.map +1 -0
- package/dist/src/shell/EventsTab.js +26 -0
- package/dist/src/shell/EventsTab.js.map +1 -0
- package/dist/src/shell/FrameView.d.ts +49 -0
- package/dist/src/shell/FrameView.d.ts.map +1 -0
- package/dist/src/shell/FrameView.js +29 -0
- package/dist/src/shell/FrameView.js.map +1 -0
- package/dist/src/shell/HomePage.d.ts +39 -0
- package/dist/src/shell/HomePage.d.ts.map +1 -0
- package/dist/src/shell/HomePage.js +85 -0
- package/dist/src/shell/HomePage.js.map +1 -0
- package/dist/src/shell/InteractionsTab.d.ts +28 -0
- package/dist/src/shell/InteractionsTab.d.ts.map +1 -0
- package/dist/src/shell/InteractionsTab.js +17 -0
- package/dist/src/shell/InteractionsTab.js.map +1 -0
- package/dist/src/shell/MatrixPicker.d.ts +24 -0
- package/dist/src/shell/MatrixPicker.d.ts.map +1 -0
- package/dist/src/shell/MatrixPicker.js +29 -0
- package/dist/src/shell/MatrixPicker.js.map +1 -0
- package/dist/src/shell/PackageHtml.d.ts +17 -0
- package/dist/src/shell/PackageHtml.d.ts.map +1 -0
- package/dist/src/shell/PackageHtml.js +13 -0
- package/dist/src/shell/PackageHtml.js.map +1 -0
- package/dist/src/shell/PartsTab.d.ts +23 -0
- package/dist/src/shell/PartsTab.d.ts.map +1 -0
- package/dist/src/shell/PartsTab.js +23 -0
- package/dist/src/shell/PartsTab.js.map +1 -0
- package/dist/src/shell/PropFields.d.ts +31 -0
- package/dist/src/shell/PropFields.d.ts.map +1 -0
- package/dist/src/shell/PropFields.js +81 -0
- package/dist/src/shell/PropFields.js.map +1 -0
- package/dist/src/shell/PropsTab.d.ts +45 -0
- package/dist/src/shell/PropsTab.d.ts.map +1 -0
- package/dist/src/shell/PropsTab.js +81 -0
- package/dist/src/shell/PropsTab.js.map +1 -0
- package/dist/src/shell/SchemeSwitches.d.ts +24 -0
- package/dist/src/shell/SchemeSwitches.d.ts.map +1 -0
- package/dist/src/shell/SchemeSwitches.js +36 -0
- package/dist/src/shell/SchemeSwitches.js.map +1 -0
- package/dist/src/shell/Segmented.d.ts +41 -0
- package/dist/src/shell/Segmented.d.ts.map +1 -0
- package/dist/src/shell/Segmented.js +19 -0
- package/dist/src/shell/Segmented.js.map +1 -0
- package/dist/src/shell/Shell.d.ts +49 -0
- package/dist/src/shell/Shell.d.ts.map +1 -0
- package/dist/src/shell/Shell.js +279 -0
- package/dist/src/shell/Shell.js.map +1 -0
- package/dist/src/shell/Sidebar.d.ts +52 -0
- package/dist/src/shell/Sidebar.d.ts.map +1 -0
- package/dist/src/shell/Sidebar.js +132 -0
- package/dist/src/shell/Sidebar.js.map +1 -0
- package/dist/src/shell/SidebarHandle.d.ts +29 -0
- package/dist/src/shell/SidebarHandle.d.ts.map +1 -0
- package/dist/src/shell/SidebarHandle.js +46 -0
- package/dist/src/shell/SidebarHandle.js.map +1 -0
- package/dist/src/shell/Stage.d.ts +68 -0
- package/dist/src/shell/Stage.d.ts.map +1 -0
- package/dist/src/shell/Stage.js +218 -0
- package/dist/src/shell/Stage.js.map +1 -0
- package/dist/src/shell/StageTools.d.ts +27 -0
- package/dist/src/shell/StageTools.d.ts.map +1 -0
- package/dist/src/shell/StageTools.js +34 -0
- package/dist/src/shell/StageTools.js.map +1 -0
- package/dist/src/shell/StageViewport.d.ts +47 -0
- package/dist/src/shell/StageViewport.d.ts.map +1 -0
- package/dist/src/shell/StageViewport.js +174 -0
- package/dist/src/shell/StageViewport.js.map +1 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +35 -0
- package/dist/src/shell/StoryCodeBlock.d.ts.map +1 -0
- package/dist/src/shell/StoryCodeBlock.js +27 -0
- package/dist/src/shell/StoryCodeBlock.js.map +1 -0
- package/dist/src/shell/StoryPicker.d.ts +26 -0
- package/dist/src/shell/StoryPicker.d.ts.map +1 -0
- package/dist/src/shell/StoryPicker.js +32 -0
- package/dist/src/shell/StoryPicker.js.map +1 -0
- package/dist/src/shell/Toolbar.d.ts +40 -0
- package/dist/src/shell/Toolbar.d.ts.map +1 -0
- package/dist/src/shell/Toolbar.js +125 -0
- package/dist/src/shell/Toolbar.js.map +1 -0
- package/dist/src/shell/WidthField.d.ts +24 -0
- package/dist/src/shell/WidthField.d.ts.map +1 -0
- package/dist/src/shell/WidthField.js +40 -0
- package/dist/src/shell/WidthField.js.map +1 -0
- package/dist/src/shell/catalogueContext.d.ts +6 -0
- package/dist/src/shell/catalogueContext.d.ts.map +1 -0
- package/dist/src/shell/catalogueContext.js +14 -0
- package/dist/src/shell/catalogueContext.js.map +1 -0
- package/dist/src/shell/codeTokens.d.ts +23 -0
- package/dist/src/shell/codeTokens.d.ts.map +1 -0
- package/dist/src/shell/codeTokens.js +48 -0
- package/dist/src/shell/codeTokens.js.map +1 -0
- package/dist/src/shell/codeWriter.d.ts +6 -0
- package/dist/src/shell/codeWriter.d.ts.map +1 -0
- package/dist/src/shell/codeWriter.js +14 -0
- package/dist/src/shell/codeWriter.js.map +1 -0
- package/dist/src/shell/compareVariants.d.ts +35 -0
- package/dist/src/shell/compareVariants.d.ts.map +1 -0
- package/dist/src/shell/compareVariants.js +68 -0
- package/dist/src/shell/compareVariants.js.map +1 -0
- package/dist/src/shell/dockTabs.d.ts +63 -0
- package/dist/src/shell/dockTabs.d.ts.map +1 -0
- package/dist/src/shell/dockTabs.js +140 -0
- package/dist/src/shell/dockTabs.js.map +1 -0
- package/dist/src/shell/icons.d.ts +47 -0
- package/dist/src/shell/icons.d.ts.map +1 -0
- package/dist/src/shell/icons.js +36 -0
- package/dist/src/shell/icons.js.map +1 -0
- package/dist/src/shell/keyboard.d.ts +35 -0
- package/dist/src/shell/keyboard.d.ts.map +1 -0
- package/dist/src/shell/keyboard.js +51 -0
- package/dist/src/shell/keyboard.js.map +1 -0
- package/dist/src/shell/mountShell.d.ts +22 -0
- package/dist/src/shell/mountShell.d.ts.map +1 -0
- package/dist/src/shell/mountShell.js +39 -0
- package/dist/src/shell/mountShell.js.map +1 -0
- package/dist/src/shell/shell.css +1831 -0
- package/dist/src/shell/strings.d.ts +184 -0
- package/dist/src/shell/strings.d.ts.map +1 -0
- package/dist/src/shell/strings.js +188 -0
- package/dist/src/shell/strings.js.map +1 -0
- package/dist/src/shell/switchView.d.ts +23 -0
- package/dist/src/shell/switchView.d.ts.map +1 -0
- package/dist/src/shell/switchView.js +19 -0
- package/dist/src/shell/switchView.js.map +1 -0
- package/dist/src/shell/treeSearch.d.ts +35 -0
- package/dist/src/shell/treeSearch.d.ts.map +1 -0
- package/dist/src/shell/treeSearch.js +60 -0
- package/dist/src/shell/treeSearch.js.map +1 -0
- package/dist/src/shell/useComponentDocs.d.ts +16 -0
- package/dist/src/shell/useComponentDocs.d.ts.map +1 -0
- package/dist/src/shell/useComponentDocs.js +25 -0
- package/dist/src/shell/useComponentDocs.js.map +1 -0
- package/dist/src/shell/useCopy.d.ts +10 -0
- package/dist/src/shell/useCopy.d.ts.map +1 -0
- package/dist/src/shell/useCopy.js +23 -0
- package/dist/src/shell/useCopy.js.map +1 -0
- package/dist/src/shell/useFrameMessages.d.ts +54 -0
- package/dist/src/shell/useFrameMessages.d.ts.map +1 -0
- package/dist/src/shell/useFrameMessages.js +90 -0
- package/dist/src/shell/useFrameMessages.js.map +1 -0
- package/dist/src/shell/useFrameQueue.d.ts +29 -0
- package/dist/src/shell/useFrameQueue.d.ts.map +1 -0
- package/dist/src/shell/useFrameQueue.js +72 -0
- package/dist/src/shell/useFrameQueue.js.map +1 -0
- package/dist/src/shell/useLiveView.d.ts +29 -0
- package/dist/src/shell/useLiveView.d.ts.map +1 -0
- package/dist/src/shell/useLiveView.js +51 -0
- package/dist/src/shell/useLiveView.js.map +1 -0
- package/dist/src/shell/useLoaded.d.ts +20 -0
- package/dist/src/shell/useLoaded.d.ts.map +1 -0
- package/dist/src/shell/useLoaded.js +40 -0
- package/dist/src/shell/useLoaded.js.map +1 -0
- package/dist/src/shell/usePageDoc.d.ts +20 -0
- package/dist/src/shell/usePageDoc.d.ts.map +1 -0
- package/dist/src/shell/usePageDoc.js +21 -0
- package/dist/src/shell/usePageDoc.js.map +1 -0
- package/dist/src/shell/usePopover.d.ts +23 -0
- package/dist/src/shell/usePopover.d.ts.map +1 -0
- package/dist/src/shell/usePopover.js +39 -0
- package/dist/src/shell/usePopover.js.map +1 -0
- package/dist/src/shell/useRecentPages.d.ts +21 -0
- package/dist/src/shell/useRecentPages.d.ts.map +1 -0
- package/dist/src/shell/useRecentPages.js +62 -0
- package/dist/src/shell/useRecentPages.js.map +1 -0
- package/dist/src/shell/useScrollMemory.d.ts +40 -0
- package/dist/src/shell/useScrollMemory.d.ts.map +1 -0
- package/dist/src/shell/useScrollMemory.js +69 -0
- package/dist/src/shell/useScrollMemory.js.map +1 -0
- package/dist/src/shell/useSidebarLayout.d.ts +14 -0
- package/dist/src/shell/useSidebarLayout.d.ts.map +1 -0
- package/dist/src/shell/useSidebarLayout.js +19 -0
- package/dist/src/shell/useSidebarLayout.js.map +1 -0
- package/dist/src/shell/useStored.d.ts +11 -0
- package/dist/src/shell/useStored.d.ts.map +1 -0
- package/dist/src/shell/useStored.js +68 -0
- package/dist/src/shell/useStored.js.map +1 -0
- package/dist/src/shell/useStoryCode.d.ts +14 -0
- package/dist/src/shell/useStoryCode.d.ts.map +1 -0
- package/dist/src/shell/useStoryCode.js +29 -0
- package/dist/src/shell/useStoryCode.js.map +1 -0
- package/dist/src/shell/useStoryHeights.d.ts +9 -0
- package/dist/src/shell/useStoryHeights.d.ts.map +1 -0
- package/dist/src/shell/useStoryHeights.js +31 -0
- package/dist/src/shell/useStoryHeights.js.map +1 -0
- package/dist/src/shell/useStoryIdsElement.d.ts +7 -0
- package/dist/src/shell/useStoryIdsElement.d.ts.map +1 -0
- package/dist/src/shell/useStoryIdsElement.js +29 -0
- package/dist/src/shell/useStoryIdsElement.js.map +1 -0
- package/dist/src/shell/useStoryKeys.d.ts +11 -0
- package/dist/src/shell/useStoryKeys.d.ts.map +1 -0
- package/dist/src/shell/useStoryKeys.js +40 -0
- package/dist/src/shell/useStoryKeys.js.map +1 -0
- package/dist/src/shell/useSystemDark.d.ts +3 -0
- package/dist/src/shell/useSystemDark.d.ts.map +1 -0
- package/dist/src/shell/useSystemDark.js +19 -0
- package/dist/src/shell/useSystemDark.js.map +1 -0
- package/dist/src/sourceFiles.d.ts +18 -0
- package/dist/src/sourceFiles.d.ts.map +1 -0
- package/dist/src/sourceFiles.js +22 -0
- package/dist/src/sourceFiles.js.map +1 -0
- package/dist/src/storyBackground.d.ts +21 -0
- package/dist/src/storyBackground.d.ts.map +1 -0
- package/dist/src/storyBackground.js +27 -0
- package/dist/src/storyBackground.js.map +1 -0
- package/dist/src/storyClock.d.ts +62 -0
- package/dist/src/storyClock.d.ts.map +1 -0
- package/dist/src/storyClock.js +51 -0
- package/dist/src/storyClock.js.map +1 -0
- package/dist/src/storyGlobals.d.ts +60 -0
- package/dist/src/storyGlobals.d.ts.map +1 -0
- package/dist/src/storyGlobals.js +117 -0
- package/dist/src/storyGlobals.js.map +1 -0
- package/dist/src/storyHeights.d.ts +37 -0
- package/dist/src/storyHeights.d.ts.map +1 -0
- package/dist/src/storyHeights.js +53 -0
- package/dist/src/storyHeights.js.map +1 -0
- package/dist/src/storyIdsElement.d.ts +9 -0
- package/dist/src/storyIdsElement.d.ts.map +1 -0
- package/dist/src/storyIdsElement.js +9 -0
- package/dist/src/storyIdsElement.js.map +1 -0
- package/dist/src/storyTexts.d.ts +43 -0
- package/dist/src/storyTexts.d.ts.map +1 -0
- package/dist/src/storyTexts.js +71 -0
- package/dist/src/storyTexts.js.map +1 -0
- package/dist/src/storyTree.d.ts +215 -0
- package/dist/src/storyTree.d.ts.map +1 -0
- package/dist/src/storyTree.js +308 -0
- package/dist/src/storyTree.js.map +1 -0
- package/dist/src/switches.d.ts +156 -0
- package/dist/src/switches.d.ts.map +1 -0
- package/dist/src/switches.js +193 -0
- package/dist/src/switches.js.map +1 -0
- package/dist/src/viewState.d.ts +194 -0
- package/dist/src/viewState.d.ts.map +1 -0
- package/dist/src/viewState.js +303 -0
- package/dist/src/viewState.js.map +1 -0
- package/dist/src/vite/adapter.d.ts +70 -0
- package/dist/src/vite/adapter.d.ts.map +1 -0
- package/dist/src/vite/adapter.js +22 -0
- package/dist/src/vite/adapter.js.map +1 -0
- package/dist/src/vite/autoTitle.d.ts +28 -0
- package/dist/src/vite/autoTitle.d.ts.map +1 -0
- package/dist/src/vite/autoTitle.js +44 -0
- package/dist/src/vite/autoTitle.js.map +1 -0
- package/dist/src/vite/componentPage.d.ts +34 -0
- package/dist/src/vite/componentPage.d.ts.map +1 -0
- package/dist/src/vite/componentPage.js +94 -0
- package/dist/src/vite/componentPage.js.map +1 -0
- package/dist/src/vite/config.d.ts +72 -0
- package/dist/src/vite/config.d.ts.map +1 -0
- package/dist/src/vite/config.js +25 -0
- package/dist/src/vite/config.js.map +1 -0
- package/dist/src/vite/configFile.d.ts +76 -0
- package/dist/src/vite/configFile.d.ts.map +1 -0
- package/dist/src/vite/configFile.js +190 -0
- package/dist/src/vite/configFile.js.map +1 -0
- package/dist/src/vite/docsExtractor.d.ts +46 -0
- package/dist/src/vite/docsExtractor.d.ts.map +1 -0
- package/dist/src/vite/docsExtractor.js +88 -0
- package/dist/src/vite/docsExtractor.js.map +1 -0
- package/dist/src/vite/docsProgram.d.ts +42 -0
- package/dist/src/vite/docsProgram.d.ts.map +1 -0
- package/dist/src/vite/docsProgram.js +144 -0
- package/dist/src/vite/docsProgram.js.map +1 -0
- package/dist/src/vite/docsWorker.d.ts +2 -0
- package/dist/src/vite/docsWorker.d.ts.map +1 -0
- package/dist/src/vite/docsWorker.js +68 -0
- package/dist/src/vite/docsWorker.js.map +1 -0
- package/dist/src/vite/forcedStates.d.ts +27 -0
- package/dist/src/vite/forcedStates.d.ts.map +1 -0
- package/dist/src/vite/forcedStates.js +60 -0
- package/dist/src/vite/forcedStates.js.map +1 -0
- package/dist/src/vite/forgebookPlugin.d.ts +28 -0
- package/dist/src/vite/forgebookPlugin.d.ts.map +1 -0
- package/dist/src/vite/forgebookPlugin.js +375 -0
- package/dist/src/vite/forgebookPlugin.js.map +1 -0
- package/dist/src/vite/highlightCode.d.ts +16 -0
- package/dist/src/vite/highlightCode.d.ts.map +1 -0
- package/dist/src/vite/highlightCode.js +82 -0
- package/dist/src/vite/highlightCode.js.map +1 -0
- package/dist/src/vite/indexStoryFile.d.ts +35 -0
- package/dist/src/vite/indexStoryFile.d.ts.map +1 -0
- package/dist/src/vite/indexStoryFile.js +458 -0
- package/dist/src/vite/indexStoryFile.js.map +1 -0
- package/dist/src/vite/pages.d.ts +49 -0
- package/dist/src/vite/pages.d.ts.map +1 -0
- package/dist/src/vite/pages.js +171 -0
- package/dist/src/vite/pages.js.map +1 -0
- package/dist/src/vite/prebundled.d.ts +30 -0
- package/dist/src/vite/prebundled.d.ts.map +1 -0
- package/dist/src/vite/prebundled.js +81 -0
- package/dist/src/vite/prebundled.js.map +1 -0
- package/dist/src/vite/storyCode.d.ts +28 -0
- package/dist/src/vite/storyCode.d.ts.map +1 -0
- package/dist/src/vite/storyCode.js +80 -0
- package/dist/src/vite/storyCode.js.map +1 -0
- package/dist/src/vite/storyFilesModule.d.ts +17 -0
- package/dist/src/vite/storyFilesModule.d.ts.map +1 -0
- package/dist/src/vite/storyFilesModule.js +64 -0
- package/dist/src/vite/storyFilesModule.js.map +1 -0
- package/dist/src/vite/storyMeta.d.ts +34 -0
- package/dist/src/vite/storyMeta.d.ts.map +1 -0
- package/dist/src/vite/storyMeta.js +74 -0
- package/dist/src/vite/storyMeta.js.map +1 -0
- package/dist/src/vite/typeScriptPieces.d.ts +23 -0
- package/dist/src/vite/typeScriptPieces.d.ts.map +1 -0
- package/dist/src/vite/typeScriptPieces.js +236 -0
- package/dist/src/vite/typeScriptPieces.js.map +1 -0
- package/package.json +202 -3
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A loaded story file read safely: the module is code the catalogue did not type-check against its own types, so
|
|
3
|
+
* every part the frame uses is checked before use.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Objects, strings and lists are checked for their shape; a function's parameters cannot be checked at run time, so a
|
|
7
|
+
* function is taken with the signature CSF gives it (a render, a play function, a decorator). What a render and a
|
|
8
|
+
* decorator return is the framework's (`unknown` here); its renderer draws it. The meta's component is the framework's
|
|
9
|
+
* too: a function, or an object some frameworks make one of (React's `memo` and `forwardRef`), so the frame passes on
|
|
10
|
+
* whatever the meta names and the renderer reads it.
|
|
11
|
+
*
|
|
12
|
+
* A story is an object (CSF 3) or a function (CSF 2: the function is its render, its args and parameters are
|
|
13
|
+
* properties assigned to it). The meta may give the render and the play function every story without its own uses.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import { controlsOfParameter, mergedArgTypes } from "../argTypes.js";
|
|
18
|
+
/** Whether a value is a plain object. */
|
|
19
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
20
|
+
/**
|
|
21
|
+
* A story's fields: a CSF 3 story's object, or a CSF 2 story's function with the properties assigned to it.
|
|
22
|
+
*
|
|
23
|
+
* @param story - the named export.
|
|
24
|
+
*/
|
|
25
|
+
const storyFieldsOf = (story) => {
|
|
26
|
+
if (isRecord(story))
|
|
27
|
+
return story;
|
|
28
|
+
if (typeof story !== "function")
|
|
29
|
+
return undefined;
|
|
30
|
+
// a function story's properties are its own: `Primary.args = …` sets them on the function itself
|
|
31
|
+
const fields = { render: story };
|
|
32
|
+
for (const name of Object.keys(story))
|
|
33
|
+
fields[name] = Reflect.get(story, name);
|
|
34
|
+
return fields;
|
|
35
|
+
};
|
|
36
|
+
/** Whether a value can be called as a component, a render, a play function or a decorator. */
|
|
37
|
+
const isFunction = (value) => typeof value === "function";
|
|
38
|
+
/** An object's parameters, when it has some. */
|
|
39
|
+
const parametersOf = (part) => {
|
|
40
|
+
const parameters = part["parameters"];
|
|
41
|
+
return isRecord(parameters) ? parameters : {};
|
|
42
|
+
};
|
|
43
|
+
/** The forced states a parameter lists. */
|
|
44
|
+
const forcedStates = (value) => {
|
|
45
|
+
const states = Array.isArray(value) ? value : [value];
|
|
46
|
+
return states.filter((state) => state === "hover" ||
|
|
47
|
+
state === "active" ||
|
|
48
|
+
state === "focus" ||
|
|
49
|
+
state === "focus-visible" ||
|
|
50
|
+
state === "focus-within");
|
|
51
|
+
};
|
|
52
|
+
/** A replay parameter, when valid. */
|
|
53
|
+
const replayMode = (value) => {
|
|
54
|
+
if (value === "remount")
|
|
55
|
+
return value;
|
|
56
|
+
if (isRecord(value) && typeof value["toggle"] === "string") {
|
|
57
|
+
const hold = value["hold"];
|
|
58
|
+
return typeof hold === "number" && hold > 0
|
|
59
|
+
? { toggle: value["toggle"], hold }
|
|
60
|
+
: { toggle: value["toggle"] };
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
};
|
|
64
|
+
/** A clock parameter's start, when it names a valid instant. */
|
|
65
|
+
const clockStartOf = (value) => {
|
|
66
|
+
if (!isRecord(value) || typeof value["start"] !== "string")
|
|
67
|
+
return undefined;
|
|
68
|
+
const start = Date.parse(value["start"]);
|
|
69
|
+
return Number.isNaN(start) ? undefined : start;
|
|
70
|
+
};
|
|
71
|
+
/** The decorators of a part. */
|
|
72
|
+
const decoratorsOf = (part) => {
|
|
73
|
+
const decorators = part["decorators"];
|
|
74
|
+
return Array.isArray(decorators) ? decorators.filter((isFunction)) : [];
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* The functions a part writes under a name, one or a list (CSF's `loaders` and `beforeEach` take either).
|
|
78
|
+
*
|
|
79
|
+
* @param part - the meta, the story or the preview.
|
|
80
|
+
* @param name - the field.
|
|
81
|
+
*/
|
|
82
|
+
const functionsOf = (part, name) => {
|
|
83
|
+
const value = part[name];
|
|
84
|
+
const list = Array.isArray(value) ? value : [value];
|
|
85
|
+
return list.filter((isFunction));
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* A function the story names, or else the meta's.
|
|
89
|
+
*
|
|
90
|
+
* @param story - the story's fields.
|
|
91
|
+
* @param meta - the meta.
|
|
92
|
+
* @param name - the field (`render`, `play`).
|
|
93
|
+
*/
|
|
94
|
+
const ownOrMeta = (story, meta, name) => {
|
|
95
|
+
const own = story[name];
|
|
96
|
+
if (isFunction(own))
|
|
97
|
+
return own;
|
|
98
|
+
const fromMeta = meta[name];
|
|
99
|
+
return isFunction(fromMeta) ? fromMeta : undefined;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* The meta and one story of a loaded module, merged.
|
|
103
|
+
*
|
|
104
|
+
* @param module - the module, as `import()` gave it.
|
|
105
|
+
* @param exportName - the story's named export.
|
|
106
|
+
* @param preview - the catalogue's preview: its parameters under the meta's and the story's, its loaders and set-ups
|
|
107
|
+
* before theirs (its decorators are the renderer's to put outside); none by default.
|
|
108
|
+
* @returns what the frame renders, or why it cannot.
|
|
109
|
+
*/
|
|
110
|
+
export const readStory = (module, exportName, preview = NO_PREVIEW) => {
|
|
111
|
+
if (!isRecord(module))
|
|
112
|
+
return "The story file did not load as a module";
|
|
113
|
+
const meta = module["default"];
|
|
114
|
+
const story = storyFieldsOf(module[exportName]);
|
|
115
|
+
if (!isRecord(meta))
|
|
116
|
+
return "The story file has no meta (its default export)";
|
|
117
|
+
if (story === undefined)
|
|
118
|
+
return `The story file has no story "${exportName}"`;
|
|
119
|
+
const metaArgs = isRecord(meta["args"]) ? meta["args"] : {};
|
|
120
|
+
const storyArgs = isRecord(story["args"]) ? story["args"] : {};
|
|
121
|
+
const parameters = { ...preview.parameters, ...parametersOf(meta), ...parametersOf(story) };
|
|
122
|
+
const layout = parameters["layout"];
|
|
123
|
+
return {
|
|
124
|
+
component: meta["component"] ?? undefined,
|
|
125
|
+
args: { ...preview.args, ...metaArgs, ...storyArgs },
|
|
126
|
+
render: ownOrMeta(story, meta, "render"),
|
|
127
|
+
play: ownOrMeta(story, meta, "play"),
|
|
128
|
+
decorators: [...decoratorsOf(story), ...decoratorsOf(meta)],
|
|
129
|
+
loaders: [
|
|
130
|
+
...preview.loaders,
|
|
131
|
+
...functionsOf(meta, "loaders"),
|
|
132
|
+
...functionsOf(story, "loaders")
|
|
133
|
+
],
|
|
134
|
+
beforeEach: [
|
|
135
|
+
...preview.beforeEach,
|
|
136
|
+
...functionsOf(meta, "beforeEach"),
|
|
137
|
+
...functionsOf(story, "beforeEach")
|
|
138
|
+
],
|
|
139
|
+
forceState: forcedStates(parameters["forceState"]),
|
|
140
|
+
parameters,
|
|
141
|
+
replay: replayMode(parameters["replay"]),
|
|
142
|
+
controls: controlsOfParameter(parameters["controls"]),
|
|
143
|
+
argTypes: mergedArgTypes(mergedArgTypes(preview.argTypes, meta["argTypes"]), story["argTypes"]),
|
|
144
|
+
globals: {
|
|
145
|
+
...(isRecord(meta["globals"]) ? meta["globals"] : {}),
|
|
146
|
+
...(isRecord(story["globals"]) ? story["globals"] : {})
|
|
147
|
+
},
|
|
148
|
+
layout: layout === "centered" || layout === "fullscreen" ? layout : "padded",
|
|
149
|
+
clockStart: clockStartOf(parameters["clock"])
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
/** The preview of a catalogue that has none. */
|
|
153
|
+
export const NO_PREVIEW = {
|
|
154
|
+
decorators: [],
|
|
155
|
+
loaders: [],
|
|
156
|
+
beforeEach: [],
|
|
157
|
+
args: {},
|
|
158
|
+
argTypes: {},
|
|
159
|
+
parameters: {},
|
|
160
|
+
setup: undefined
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* A catalogue's preview read safely, as a story file is: from the default export of its module, or the module itself.
|
|
164
|
+
*
|
|
165
|
+
* @param module - the preview's module, as `import()` gave it; none for a catalogue without one.
|
|
166
|
+
*/
|
|
167
|
+
export const readPreview = (module) => {
|
|
168
|
+
if (!isRecord(module))
|
|
169
|
+
return NO_PREVIEW;
|
|
170
|
+
const preview = isRecord(module["default"]) ? module["default"] : module;
|
|
171
|
+
const setup = preview["setup"];
|
|
172
|
+
return {
|
|
173
|
+
decorators: decoratorsOf(preview),
|
|
174
|
+
loaders: functionsOf(preview, "loaders"),
|
|
175
|
+
beforeEach: functionsOf(preview, "beforeEach"),
|
|
176
|
+
args: isRecord(preview["args"]) ? preview["args"] : {},
|
|
177
|
+
argTypes: isRecord(preview["argTypes"]) ? preview["argTypes"] : {},
|
|
178
|
+
parameters: parametersOf(preview),
|
|
179
|
+
setup: isFunction(setup) ? setup : undefined
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Previews read one after another, as a catalogue's presets and its own: decorators of the later ones outside the
|
|
184
|
+
* earlier ones', parameters of the later ones over the earlier ones', every setup, loader and set-up in order.
|
|
185
|
+
*
|
|
186
|
+
* @param previews - the previews, the catalogue's own last.
|
|
187
|
+
*/
|
|
188
|
+
export const mergedPreviews = (previews) => {
|
|
189
|
+
const setups = previews.flatMap((preview) => (preview.setup === undefined ? [] : [preview.setup]));
|
|
190
|
+
return {
|
|
191
|
+
decorators: previews.flatMap((preview) => preview.decorators),
|
|
192
|
+
loaders: previews.flatMap((preview) => preview.loaders),
|
|
193
|
+
beforeEach: previews.flatMap((preview) => preview.beforeEach),
|
|
194
|
+
args: Object.assign({}, ...previews.map((preview) => preview.args)),
|
|
195
|
+
argTypes: previews.reduce((merged, preview) => mergedArgTypes(merged, preview.argTypes), {}),
|
|
196
|
+
parameters: Object.fromEntries(previews.flatMap((preview) => Object.entries(preview.parameters))),
|
|
197
|
+
setup: setups.length === 0
|
|
198
|
+
? undefined
|
|
199
|
+
: async () => {
|
|
200
|
+
for (const setup of setups)
|
|
201
|
+
await setup();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=storyModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storyModule.js","sourceRoot":"","sources":["../../../src/frame/storyModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One story run in its frame, whatever framework draws it: the args (the story's, the panel's, the texts named by key,
|
|
3
|
+
* the recorded events), the play function, Replay, the matrix, the story clock a Live story reads (D-504) and the
|
|
4
|
+
* error shown in place of a story that throws.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The framework only draws (`renderer.ts`); everything a story does over time is here, so each framework behaves the
|
|
8
|
+
* same. The play function runs once per mount, like a test, not on every change of the args, and reads the args of
|
|
9
|
+
* the moment it runs. Every mount runs the story's loaders and set-ups first (`storyHooks.ts`), after the cleanups of
|
|
10
|
+
* the mount before.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { type StoryTextTable } from "@forgebook/story-format/texts";
|
|
15
|
+
import type { Matrix } from "../matrix.ts";
|
|
16
|
+
import type { PanelArgs } from "../messages.ts";
|
|
17
|
+
import type { PlayTrace } from "../playTrace.ts";
|
|
18
|
+
import type { ClockState } from "../storyClock.ts";
|
|
19
|
+
import type { FrameClock } from "./frameClock.ts";
|
|
20
|
+
import { type PlayToolsLoader } from "./playStory.ts";
|
|
21
|
+
import type { StoryDrawing, StoryIdentity, StoryRenderer } from "./renderer.ts";
|
|
22
|
+
import type { LoadedStory } from "./storyModule.ts";
|
|
23
|
+
/** What the shell can do to a running story. */
|
|
24
|
+
export type StoryControls = {
|
|
25
|
+
/** Replays the story, as it declares. */
|
|
26
|
+
readonly replay: () => Promise<void>;
|
|
27
|
+
/** Sets the props panel's values over the story's own args. */
|
|
28
|
+
readonly setPanelArgs: (args: PanelArgs) => void;
|
|
29
|
+
/** Records the calls of these events. */
|
|
30
|
+
readonly setEvents: (names: readonly string[]) => void;
|
|
31
|
+
/** Draws the story once per value of the matrix's axes; none draws it alone. */
|
|
32
|
+
readonly setMatrix: (matrix: Matrix | undefined) => void;
|
|
33
|
+
/** Mounts the story again, so its play function runs again. */
|
|
34
|
+
readonly playAgain: () => void;
|
|
35
|
+
/** Sets whether the story clock runs, and how fast. */
|
|
36
|
+
readonly setClock: (state: ClockState) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Brings the story clock back to its start and mounts the story again, so its own state starts over too and its
|
|
39
|
+
* play function runs again (D-629).
|
|
40
|
+
*/
|
|
41
|
+
readonly restartClock: () => void;
|
|
42
|
+
};
|
|
43
|
+
/** What a story run needs. */
|
|
44
|
+
export type StoryRunOptions = {
|
|
45
|
+
/** The element the story, its matrix or its error are drawn in. */
|
|
46
|
+
readonly container: HTMLElement;
|
|
47
|
+
/** The story. */
|
|
48
|
+
readonly story: LoadedStory;
|
|
49
|
+
/** Which story it is: its context's id, name and title. */
|
|
50
|
+
readonly identity: StoryIdentity;
|
|
51
|
+
/** Loads the play tools the project installed, for the first play; none without them. */
|
|
52
|
+
readonly playTools?: PlayToolsLoader;
|
|
53
|
+
/** The framework that draws it. */
|
|
54
|
+
readonly renderer: StoryRenderer;
|
|
55
|
+
/** The story clock the story reads: running from its start for a Live story, held otherwise. */
|
|
56
|
+
readonly clock: FrameClock;
|
|
57
|
+
/** The texts inside the stories in the shown language. */
|
|
58
|
+
readonly texts: StoryTextTable;
|
|
59
|
+
/** The catalogue's decorators, outside the story's own. */
|
|
60
|
+
readonly decorators: StoryDrawing["decorators"];
|
|
61
|
+
/** The values of the switches applied by code, by id. */
|
|
62
|
+
readonly globals: StoryDrawing["globals"];
|
|
63
|
+
/** The panel's values as the story takes them (a named value turned back into the value). */
|
|
64
|
+
readonly resolveArgs: (args: PanelArgs) => Readonly<Record<string, unknown>>;
|
|
65
|
+
/**
|
|
66
|
+
* Called once with the controls, when the story is first drawn and its play function is over (the frame's ready
|
|
67
|
+
* status waits for it, so no check reads a half-played story).
|
|
68
|
+
*/
|
|
69
|
+
readonly onControlsReady: (controls: StoryControls) => void;
|
|
70
|
+
/** Called on every call of a recorded event, with its arguments. */
|
|
71
|
+
readonly onEvent: (name: string, values: readonly unknown[]) => void;
|
|
72
|
+
/** Called with the message when the story throws while it is drawn; the frame shows the error instead. */
|
|
73
|
+
readonly onError: (message: string) => void;
|
|
74
|
+
/** Called with the play function's trace after every change. */
|
|
75
|
+
readonly onTrace: (trace: PlayTrace) => void;
|
|
76
|
+
};
|
|
77
|
+
/** What the frame changes in a running story when the shell sends a new view: no new mount, the story keeps its state. */
|
|
78
|
+
export type RunningStory = {
|
|
79
|
+
/** Takes the story away and runs its set-ups' cleanups: the frame's page is being left. */
|
|
80
|
+
readonly leave: () => void;
|
|
81
|
+
/**
|
|
82
|
+
* Draws the story in another language, or with other values of the switches applied by code (the language's
|
|
83
|
+
* provider reads its id among them).
|
|
84
|
+
*
|
|
85
|
+
* @param shown - the texts of the language now shown, and the switches' values.
|
|
86
|
+
*/
|
|
87
|
+
readonly setShown: (shown: Pick<StoryDrawing, "texts" | "globals">) => void;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Runs a story in its container.
|
|
91
|
+
*
|
|
92
|
+
* @param options - the story, its framework, its clock, texts and language, and what to tell the shell.
|
|
93
|
+
* @returns what the frame can change while it runs.
|
|
94
|
+
*/
|
|
95
|
+
export declare const runStory: (options: StoryRunOptions) => RunningStory;
|
|
96
|
+
//# sourceMappingURL=storyRun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storyRun.d.ts","sourceRoot":"","sources":["../../../src/frame/storyRun.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One story run in its frame, whatever framework draws it: the args (the story's, the panel's, the texts named by key,
|
|
3
|
+
* the recorded events), the play function, Replay, the matrix, the story clock a Live story reads (D-504) and the
|
|
4
|
+
* error shown in place of a story that throws.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The framework only draws (`renderer.ts`); everything a story does over time is here, so each framework behaves the
|
|
8
|
+
* same. The play function runs once per mount, like a test, not on every change of the args, and reads the args of
|
|
9
|
+
* the moment it runs. Every mount runs the story's loaders and set-ups first (`storyHooks.ts`), after the cleanups of
|
|
10
|
+
* the mount before.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import { storyTextOf } from "@forgebook/story-format/texts";
|
|
15
|
+
import { actionNames, mappedArgs } from "../argTypes.js";
|
|
16
|
+
import { withStoryTexts } from "../storyTexts.js";
|
|
17
|
+
import { matrixLayout } from "./matrixLayout.js";
|
|
18
|
+
import { playStory } from "./playStory.js";
|
|
19
|
+
import { animationsSettled } from "./settle.js";
|
|
20
|
+
import { storyCanvas } from "./storyCanvas.js";
|
|
21
|
+
import { prepareStory } from "./storyHooks.js";
|
|
22
|
+
/**
|
|
23
|
+
* The error shown in place of a story that threw: its message and its stack.
|
|
24
|
+
*
|
|
25
|
+
* @param document - the frame's document.
|
|
26
|
+
* @param error - the error.
|
|
27
|
+
*/
|
|
28
|
+
const errorElement = (document, error) => {
|
|
29
|
+
const box = document.createElement("div");
|
|
30
|
+
box.className = "forgebook-frame-error";
|
|
31
|
+
box.setAttribute("role", "alert");
|
|
32
|
+
const message = document.createElement("p");
|
|
33
|
+
message.className = "forgebook-frame-error__message";
|
|
34
|
+
message.textContent = error.message;
|
|
35
|
+
box.append(message);
|
|
36
|
+
if (error.stack !== undefined) {
|
|
37
|
+
const stack = document.createElement("pre");
|
|
38
|
+
stack.className = "forgebook-frame-error__stack";
|
|
39
|
+
stack.textContent = error.stack;
|
|
40
|
+
box.append(stack);
|
|
41
|
+
}
|
|
42
|
+
return box;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Whether an arg is a handler the frame can wrap: a function, taken with the signature an event's handler has.
|
|
46
|
+
*
|
|
47
|
+
* @param value - the arg.
|
|
48
|
+
*/
|
|
49
|
+
const isHandler = (value) => typeof value === "function";
|
|
50
|
+
/**
|
|
51
|
+
* Clears the calls of the spies among a story's args, as Storybook does before it draws a story: each mount's play
|
|
52
|
+
* counts its own calls.
|
|
53
|
+
*
|
|
54
|
+
* @param args - the story's args.
|
|
55
|
+
*/
|
|
56
|
+
const clearSpies = (args) => {
|
|
57
|
+
for (const value of Object.values(args)) {
|
|
58
|
+
const clear = typeof value === "function" ? Reflect.get(value, "mockClear") : undefined;
|
|
59
|
+
if (typeof clear === "function")
|
|
60
|
+
Reflect.apply(clear, value, []);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
/** A story before its loaders ran, or after its set-ups were undone: nothing loaded, nothing to undo. */
|
|
64
|
+
const NOT_PREPARED = { loaded: {}, cleanup: async () => undefined };
|
|
65
|
+
/**
|
|
66
|
+
* Runs a story in its container.
|
|
67
|
+
*
|
|
68
|
+
* @param options - the story, its framework, its clock, texts and language, and what to tell the shell.
|
|
69
|
+
* @returns what the frame can change while it runs.
|
|
70
|
+
*/
|
|
71
|
+
export const runStory = (options) => {
|
|
72
|
+
const { container, story, renderer, clock } = options;
|
|
73
|
+
const document = container.ownerDocument;
|
|
74
|
+
const { decorators } = options;
|
|
75
|
+
let { texts, globals } = options;
|
|
76
|
+
let text = storyTextOf(texts);
|
|
77
|
+
let args = story.args;
|
|
78
|
+
let eventNames = [];
|
|
79
|
+
let matrix;
|
|
80
|
+
let mounted = [];
|
|
81
|
+
let shownError;
|
|
82
|
+
let mountCount = 0;
|
|
83
|
+
let hasPlayed = false;
|
|
84
|
+
let prepared = NOT_PREPARED;
|
|
85
|
+
// the story's actions are recorded whatever the shell names: a spy, an `argTypes` action
|
|
86
|
+
const actions = actionNames(story.args, story.argTypes);
|
|
87
|
+
// every recorded event reports its calls, then runs the story's own handler when it has one; the handler is
|
|
88
|
+
// wrapped, not replaced, so a spy stays one (`expect(args.onPress).toHaveBeenCalled()` reads its calls)
|
|
89
|
+
const recorded = () => Object.fromEntries([...new Set([...eventNames, ...actions])].map((name) => {
|
|
90
|
+
const own = args[name];
|
|
91
|
+
const report = (values) => options.onEvent(name, values);
|
|
92
|
+
if (!isHandler(own)) {
|
|
93
|
+
return [
|
|
94
|
+
name,
|
|
95
|
+
(...values) => {
|
|
96
|
+
report(values);
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
return [
|
|
102
|
+
name,
|
|
103
|
+
new Proxy(own, {
|
|
104
|
+
apply: (target, thisArg, values) => {
|
|
105
|
+
report(values);
|
|
106
|
+
return Reflect.apply(target, thisArg, values);
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
];
|
|
110
|
+
}));
|
|
111
|
+
// an arg written `storyText("key")` reaches the story as the text of the shown language
|
|
112
|
+
// an arg holding a key of its `mapping` reaches the story as the value the key stands for
|
|
113
|
+
const shownArgs = () => ({
|
|
114
|
+
...withStoryTexts(mappedArgs(args, story.argTypes), text),
|
|
115
|
+
...recorded()
|
|
116
|
+
});
|
|
117
|
+
const drawing = (values) => ({
|
|
118
|
+
identity: options.identity,
|
|
119
|
+
story,
|
|
120
|
+
args: { ...shownArgs(), ...values },
|
|
121
|
+
texts,
|
|
122
|
+
clock,
|
|
123
|
+
decorators,
|
|
124
|
+
globals,
|
|
125
|
+
loaded: prepared.loaded
|
|
126
|
+
});
|
|
127
|
+
const clearError = () => {
|
|
128
|
+
shownError?.remove();
|
|
129
|
+
shownError = undefined;
|
|
130
|
+
for (const child of container.children)
|
|
131
|
+
if (child instanceof HTMLElement)
|
|
132
|
+
child.hidden = false;
|
|
133
|
+
};
|
|
134
|
+
const showError = (error) => {
|
|
135
|
+
shownError?.remove();
|
|
136
|
+
for (const child of container.children)
|
|
137
|
+
if (child instanceof HTMLElement)
|
|
138
|
+
child.hidden = true;
|
|
139
|
+
shownError = errorElement(document, error);
|
|
140
|
+
container.append(shownError);
|
|
141
|
+
options.onError(error.message);
|
|
142
|
+
};
|
|
143
|
+
const unmountAll = () => {
|
|
144
|
+
for (const { story: each } of mounted)
|
|
145
|
+
each.unmount();
|
|
146
|
+
mounted = [];
|
|
147
|
+
clearError();
|
|
148
|
+
container.replaceChildren();
|
|
149
|
+
};
|
|
150
|
+
const controls = {
|
|
151
|
+
replay: async () => {
|
|
152
|
+
const mode = story.replay;
|
|
153
|
+
if (mode === undefined)
|
|
154
|
+
return;
|
|
155
|
+
if (mode === "remount") {
|
|
156
|
+
mountStory();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// an exit and an entrance: the arg goes false, the exit plays to its end, it stays false for the hold, then it
|
|
160
|
+
// comes back
|
|
161
|
+
args = { ...args, [mode.toggle]: false };
|
|
162
|
+
redraw();
|
|
163
|
+
await animationsSettled(document);
|
|
164
|
+
if (mode.hold !== undefined)
|
|
165
|
+
await new Promise((resolve) => window.setTimeout(resolve, mode.hold));
|
|
166
|
+
args = { ...args, [mode.toggle]: true };
|
|
167
|
+
redraw();
|
|
168
|
+
},
|
|
169
|
+
setPanelArgs: (panelArgs) => {
|
|
170
|
+
args = { ...story.args, ...options.resolveArgs(panelArgs) };
|
|
171
|
+
redraw();
|
|
172
|
+
},
|
|
173
|
+
setEvents: (names) => {
|
|
174
|
+
eventNames = names;
|
|
175
|
+
redraw();
|
|
176
|
+
},
|
|
177
|
+
// the shell sends the matrix when the story is ready: the same one again must not mount the story anew (its play
|
|
178
|
+
// would run twice)
|
|
179
|
+
setMatrix: (next) => {
|
|
180
|
+
if (JSON.stringify(next) === JSON.stringify(matrix))
|
|
181
|
+
return;
|
|
182
|
+
matrix = next;
|
|
183
|
+
mountStory();
|
|
184
|
+
},
|
|
185
|
+
playAgain: () => mountStory(),
|
|
186
|
+
setClock: clock.setState,
|
|
187
|
+
restartClock: () => {
|
|
188
|
+
clock.restart();
|
|
189
|
+
mountStory();
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
// new args (the panel, Replay, the events) draw the story again: a value that made it throw can be changed back
|
|
193
|
+
const redraw = () => {
|
|
194
|
+
clearError();
|
|
195
|
+
for (const { story: each, values } of mounted)
|
|
196
|
+
each.update(drawing(values));
|
|
197
|
+
};
|
|
198
|
+
const mountMatrix = (axes) => {
|
|
199
|
+
const layout = matrixLayout(document, story, axes);
|
|
200
|
+
container.append(layout.element);
|
|
201
|
+
mounted = layout.cells.map((cell) => ({
|
|
202
|
+
story: renderer.mount(cell.canvas, drawing(cell.values), showError),
|
|
203
|
+
values: cell.values
|
|
204
|
+
}));
|
|
205
|
+
};
|
|
206
|
+
const mountAlone = () => {
|
|
207
|
+
const count = mountCount;
|
|
208
|
+
const canvas = storyCanvas(document, story);
|
|
209
|
+
container.append(canvas);
|
|
210
|
+
const alone = renderer.mount(canvas, drawing({}), showError);
|
|
211
|
+
mounted = [{ story: alone, values: {} }];
|
|
212
|
+
void alone.drawn.then(async () => {
|
|
213
|
+
// a later mount (Replay, the matrix) replaced this one before it was drawn: its play would drive a gone story
|
|
214
|
+
if (count !== mountCount)
|
|
215
|
+
return;
|
|
216
|
+
const tools = await playTools();
|
|
217
|
+
if (count !== mountCount || tools instanceof Error)
|
|
218
|
+
return;
|
|
219
|
+
// a failed play still ends the wait; its rejection reaches the page as an error the tests record
|
|
220
|
+
void playStory(story.play, {
|
|
221
|
+
...options.identity,
|
|
222
|
+
args: shownArgs(),
|
|
223
|
+
canvasElement: canvas,
|
|
224
|
+
text,
|
|
225
|
+
clock,
|
|
226
|
+
globals,
|
|
227
|
+
loaded: prepared.loaded,
|
|
228
|
+
parameters: story.parameters
|
|
229
|
+
}, () => {
|
|
230
|
+
if (hasPlayed)
|
|
231
|
+
return;
|
|
232
|
+
hasPlayed = true;
|
|
233
|
+
options.onControlsReady(controls);
|
|
234
|
+
}, options.onTrace, tools);
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
// the play tools the project installed, loaded for a story with a play; a failure to load them is shown as the
|
|
238
|
+
// story's error
|
|
239
|
+
const playTools = async () => {
|
|
240
|
+
if (story.play === undefined)
|
|
241
|
+
return undefined;
|
|
242
|
+
try {
|
|
243
|
+
return await options.playTools?.();
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
const failure = error instanceof Error ? error : new Error(String(error));
|
|
247
|
+
showError(failure);
|
|
248
|
+
return failure;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
// the set-ups of the mount before undone, then the story's loaders and set-ups: whether this mount is still the last
|
|
252
|
+
// one, and may draw
|
|
253
|
+
const prepareMount = async (count) => {
|
|
254
|
+
clearSpies(story.args);
|
|
255
|
+
// taken before waiting: a mount that starts meanwhile must not undo the same set-ups again
|
|
256
|
+
const previous = prepared;
|
|
257
|
+
prepared = NOT_PREPARED;
|
|
258
|
+
try {
|
|
259
|
+
await previous.cleanup();
|
|
260
|
+
const next = await prepareStory(story, {
|
|
261
|
+
...options.identity,
|
|
262
|
+
args: shownArgs(),
|
|
263
|
+
text,
|
|
264
|
+
clock,
|
|
265
|
+
globals,
|
|
266
|
+
parameters: story.parameters
|
|
267
|
+
});
|
|
268
|
+
// a later mount started while this one loaded: its set-ups are undone, the later one draws
|
|
269
|
+
if (count !== mountCount) {
|
|
270
|
+
await next.cleanup();
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
prepared = next;
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
if (count === mountCount)
|
|
278
|
+
showError(error instanceof Error ? error : new Error(String(error)));
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
// a new mount draws the story from scratch: its loaders and set-ups run again, its own state starts over and its
|
|
283
|
+
// play function runs again
|
|
284
|
+
const mountStory = () => {
|
|
285
|
+
unmountAll();
|
|
286
|
+
mountCount += 1;
|
|
287
|
+
void prepareMount(mountCount).then((isLast) => {
|
|
288
|
+
if (!isLast)
|
|
289
|
+
return;
|
|
290
|
+
// a framework may throw while it starts drawing, before its own error capture is in place: shown as any error
|
|
291
|
+
try {
|
|
292
|
+
if (matrix === undefined)
|
|
293
|
+
mountAlone();
|
|
294
|
+
else
|
|
295
|
+
mountMatrix(matrix);
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
showError(error instanceof Error ? error : new Error(String(error)));
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
mountStory();
|
|
303
|
+
return {
|
|
304
|
+
leave: () => {
|
|
305
|
+
mountCount += 1;
|
|
306
|
+
unmountAll();
|
|
307
|
+
const previous = prepared;
|
|
308
|
+
prepared = NOT_PREPARED;
|
|
309
|
+
void previous.cleanup();
|
|
310
|
+
},
|
|
311
|
+
setShown: (shown) => {
|
|
312
|
+
({ texts, globals } = shown);
|
|
313
|
+
text = storyTextOf(texts);
|
|
314
|
+
redraw();
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
//# sourceMappingURL=storyRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storyRun.js","sourceRoot":"","sources":["../../../src/frame/storyRun.ts"],"names":[],"mappings":"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"}
|