From fae35d32e6a4b561ecd8fb0b0a38806c3e37771f Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Tue, 31 May 2022 15:23:45 +1000 Subject: [PATCH] More updates in preview-web --- lib/preview-web/src/Preview.tsx | 33 ++++++++----- lib/preview-web/src/PreviewWeb.mockdata.ts | 21 +++++--- lib/preview-web/src/PreviewWeb.test.ts | 2 +- lib/preview-web/src/PreviewWeb.tsx | 57 ++++++++++++++-------- 4 files changed, 74 insertions(+), 39 deletions(-) diff --git a/lib/preview-web/src/Preview.tsx b/lib/preview-web/src/Preview.tsx index ab3f4be91186..2eae90f861bf 100644 --- a/lib/preview-web/src/Preview.tsx +++ b/lib/preview-web/src/Preview.tsx @@ -1,7 +1,18 @@ import dedent from 'ts-dedent'; import global from 'global'; import { SynchronousPromise } from 'synchronous-promise'; -import Events from '@storybook/core-events'; +import { + CONFIG_ERROR, + FORCE_REMOUNT, + FORCE_RE_RENDER, + GLOBALS_UPDATED, + RESET_STORY_ARGS, + SET_GLOBALS, + STORY_ARGS_UPDATED, + STORY_INDEX_INVALIDATED, + UPDATE_GLOBALS, + UPDATE_STORY_ARGS, +} from '@storybook/core-events'; import { logger } from '@storybook/client-logger'; import { addons, Channel } from '@storybook/addons'; import { AnyFramework, StoryId, ProjectAnnotations, Args, Globals } from '@storybook/csf'; @@ -80,13 +91,13 @@ export class Preview { } setupListeners() { - this.serverChannel?.on(Events.STORY_INDEX_INVALIDATED, this.onStoryIndexChanged.bind(this)); + this.serverChannel?.on(STORY_INDEX_INVALIDATED, this.onStoryIndexChanged.bind(this)); - this.channel.on(Events.UPDATE_GLOBALS, this.onUpdateGlobals.bind(this)); - this.channel.on(Events.UPDATE_STORY_ARGS, this.onUpdateArgs.bind(this)); - this.channel.on(Events.RESET_STORY_ARGS, this.onResetArgs.bind(this)); - this.channel.on(Events.FORCE_RE_RENDER, this.onForceReRender.bind(this)); - this.channel.on(Events.FORCE_REMOUNT, this.onForceRemount.bind(this)); + this.channel.on(UPDATE_GLOBALS, this.onUpdateGlobals.bind(this)); + this.channel.on(UPDATE_STORY_ARGS, this.onUpdateArgs.bind(this)); + this.channel.on(RESET_STORY_ARGS, this.onResetArgs.bind(this)); + this.channel.on(FORCE_RE_RENDER, this.onForceReRender.bind(this)); + this.channel.on(FORCE_REMOUNT, this.onForceRemount.bind(this)); } getProjectAnnotationsOrRenderError( @@ -144,7 +155,7 @@ export class Preview { } emitGlobals() { - this.channel.emit(Events.SET_GLOBALS, { + this.channel.emit(SET_GLOBALS, { globals: this.storyStore.globals.get() || {}, globalTypes: this.storyStore.projectAnnotations.globalTypes || {}, }); @@ -227,7 +238,7 @@ export class Preview { await Promise.all(this.storyRenders.map((r) => r.rerender())); - this.channel.emit(Events.GLOBALS_UPDATED, { + this.channel.emit(GLOBALS_UPDATED, { globals: this.storyStore.globals.get(), initialGlobals: this.storyStore.globals.initialGlobals, }); @@ -238,7 +249,7 @@ export class Preview { await Promise.all(this.storyRenders.filter((r) => r.id === storyId).map((r) => r.rerender())); - this.channel.emit(Events.STORY_ARGS_UPDATED, { + this.channel.emit(STORY_ARGS_UPDATED, { storyId, args: this.storyStore.args.get(storyId), }); @@ -344,6 +355,6 @@ export class Preview { this.previewEntryError = err; logger.error(reason); logger.error(err); - this.channel.emit(Events.CONFIG_ERROR, err); + this.channel.emit(CONFIG_ERROR, err); } } diff --git a/lib/preview-web/src/PreviewWeb.mockdata.ts b/lib/preview-web/src/PreviewWeb.mockdata.ts index d33563686c1c..ae2eadf8c707 100644 --- a/lib/preview-web/src/PreviewWeb.mockdata.ts +++ b/lib/preview-web/src/PreviewWeb.mockdata.ts @@ -1,5 +1,12 @@ import { EventEmitter } from 'events'; -import Events from '@storybook/core-events'; +import { + DOCS_RENDERED, + STORY_ERRORED, + STORY_MISSING, + STORY_RENDERED, + STORY_RENDER_PHASE_CHANGED, + STORY_THREW_EXCEPTION, +} from '@storybook/core-events'; import { StoryIndex } from '@storybook/store'; import { RenderPhase } from './PreviewWeb'; @@ -99,15 +106,15 @@ export const waitForEvents = ( // the async parts, so we need to listen for the "done" events export const waitForRender = () => waitForEvents([ - Events.STORY_RENDERED, - Events.DOCS_RENDERED, - Events.STORY_THREW_EXCEPTION, - Events.STORY_ERRORED, - Events.STORY_MISSING, + STORY_RENDERED, + DOCS_RENDERED, + STORY_THREW_EXCEPTION, + STORY_ERRORED, + STORY_MISSING, ]); export const waitForRenderPhase = (phase: RenderPhase) => - waitForEvents([Events.STORY_RENDER_PHASE_CHANGED], ({ newPhase }) => newPhase === phase); + waitForEvents([STORY_RENDER_PHASE_CHANGED], ({ newPhase }) => newPhase === phase); // A little trick to ensure that we always call the real `setTimeout` even when timers are mocked const realSetTimeout = setTimeout; diff --git a/lib/preview-web/src/PreviewWeb.test.ts b/lib/preview-web/src/PreviewWeb.test.ts index 016a079e64fb..0b507fb35f85 100644 --- a/lib/preview-web/src/PreviewWeb.test.ts +++ b/lib/preview-web/src/PreviewWeb.test.ts @@ -1,7 +1,7 @@ import global from 'global'; import * as ReactDOM from 'react-dom'; import merge from 'lodash/merge'; -import Events, { +import { CONFIG_ERROR, CURRENT_STORY_WAS_SET, DOCS_RENDERED, diff --git a/lib/preview-web/src/PreviewWeb.tsx b/lib/preview-web/src/PreviewWeb.tsx index 417730034bd3..e4fdb3c2d574 100644 --- a/lib/preview-web/src/PreviewWeb.tsx +++ b/lib/preview-web/src/PreviewWeb.tsx @@ -1,7 +1,24 @@ import deprecate from 'util-deprecate'; import dedent from 'ts-dedent'; import global from 'global'; -import Events, { IGNORED_EXCEPTION } from '@storybook/core-events'; +import { + CURRENT_STORY_WAS_SET, + IGNORED_EXCEPTION, + PRELOAD_STORIES, + PREVIEW_KEYDOWN, + SET_CURRENT_STORY, + SET_STORIES, + STORY_ARGS_UPDATED, + STORY_CHANGED, + STORY_ERRORED, + STORY_MISSING, + STORY_PREPARED, + STORY_RENDER_PHASE_CHANGED, + STORY_SPECIFIED, + STORY_THREW_EXCEPTION, + STORY_UNCHANGED, + UPDATE_QUERY_PARAMS, +} from '@storybook/core-events'; import { logger } from '@storybook/client-logger'; import { AnyFramework, StoryId, ProjectAnnotations, Args, Globals } from '@storybook/csf'; import type { @@ -64,9 +81,9 @@ export class PreviewWeb extends Preview) { @@ -87,7 +104,7 @@ export class PreviewWeb extends Preview { return super.initializeWithStoryIndex(storyIndex).then(() => { if (!global.FEATURES?.storyStoreV7) { - this.channel.emit(Events.SET_STORIES, this.storyStore.getSetStoriesPayload()); + this.channel.emit(SET_STORIES, this.storyStore.getSetStoriesPayload()); } return this.selectSpecifiedStory(); @@ -130,9 +147,9 @@ export class PreviewWeb extends Preview extends Preview extends Preview extends Preview extends Preview extends Preview extends Preview extends Preview extends Preview