From ee3fe71c2c3c5cb987f40c8d545b5b01e4b45c6b Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 23 Jun 2022 22:46:07 +0200 Subject: [PATCH 001/266] Add step function and support for deeply nested interactions --- addons/interactions/src/Panel.tsx | 13 ++++---- .../src/components/Interaction.stories.tsx | 2 +- .../src/components/Interaction.tsx | 12 ++++---- .../src/components/MethodCall.tsx | 23 ++++++++++++-- addons/interactions/src/mocks/index.ts | 12 ++++++-- lib/instrumenter/src/instrumenter.test.ts | 30 +++++++++---------- lib/instrumenter/src/instrumenter.ts | 30 +++++++++---------- lib/instrumenter/src/types.ts | 8 ++--- lib/preview-web/package.json | 1 + lib/preview-web/src/StoryRender.ts | 11 +++++-- yarn.lock | 1 + 11 files changed, 90 insertions(+), 53 deletions(-) diff --git a/addons/interactions/src/Panel.tsx b/addons/interactions/src/Panel.tsx index 960687f98956..bc4ce66aa464 100644 --- a/addons/interactions/src/Panel.tsx +++ b/addons/interactions/src/Panel.tsx @@ -43,16 +43,19 @@ export const getInteractions = ({ const callsById = new Map(); const childCallMap = new Map(); return log - .filter(({ callId, parentId }) => { - if (!parentId) return true; - childCallMap.set(parentId, (childCallMap.get(parentId) || []).concat(callId)); - return !collapsed.has(parentId); + .filter(({ callId, ancestors }) => { + let visible = true; + ancestors.forEach((ancestor) => { + if (collapsed.has(ancestor)) visible = false; + childCallMap.set(ancestor, (childCallMap.get(ancestor) || []).concat(callId)); + }); + return visible; }) .map(({ callId, status }) => ({ ...calls.get(callId), status } as Call)) .map((call) => { const status = call.status === CallStates.ERROR && - callsById.get(call.parentId)?.status === CallStates.ACTIVE + callsById.get(call.ancestors.slice(-1)[0])?.status === CallStates.ACTIVE ? CallStates.ACTIVE : call.status; callsById.set(call.id, { ...call, status }); diff --git a/addons/interactions/src/components/Interaction.stories.tsx b/addons/interactions/src/components/Interaction.stories.tsx index 3836267b0803..8ebecd5f383a 100644 --- a/addons/interactions/src/components/Interaction.stories.tsx +++ b/addons/interactions/src/components/Interaction.stories.tsx @@ -45,7 +45,7 @@ export const Done: Story = { export const WithParent: Story = { args: { - call: { ...getCalls(CallStates.DONE).slice(-1)[0], parentId: 'parent-id' }, + call: { ...getCalls(CallStates.DONE).slice(-1)[0], ancestors: ['parent-id'] }, }, }; diff --git a/addons/interactions/src/components/Interaction.tsx b/addons/interactions/src/components/Interaction.tsx index 609aa3e18569..12d48bfe82f0 100644 --- a/addons/interactions/src/components/Interaction.tsx +++ b/addons/interactions/src/components/Interaction.tsx @@ -32,7 +32,7 @@ const RowContainer = styled('div', { ? transparentize(0.93, theme.color.negative) : theme.background.warning, }), - paddingLeft: call.parentId ? 20 : 0, + paddingLeft: call.ancestors.length * 20, }), ({ theme, call, pausedAt }) => pausedAt === call.id && { @@ -56,9 +56,9 @@ const RowContainer = styled('div', { } ); -const RowHeader = styled.div<{ disabled: boolean }>(({ theme, disabled }) => ({ +const RowHeader = styled.div<{ isInteractive: boolean }>(({ theme, isInteractive }) => ({ display: 'flex', - '&:hover': disabled ? {} : { background: theme.background.hoverable }, + '&:hover': isInteractive ? {} : { background: theme.background.hoverable }, })); const RowLabel = styled('button', { shouldForwardProp: (prop) => !['call'].includes(prop) })< @@ -144,13 +144,15 @@ export const Interaction = ({ pausedAt?: Call['id']; }) => { const [isHovered, setIsHovered] = React.useState(false); + const isInteractive = !controlStates.goto || !call.interceptable || !!call.ancestors.length; + return ( - + controls.goto(call.id)} - disabled={!controlStates.goto || !call.interceptable || !!call.parentId} + disabled={isInteractive} onMouseEnter={() => controlStates.goto && setIsHovered(true)} onMouseLeave={() => controlStates.goto && setIsHovered(false)} > diff --git a/addons/interactions/src/components/MethodCall.tsx b/addons/interactions/src/components/MethodCall.tsx index e9a98602e783..bd4ecd8a3174 100644 --- a/addons/interactions/src/components/MethodCall.tsx +++ b/addons/interactions/src/components/MethodCall.tsx @@ -1,6 +1,6 @@ import { ObjectInspector } from '@devtools-ds/object-inspector'; import { Call, CallRef, ElementRef } from '@storybook/instrumenter'; -import { useTheme } from '@storybook/theming'; +import { color, useTheme } from '@storybook/theming'; import React, { Fragment, ReactElement } from 'react'; const colorsLight = { @@ -383,6 +383,22 @@ export const OtherNode = ({ value }: { value: any }) => { return {stringify(value)}; }; +export const StepNode = ({ label }: { label: string }) => { + const colors = useThemeColors(); + const { typography } = useTheme(); + return ( + + {label} + + ); +}; + export const MethodCall = ({ call, callsById, @@ -393,7 +409,9 @@ export const MethodCall = ({ // Call might be undefined during initial render, can be safely ignored. if (!call) return null; - const colors = useThemeColors(); + if (call.method === 'step' && call.path.length === 0) { + return ; + } const path = call.path.flatMap((elem, index) => { // eslint-disable-next-line no-underscore-dangle @@ -416,6 +434,7 @@ export const MethodCall = ({ : [node]; }); + const colors = useThemeColors(); return ( <> {path} diff --git a/addons/interactions/src/mocks/index.ts b/addons/interactions/src/mocks/index.ts index d42507545332..61600cccb4c0 100644 --- a/addons/interactions/src/mocks/index.ts +++ b/addons/interactions/src/mocks/index.ts @@ -6,6 +6,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [3] within', storyId: 'story--id', cursor: 3, + ancestors: [], path: [], method: 'within', args: [{ __element__: { localName: 'div', id: 'root' } }], @@ -17,6 +18,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [4] findByText', storyId: 'story--id', cursor: 4, + ancestors: [], path: [{ __callId__: 'story--id [3] within' }], method: 'findByText', args: ['Click'], @@ -28,6 +30,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [5] click', storyId: 'story--id', cursor: 5, + ancestors: [], path: ['userEvent'], method: 'click', args: [{ __element__: { localName: 'button', innerText: 'Click' } }], @@ -39,6 +42,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [6] waitFor', storyId: 'story--id', cursor: 6, + ancestors: [], path: [], method: 'waitFor', args: [{ __function__: { name: '' } }], @@ -48,9 +52,9 @@ export const getCalls = (finalStatus: CallStates) => { }, { id: 'story--id [6] waitFor [0] expect', - parentId: 'story--id [6] waitFor', storyId: 'story--id', cursor: 1, + ancestors: ['story--id [6] waitFor'], path: [], method: 'expect', args: [{ __function__: { name: 'handleSubmit' } }], @@ -60,9 +64,9 @@ export const getCalls = (finalStatus: CallStates) => { }, { id: 'story--id [6] waitFor [1] stringMatching', - parentId: 'story--id [6] waitFor', storyId: 'story--id', cursor: 2, + ancestors: ['story--id [6] waitFor'], path: ['expect'], method: 'stringMatching', args: [{ __regexp__: { flags: 'gi', source: '([A-Z])w+' } }], @@ -72,9 +76,9 @@ export const getCalls = (finalStatus: CallStates) => { }, { id: 'story--id [6] waitFor [2] toHaveBeenCalledWith', - parentId: 'story--id [6] waitFor', storyId: 'story--id', cursor: 3, + ancestors: ['story--id [6] waitFor'], path: [{ __callId__: 'story--id [6] waitFor [0] expect' }], method: 'toHaveBeenCalledWith', args: [{ __callId__: 'story--id [6] waitFor [1] stringMatching', retain: false }], @@ -86,6 +90,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [7] expect', storyId: 'story--id', cursor: 7, + ancestors: [], path: [], method: 'expect', args: [{ __function__: { name: 'handleReset' } }], @@ -97,6 +102,7 @@ export const getCalls = (finalStatus: CallStates) => { id: 'story--id [8] toHaveBeenCalled', storyId: 'story--id', cursor: 8, + ancestors: [], path: [{ __callId__: 'story--id [7] expect' }, 'not'], method: 'toHaveBeenCalled', args: [], diff --git a/lib/instrumenter/src/instrumenter.test.ts b/lib/instrumenter/src/instrumenter.test.ts index 5c8025c03dc9..277be46a0167 100644 --- a/lib/instrumenter/src/instrumenter.test.ts +++ b/lib/instrumenter/src/instrumenter.test.ts @@ -140,7 +140,7 @@ describe('Instrumenter', () => { method: 'fn', interceptable: false, status: 'done', - parentId: undefined, + ancestors: [], }) ); }); @@ -216,28 +216,28 @@ describe('Instrumenter', () => { }); fn5(); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [0] fn1', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [0] fn1', ancestors: [] }) ); expect(callSpy).toHaveBeenCalledWith( expect.objectContaining({ id: 'kind--story [0] fn1 [0] fn2', - parentId: 'kind--story [0] fn1', + ancestors: ['kind--story [0] fn1'], }) ); expect(callSpy).toHaveBeenCalledWith( expect.objectContaining({ id: 'kind--story [0] fn1 [0] fn2 [0] fn3', - parentId: 'kind--story [0] fn1 [0] fn2', + ancestors: ['kind--story [0] fn1 [0] fn2'], }) ); expect(callSpy).toHaveBeenCalledWith( expect.objectContaining({ id: 'kind--story [0] fn1 [1] fn4', - parentId: 'kind--story [0] fn1', + ancestors: ['kind--story [0] fn1'], }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [1] fn5', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [1] fn5', ancestors: [] }) ); }); @@ -247,16 +247,16 @@ describe('Instrumenter', () => { await fn1(() => fn2()); await fn3(); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [0] fn1', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [0] fn1', ancestors: [] }) ); expect(callSpy).toHaveBeenCalledWith( expect.objectContaining({ id: 'kind--story [0] fn1 [0] fn2', - parentId: 'kind--story [0] fn1', + ancestors: ['kind--story [0] fn1'], }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [1] fn3', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [1] fn3', ancestors: [] }) ); }); @@ -294,8 +294,8 @@ describe('Instrumenter', () => { expect(syncSpy).toHaveBeenCalledWith( expect.objectContaining({ logItems: [ - { callId: 'kind--story [2] fn2', status: 'done' }, - { callId: 'kind--story [3] fn', status: 'done' }, + { callId: 'kind--story [2] fn2', status: 'done', ancestors: [] }, + { callId: 'kind--story [3] fn', status: 'done', ancestors: [] }, ], }) ); @@ -388,8 +388,8 @@ describe('Instrumenter', () => { expect(syncSpy).toHaveBeenCalledWith( expect.objectContaining({ logItems: [ - { callId: 'kind--story [0] fn1', status: 'done' }, - { callId: 'kind--story [1] fn2', status: 'done' }, + { callId: 'kind--story [0] fn1', status: 'done', ancestors: [] }, + { callId: 'kind--story [1] fn2', status: 'done', ancestors: [] }, ], }) ); @@ -405,11 +405,11 @@ describe('Instrumenter', () => { expect(syncSpy).toHaveBeenCalledWith( expect.objectContaining({ logItems: [ - { callId: 'kind--story [0] fn1', status: 'done' }, + { callId: 'kind--story [0] fn1', status: 'done', ancestors: [] }, { callId: 'kind--story [0] fn1 [0] fn2', status: 'done', - parentId: 'kind--story [0] fn1', + ancestors: ['kind--story [0] fn1'], }, ], }) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 71170dcfc278..16562248790b 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -69,7 +69,7 @@ const getInitialState = (): State => ({ shadowCalls: [], callRefsByResult: new Map(), chainedCallIds: new Set(), - parentId: undefined, + ancestors: [], playUntil: undefined, resolvers: {}, syncTimeout: undefined, @@ -177,7 +177,7 @@ export class Instrumenter { playUntil || shadowCalls .slice(0, firstRowIndex) - .filter((call) => call.interceptable && !call.parentId) + .filter((call) => call.interceptable && !call.ancestors.length) .slice(-1)[0]?.id, }; }); @@ -187,7 +187,7 @@ export class Instrumenter { }; const back = ({ storyId }: { storyId: string }) => { - const log = this.getLog(storyId).filter((call) => !call.parentId); + const log = this.getLog(storyId).filter((call) => !call.ancestors.length); const last = log.reduceRight((res, item, index) => { if (res >= 0 || item.status === CallStates.WAITING) return res; return index; @@ -275,7 +275,7 @@ export class Instrumenter { } }); if ((call.interceptable || call.exception) && !seen.has(call.id)) { - acc.unshift({ callId: call.id, status: call.status, parentId: call.parentId }); + acc.unshift({ callId: call.id, status: call.status, ancestors: call.ancestors }); seen.add(call.id); } return acc; @@ -332,13 +332,13 @@ export class Instrumenter { track(method: string, fn: Function, args: any[], options: Options) { const storyId: StoryId = args?.[0]?.__storyId__ || global.window.__STORYBOOK_PREVIEW__?.urlStore?.selection?.storyId; - const { cursor, parentId } = this.getState(storyId); + const { cursor, ancestors } = this.getState(storyId); this.setState(storyId, { cursor: cursor + 1 }); - const id = `${parentId || storyId} [${cursor}] ${method}`; + const id = `${ancestors.slice(-1)[0] || storyId} [${cursor}] ${method}`; const { path = [], intercept = false, retain = false } = options; const interceptable = typeof intercept === 'function' ? intercept(method, path) : intercept; - const call: Call = { id, parentId, storyId, cursor, path, method, args, interceptable, retain }; - const interceptOrInvoke = interceptable && !parentId ? this.intercept : this.invoke; + const call = { id, cursor, storyId, ancestors, path, method, args, interceptable, retain }; + const interceptOrInvoke = interceptable && !ancestors.length ? this.intercept : this.invoke; const result = interceptOrInvoke.call(this, fn, call, options); return this.instrument(result, { ...options, mutate: true, path: [{ __callId__: call.id }] }); } @@ -449,7 +449,7 @@ export class Instrumenter { })); // Exceptions inside callbacks should bubble up to the parent call. - if (call.parentId) { + if (call.ancestors.length) { Object.defineProperty(e, 'callId', { value: call.id }); throw e; } @@ -481,15 +481,15 @@ export class Instrumenter { if (typeof arg !== 'function' || Object.keys(arg).length) return arg; return (...args: any) => { - // Set the cursor and parentId for calls that happen inside the callback. - const { cursor, parentId } = this.getState(call.storyId); - this.setState(call.storyId, { cursor: 0, parentId: call.id }); - const restore = () => this.setState(call.storyId, { cursor, parentId }); + // Set the cursor and ancestors for calls that happen inside the callback. + const { cursor, ancestors } = this.getState(call.storyId); + this.setState(call.storyId, { cursor: 0, ancestors: [...ancestors, call.id] }); + const restore = () => this.setState(call.storyId, { cursor, ancestors }); // Invoke the actual callback function. const res = arg(...args); - // Reset cursor and parentId to their original values before we entered the callback. + // Reset cursor and ancestors to their original values before we entered the callback. if (res instanceof Promise) res.then(restore, restore); else restore(); @@ -553,7 +553,7 @@ export class Instrumenter { const { isLocked, isPlaying } = this.getState(storyId); const logItems: LogItem[] = this.getLog(storyId); const pausedAt = logItems - .filter(({ parentId }) => !parentId) + .filter(({ ancestors }) => !ancestors.length) .find((item) => item.status === CallStates.WAITING)?.callId; const hasActive = logItems.some((item) => item.status === CallStates.ACTIVE); diff --git a/lib/instrumenter/src/types.ts b/lib/instrumenter/src/types.ts index e9cca7003547..2b9edab63de4 100644 --- a/lib/instrumenter/src/types.ts +++ b/lib/instrumenter/src/types.ts @@ -2,9 +2,9 @@ import type { StoryId } from '@storybook/addons'; export interface Call { id: string; - parentId?: Call['id']; - storyId: StoryId; cursor: number; + storyId: StoryId; + ancestors: Call['id'][]; path: Array; method: string; args: any[]; @@ -52,7 +52,7 @@ export interface ControlStates { export interface LogItem { callId: Call['id']; status: Call['status']; - parentId?: Call['id']; + ancestors: Call['id'][]; } export interface Payload { @@ -70,7 +70,7 @@ export interface State { shadowCalls: Call[]; callRefsByResult: Map; chainedCallIds: Set; - parentId?: Call['id']; + ancestors: Call['id'][]; playUntil?: Call['id']; resolvers: Record; syncTimeout: ReturnType; diff --git a/lib/preview-web/package.json b/lib/preview-web/package.json index bde7870db102..96808a2fc038 100644 --- a/lib/preview-web/package.json +++ b/lib/preview-web/package.json @@ -45,6 +45,7 @@ "@storybook/client-logger": "7.0.0-alpha.10", "@storybook/core-events": "7.0.0-alpha.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/instrumenter": "7.0.0-alpha.10", "@storybook/store": "7.0.0-alpha.10", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index e49e89903abf..d4e9eea8ac68 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -20,6 +20,7 @@ import { STORY_RENDERED, PLAY_FUNCTION_THREW_EXCEPTION, } from '@storybook/core-events'; +import { instrument } from '@storybook/instrumenter'; const { AbortController } = global; @@ -242,9 +243,13 @@ export class StoryRender implements Render { - await playFunction(renderContext.storyContext); - }); + const { step } = instrument( + { step: async (label: string, callback: () => any) => callback() }, + { intercept: true } + ); + await this.runPhase(abortSignal, 'playing', async () => + playFunction({ ...renderContext.storyContext, step }) + ); await this.runPhase(abortSignal, 'played'); } catch (error) { logger.error(error); diff --git a/yarn.lock b/yarn.lock index c7eb673c6355..625b99d3e645 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9108,6 +9108,7 @@ __metadata: "@storybook/client-logger": 7.0.0-alpha.10 "@storybook/core-events": 7.0.0-alpha.10 "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/instrumenter": 7.0.0-alpha.10 "@storybook/store": 7.0.0-alpha.10 ansi-to-html: ^0.6.11 core-js: ^3.8.2 From 9c427fe8a9c1bb4da80bcf9c74c3f269eb45d83a Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 23 Jun 2022 23:01:50 +0200 Subject: [PATCH 002/266] Fix bubbling multiple levels --- lib/instrumenter/src/instrumenter.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 16562248790b..dc9a1f0b2a0e 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -450,7 +450,9 @@ export class Instrumenter { // Exceptions inside callbacks should bubble up to the parent call. if (call.ancestors.length) { - Object.defineProperty(e, 'callId', { value: call.id }); + if (!Object.prototype.hasOwnProperty.call(e, 'callId')) { + Object.defineProperty(e, 'callId', { value: call.id }); + } throw e; } From fc1d62d2d633a144e6cc38311b7b6b3a5fad3660 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 09:17:14 +0200 Subject: [PATCH 003/266] Refactor stories to use step function --- .../addon-interactions.stories.tsx | 104 ++++++++++++------ 1 file changed, 69 insertions(+), 35 deletions(-) diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx index 3a4ad4e71704..2fb00e6feea5 100644 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx +++ b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx @@ -1,3 +1,4 @@ +/* eslint-disable jest/no-standalone-expect */ import { Story as CSF2Story, Meta, ComponentStoryObj } from '@storybook/react'; import { expect } from '@storybook/jest'; import { @@ -120,38 +121,51 @@ export const Standard: CSF3Story = { args: { passwordVerification: false }, }; -export const StandardEmailFilled: CSF3Story = { +export const StandardEmailFilled = { ...Standard, - play: async ({ canvasElement }) => { + play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); - await fireEvent.change(canvas.getByTestId('email'), { - target: { - value: 'michael@chromatic.com', - }, + + await step('Enter email', async () => { + await fireEvent.change(canvas.getByTestId('email'), { + target: { value: 'michael@chromatic.com' }, + }); }); }, }; -export const StandardEmailFailed: CSF3Story = { +export const StandardEmailFailed = { ...Standard, - play: async ({ args, canvasElement }) => { + play: async ({ args, canvasElement, step }) => { const canvas = within(canvasElement); - await userEvent.type(canvas.getByTestId('email'), 'gert@chromatic'); - await userEvent.type(canvas.getByTestId('password1'), 'supersecret'); - await userEvent.click(canvas.getByRole('button', { name: /create account/i })); + + await step('Enter email and password', async () => { + await userEvent.type(canvas.getByTestId('email'), 'gert@chromatic'); + await userEvent.type(canvas.getByTestId('password1'), 'supersecret'); + }); + + await step('Submit form', async () => { + await userEvent.click(canvas.getByRole('button', { name: /create account/i })); + }); await canvas.findByText('Please enter a correctly formatted email address'); await expect(args.onSubmit).not.toHaveBeenCalled(); }, }; -export const StandardEmailSuccess: CSF3Story = { +export const StandardEmailSuccess = { ...Standard, - play: async ({ args, canvasElement }) => { + play: async ({ args, canvasElement, step }) => { const canvas = within(canvasElement); - await userEvent.type(canvas.getByTestId('email'), 'michael@chromatic.com'); - await userEvent.type(canvas.getByTestId('password1'), 'testpasswordthatwontfail'); - await userEvent.click(canvas.getByTestId('submit')); + + await step('Enter email and password', async () => { + await userEvent.type(canvas.getByTestId('email'), 'michael@chromatic.com'); + await userEvent.type(canvas.getByTestId('password1'), 'testpasswordthatwontfail'); + }); + + await step('Submit form', async () => { + await userEvent.click(canvas.getByTestId('submit')); + }); await waitFor(async () => { await expect(args.onSubmit).toHaveBeenCalledTimes(1); @@ -163,17 +177,23 @@ export const StandardEmailSuccess: CSF3Story = { }, }; -export const StandardPasswordFailed: CSF3Story = { +export const StandardPasswordFailed = { ...Standard, play: async (context) => { const canvas = within(context.canvasElement); await StandardEmailFilled.play(context); - await userEvent.type(canvas.getByTestId('password1'), 'asdf'); - await userEvent.click(canvas.getByTestId('submit')); + + await context.step('Enter password', async () => { + await userEvent.type(canvas.getByTestId('password1'), 'asdf'); + }); + + await context.step('Submit form', async () => { + await userEvent.click(canvas.getByTestId('submit')); + }); }, }; -export const StandardFailHover: CSF3Story = { +export const StandardFailHover = { ...StandardPasswordFailed, play: async (context) => { const canvas = within(context.canvasElement); @@ -184,42 +204,56 @@ export const StandardFailHover: CSF3Story = { }, }; -export const Verification: CSF3Story = { +export const Verification = { args: { passwordVerification: true }, argTypes: { onSubmit: { action: 'clicked' } }, }; -export const VerificationPassword: CSF3Story = { +export const VerificationPassword = { ...Verification, play: async (context) => { const canvas = within(context.canvasElement); await StandardEmailFilled.play(context); - await userEvent.type(canvas.getByTestId('password1'), 'asdfasdf'); - await userEvent.click(canvas.getByTestId('submit')); + await context.step('Enter password', async () => { + await userEvent.type(canvas.getByTestId('password1'), 'asdfasdf'); + }); + await context.step('Submit form', async () => { + await userEvent.click(canvas.getByTestId('submit')); + }); }, }; -export const VerificationPasswordMismatch: CSF3Story = { +export const VerificationPasswordMismatch = { ...Verification, play: async (context) => { const canvas = within(context.canvasElement); await StandardEmailFilled.play(context); - await userEvent.type(canvas.getByTestId('password1'), 'asdfasdf'); - await userEvent.type(canvas.getByTestId('password2'), 'asdf1234'); - await userEvent.click(canvas.getByTestId('submit')); + await context.step('Enter passwords', async () => { + await userEvent.type(canvas.getByTestId('password1'), 'asdfasdf'); + await userEvent.type(canvas.getByTestId('password2'), 'asdf1234'); + }); + await context.step('Submit form', async () => { + await userEvent.click(canvas.getByTestId('submit')); + }); }, }; -export const VerificationSuccess: CSF3Story = { +export const VerificationSuccess = { ...Verification, play: async (context) => { const canvas = within(context.canvasElement); await StandardEmailFilled.play(context); - await new Promise((resolve) => setTimeout(resolve, 1000)); - await userEvent.type(canvas.getByTestId('password1'), 'helloyou', { delay: 50 }); - await new Promise((resolve) => setTimeout(resolve, 1000)); - await userEvent.type(canvas.getByTestId('password2'), 'helloyou', { delay: 50 }); - await new Promise((resolve) => setTimeout(resolve, 1000)); - await userEvent.click(canvas.getByTestId('submit')); + + await context.step('Enter passwords', async () => { + await new Promise((resolve) => setTimeout(resolve, 1000)); + await userEvent.type(canvas.getByTestId('password1'), 'helloyou', { delay: 50 }); + await new Promise((resolve) => setTimeout(resolve, 1000)); + await userEvent.type(canvas.getByTestId('password2'), 'helloyou', { delay: 50 }); + }); + + await context.step('Submit form', async () => { + await new Promise((resolve) => setTimeout(resolve, 1000)); + await userEvent.click(canvas.getByTestId('submit')); + }); }, }; From b2a18cf256eca1435b63def39bbf3d6f5f9ccd04 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 09:36:01 +0200 Subject: [PATCH 004/266] Pull example stories into their own file --- addons/interactions/src/Examples.stories.tsx | 126 ++++++++++++++++++ .../addon-interactions.stories.tsx | 101 +------------- 2 files changed, 128 insertions(+), 99 deletions(-) create mode 100644 addons/interactions/src/Examples.stories.tsx diff --git a/addons/interactions/src/Examples.stories.tsx b/addons/interactions/src/Examples.stories.tsx new file mode 100644 index 000000000000..79618730b304 --- /dev/null +++ b/addons/interactions/src/Examples.stories.tsx @@ -0,0 +1,126 @@ +/* eslint-disable jest/no-standalone-expect */ +import { Story, Meta } from '@storybook/react'; +import { expect } from '@storybook/jest'; +import { within, waitFor, userEvent, waitForElementToBeRemoved } from '@storybook/testing-library'; +import React from 'react'; + +export default { + title: 'Addons/Interactions/Examples', + parameters: { + layout: 'centered', + theme: 'light', + options: { selectedPanel: 'storybook/interactions/panel' }, + }, + argTypes: { + onSubmit: { action: true }, + }, +} as Meta; + +export const Assertions: Story = ({ onSubmit }) => ( + +); +Assertions.play = async ({ args, canvasElement }) => { + await userEvent.click(within(canvasElement).getByRole('button')); + await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); + await expect([{ name: 'John', age: 42 }]).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: 'John' }), + expect.objectContaining({ age: 42 }), + ]) + ); +}; + +export const FindBy: Story = () => { + const [isLoading, setIsLoading] = React.useState(true); + React.useEffect(() => { + setTimeout(() => setIsLoading(false), 500); + }, []); + return isLoading ?
Loading...
: ; +}; +FindBy.play = async ({ canvasElement }) => { + const canvas = within(canvasElement); + await canvas.findByRole('button'); + await expect(true).toBe(true); +}; + +export const WaitFor: Story = ({ onSubmit }) => ( + +); +WaitFor.play = async ({ args, canvasElement }) => { + await userEvent.click(await within(canvasElement).findByText('Click')); + await waitFor(async () => { + await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); + await expect(true).toBe(true); + }); +}; + +export const WaitForElementToBeRemoved: Story = () => { + const [isLoading, setIsLoading] = React.useState(true); + React.useEffect(() => { + setTimeout(() => setIsLoading(false), 1500); + }, []); + return isLoading ?
Loading...
: ; +}; +WaitForElementToBeRemoved.play = async ({ canvasElement }) => { + const canvas = within(canvasElement); + await waitForElementToBeRemoved(await canvas.findByText('Loading...'), { timeout: 2000 }); + const button = await canvas.findByText('Loaded!'); + await expect(button).not.toBeNull(); +}; + +export const WithLoaders: Story = ({ onSubmit }, { loaded: { todo } }) => { + return ( + + ); +}; +WithLoaders.loaders = [ + async () => { + // long fake timeout + await new Promise((resolve) => setTimeout(resolve, 2000)); + + return { + todo: { + userId: 1, + id: 1, + title: 'delectus aut autem', + completed: false, + }, + }; + }, +]; +WithLoaders.play = async ({ args, canvasElement }) => { + const canvas = within(canvasElement); + const todoItem = await canvas.findByText('Todo: delectus aut autem'); + await userEvent.click(todoItem); + await expect(args.onSubmit).toHaveBeenCalledWith('delectus aut autem'); +}; + +export const WithSteps: Story = ({ onSubmit }) => ( + +); +WithSteps.play = async ({ args, canvasElement, step }) => { + step('Click button', async () => { + await userEvent.click(within(canvasElement).getByRole('button')); + + step('Verify submit', async () => { + await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); + }); + + step('Verify result', async () => { + await expect([{ name: 'John', age: 42 }]).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: 'John' }), + expect.objectContaining({ age: 42 }), + ]) + ); + }); + }); +}; diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx index 2fb00e6feea5..6d835dffa1b7 100644 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx +++ b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx @@ -1,14 +1,7 @@ /* eslint-disable jest/no-standalone-expect */ -import { Story as CSF2Story, Meta, ComponentStoryObj } from '@storybook/react'; +import { Meta, ComponentStoryObj } from '@storybook/react'; import { expect } from '@storybook/jest'; -import { - within, - waitFor, - fireEvent, - userEvent, - waitForElementToBeRemoved, -} from '@storybook/testing-library'; -import React from 'react'; +import { within, waitFor, fireEvent, userEvent } from '@storybook/testing-library'; import { AccountForm } from './AccountForm'; @@ -27,96 +20,6 @@ export default { type CSF3Story = ComponentStoryObj; -export const Demo: CSF2Story = (args) => ( - -); - -Demo.play = async ({ args, canvasElement }) => { - await userEvent.click(within(canvasElement).getByRole('button')); - await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); - await expect([{ name: 'John', age: 42 }]).toEqual( - expect.arrayContaining([ - expect.objectContaining({ name: 'John' }), - expect.objectContaining({ age: 42 }), - ]) - ); -}; - -export const Exception = Demo.bind({}); -Exception.play = () => Demo.play(undefined as any); // deepscan-disable-line -Exception.parameters = { chromatic: { disableSnapshot: true } }; - -export const FindBy: CSF2Story = (args) => { - const [isLoading, setIsLoading] = React.useState(true); - React.useEffect(() => { - setTimeout(() => setIsLoading(false), 500); - }, []); - return isLoading ?
Loading...
: ; -}; -FindBy.play = async ({ canvasElement }) => { - const canvas = within(canvasElement); - await canvas.findByRole('button'); - await expect(true).toBe(true); -}; - -export const WaitFor: CSF2Story = (args) => ( - -); -WaitFor.play = async ({ args, canvasElement }) => { - await userEvent.click(await within(canvasElement).findByText('Click')); - await waitFor(async () => { - await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); - await expect(true).toBe(true); - }); -}; - -export const WaitForElementToBeRemoved: CSF2Story = () => { - const [isLoading, setIsLoading] = React.useState(true); - React.useEffect(() => { - setTimeout(() => setIsLoading(false), 1500); - }, []); - return isLoading ?
Loading...
: ; -}; -WaitForElementToBeRemoved.play = async ({ canvasElement }) => { - const canvas = within(canvasElement); - await waitForElementToBeRemoved(await canvas.findByText('Loading...'), { timeout: 2000 }); - const button = await canvas.findByText('Loaded!'); - await expect(button).not.toBeNull(); -}; - -export const WithLoaders: CSF2Story = (args, { loaded: { todo } }) => { - return ( - - ); -}; -WithLoaders.loaders = [ - async () => { - // long fake timeout - await new Promise((resolve) => setTimeout(resolve, 2000)); - - return { - todo: { - userId: 1, - id: 1, - title: 'delectus aut autem', - completed: false, - }, - }; - }, -]; -WithLoaders.play = async ({ args, canvasElement }) => { - const canvas = within(canvasElement); - const todoItem = await canvas.findByText('Todo: delectus aut autem'); - await userEvent.click(todoItem); - await expect(args.onSubmit).toHaveBeenCalledWith('delectus aut autem'); -}; - export const Standard: CSF3Story = { args: { passwordVerification: false }, }; From 884e410552607de4617b9626e26a2b9a78aa7ff0 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 09:59:26 +0200 Subject: [PATCH 005/266] Move examples to separate directory --- .../addon-interactions.stories.mdx | 33 ------------------- .../AccountFormInteractions.stories.mdx | 31 +++++++++++++++++ .../AccountFormInteractions.stories.tsx} | 4 +-- .../AccountFormInteractions.tsx} | 0 .../src/{ => examples}/Examples.stories.tsx | 0 5 files changed, 33 insertions(+), 35 deletions(-) delete mode 100644 addons/interactions/src/components/AccountForm/addon-interactions.stories.mdx create mode 100644 addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.mdx rename addons/interactions/src/{components/AccountForm/addon-interactions.stories.tsx => examples/AccountFormInteractions/AccountFormInteractions.stories.tsx} (97%) rename addons/interactions/src/{components/AccountForm/AccountForm.tsx => examples/AccountFormInteractions/AccountFormInteractions.tsx} (100%) rename addons/interactions/src/{ => examples}/Examples.stories.tsx (100%) diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.mdx b/addons/interactions/src/components/AccountForm/addon-interactions.stories.mdx deleted file mode 100644 index 1930000cc9a1..000000000000 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.mdx +++ /dev/null @@ -1,33 +0,0 @@ -import { Meta, Canvas, Story } from '@storybook/addon-docs'; -import { expect } from '@storybook/jest'; -import { within, waitFor, fireEvent, userEvent } from '@storybook/testing-library'; - -import { AccountForm } from './AccountForm'; - - - -## AccountForm - - - { - const { args, canvasElement } = context - const canvas = within(canvasElement) - - await userEvent.type(canvas.getByTestId('email'), 'username@email.com') - await userEvent.type(canvas.getByTestId('password1'), 'thepassword') - await userEvent.click(canvas.getByRole('button', { name: /create account/i })) - expect(args.onSubmit).not.toHaveBeenCalled() - }}/> - diff --git a/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.mdx b/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.mdx new file mode 100644 index 000000000000..4c97235008e3 --- /dev/null +++ b/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.mdx @@ -0,0 +1,31 @@ +import { Meta, Canvas, Story } from '@storybook/addon-docs'; +import { expect } from '@storybook/jest'; +import { within, waitFor, fireEvent, userEvent, screen } from '@storybook/testing-library'; + +import { AccountForm } from './AccountFormInteractions'; + + + +## AccountForm + + + { + await userEvent.type(screen.getByTestId('email'), 'username@email.com'); + await userEvent.type(screen.getByTestId('password1'), 'thepassword'); + await userEvent.click(screen.getByRole('button', { name: /create account/i })); + await expect(args.onSubmit).not.toHaveBeenCalled(); + }} + /> + diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx b/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.tsx similarity index 97% rename from addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx rename to addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.tsx index 6d835dffa1b7..34f84115113c 100644 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx +++ b/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.stories.tsx @@ -3,10 +3,10 @@ import { Meta, ComponentStoryObj } from '@storybook/react'; import { expect } from '@storybook/jest'; import { within, waitFor, fireEvent, userEvent } from '@storybook/testing-library'; -import { AccountForm } from './AccountForm'; +import { AccountForm } from './AccountFormInteractions'; export default { - title: 'Addons/Interactions/AccountForm', + title: 'Addons/Interactions/Examples/AccountForm', component: AccountForm, parameters: { layout: 'centered', diff --git a/addons/interactions/src/components/AccountForm/AccountForm.tsx b/addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.tsx similarity index 100% rename from addons/interactions/src/components/AccountForm/AccountForm.tsx rename to addons/interactions/src/examples/AccountFormInteractions/AccountFormInteractions.tsx diff --git a/addons/interactions/src/Examples.stories.tsx b/addons/interactions/src/examples/Examples.stories.tsx similarity index 100% rename from addons/interactions/src/Examples.stories.tsx rename to addons/interactions/src/examples/Examples.stories.tsx From 890d94a4e101af83785f3b8e698ed47463e4fc92 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 10:52:11 +0200 Subject: [PATCH 006/266] Stories for step function --- .../components/InteractionsPanel.stories.tsx | 2 +- .../src/components/MethodCall.stories.tsx | 21 ++++++++++++ addons/interactions/src/mocks/index.ts | 33 +++++++++++-------- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/addons/interactions/src/components/InteractionsPanel.stories.tsx b/addons/interactions/src/components/InteractionsPanel.stories.tsx index 2d6e088674be..f46faeca93cd 100644 --- a/addons/interactions/src/components/InteractionsPanel.stories.tsx +++ b/addons/interactions/src/components/InteractionsPanel.stories.tsx @@ -120,7 +120,7 @@ export const Failed: Story = { }, }; -export const WithDebuggingDisabled: Story = { +export const NoDebugger: Story = { args: { controlStates: { ...SubnavStories.args.controlStates, debugger: false } }, }; diff --git a/addons/interactions/src/components/MethodCall.stories.tsx b/addons/interactions/src/components/MethodCall.stories.tsx index b65001b4e1cb..953a9e6adbb6 100644 --- a/addons/interactions/src/components/MethodCall.stories.tsx +++ b/addons/interactions/src/components/MethodCall.stories.tsx @@ -57,6 +57,7 @@ export const Args = () => ( /> + @@ -99,6 +100,7 @@ const calls: Call[] = [ { cursor: 0, id: '1', + ancestors: [], path: ['screen'], method: 'getByText', storyId: 'kind--story', @@ -109,6 +111,7 @@ const calls: Call[] = [ { cursor: 1, id: '2', + ancestors: [], path: ['userEvent'], method: 'click', storyId: 'kind--story', @@ -119,6 +122,7 @@ const calls: Call[] = [ { cursor: 2, id: '3', + ancestors: [], path: [], method: 'expect', storyId: 'kind--story', @@ -129,6 +133,7 @@ const calls: Call[] = [ { cursor: 3, id: '4', + ancestors: [], path: [{ __callId__: '3' }, 'not'], method: 'toBe', storyId: 'kind--story', @@ -139,6 +144,7 @@ const calls: Call[] = [ { cursor: 4, id: '5', + ancestors: [], path: ['jest'], method: 'fn', storyId: 'kind--story', @@ -149,6 +155,7 @@ const calls: Call[] = [ { cursor: 5, id: '6', + ancestors: [], path: [], method: 'expect', storyId: 'kind--story', @@ -159,6 +166,7 @@ const calls: Call[] = [ { cursor: 6, id: '7', + ancestors: [], path: ['expect'], method: 'stringMatching', storyId: 'kind--story', @@ -169,6 +177,7 @@ const calls: Call[] = [ { cursor: 7, id: '8', + ancestors: [], path: [{ __callId__: '6' }, 'not'], method: 'toHaveBeenCalledWith', storyId: 'kind--story', @@ -182,6 +191,17 @@ const calls: Call[] = [ interceptable: false, retain: false, }, + { + cursor: 8, + id: '9', + ancestors: [], + path: [], + method: 'step', + storyId: 'kind--story', + args: ['Custom step label', { __function__: { name: '' } }], + interceptable: true, + retain: false, + }, ]; const callsById = calls.reduce((acc, call) => { @@ -189,6 +209,7 @@ const callsById = calls.reduce((acc, call) => { return acc; }, new Map()); +export const Step = () => ; export const Simple = () => ; export const Nested = () => ; export const Chained = () => ; diff --git a/addons/interactions/src/mocks/index.ts b/addons/interactions/src/mocks/index.ts index 61600cccb4c0..14066c7a0149 100644 --- a/addons/interactions/src/mocks/index.ts +++ b/addons/interactions/src/mocks/index.ts @@ -3,11 +3,23 @@ import { CallStates, Call } from '@storybook/instrumenter'; export const getCalls = (finalStatus: CallStates) => { const calls: Call[] = [ { - id: 'story--id [3] within', + id: 'story--id [3] step', storyId: 'story--id', - cursor: 3, + cursor: 1, ancestors: [], path: [], + method: 'step', + args: ['Click button', { __function__: { name: '' } }], + interceptable: true, + retain: false, + status: CallStates.DONE, + }, + { + id: 'story--id [3] step [1] within', + storyId: 'story--id', + cursor: 3, + ancestors: ['story--id [3] step'], + path: [], method: 'within', args: [{ __element__: { localName: 'div', id: 'root' } }], interceptable: false, @@ -15,11 +27,11 @@ export const getCalls = (finalStatus: CallStates) => { status: CallStates.DONE, }, { - id: 'story--id [4] findByText', + id: 'story--id [3] step [2] findByText', storyId: 'story--id', cursor: 4, - ancestors: [], - path: [{ __callId__: 'story--id [3] within' }], + ancestors: ['story--id [3] step'], + path: [{ __callId__: 'story--id [3] step [1] within' }], method: 'findByText', args: ['Click'], interceptable: true, @@ -27,10 +39,10 @@ export const getCalls = (finalStatus: CallStates) => { status: CallStates.DONE, }, { - id: 'story--id [5] click', + id: 'story--id [3] step [3] click', storyId: 'story--id', cursor: 5, - ancestors: [], + ancestors: ['story--id [3] step'], path: ['userEvent'], method: 'click', args: [{ __element__: { localName: 'button', innerText: 'Click' } }], @@ -127,9 +139,4 @@ export const getCalls = (finalStatus: CallStates) => { export const getInteractions = (finalStatus: CallStates) => getCalls(finalStatus) .filter((call) => call.interceptable) - .map((call, _, calls) => ({ - ...call, - childCallIds: calls.filter((c) => c.parentId === call.id).map((c) => c.id), - isCollapsed: false, - toggleCollapsed: () => {}, - })); + .map((call) => ({ ...call, childCallIds: [], isCollapsed: false, toggleCollapsed: () => {} })); From b64677450b9e8f0371fe9309daef4a2fff066bff Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 11:30:48 +0200 Subject: [PATCH 007/266] Document step function --- docs/essentials/interactions.md | 3 +-- ...torybook-interactions-play-function.js.mdx | 15 ++++++++----- ...torybook-interactions-step-function.js.mdx | 14 ++++++++++++ docs/writing-tests/interaction-testing.md | 20 +++++++++++++++++- .../storybook-addon-interactions-steps.png | Bin 0 -> 96863 bytes 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 docs/snippets/common/storybook-interactions-step-function.js.mdx create mode 100644 docs/writing-tests/storybook-addon-interactions-steps.png diff --git a/docs/essentials/interactions.md b/docs/essentials/interactions.md index a46bcc13b11a..a5b47696596a 100644 --- a/docs/essentials/interactions.md +++ b/docs/essentials/interactions.md @@ -47,7 +47,6 @@ Next, update [`.storybook/main.js`](../configure/overview.md#configure-story-ren - Now when you run Storybook, the Interactions addon will be enabled. ![Storybook Interactions installed and registered](./addon-interactions-installed-registered.png) @@ -68,7 +67,7 @@ Make sure to import the Storybook wrappers for Jest and Testing Library rather t -The above example uses the `canvasElement` to scope your element queries to the current story. It's essential if you want your play functions to eventually be compatible with Storybook Docs, which renders multiple components on the same page. +The above example uses the `canvasElement` to scope your element queries to the current story. It's essential if you want your play functions to eventually be compatible with Storybook Docs, which renders multiple components on the same page. Additionally, the `step` function can be used to create labeled groups of interactions. While you can refer to the [Testing Library documentation](https://testing-library.com/docs/) for details on how to use it, there's an important detail that's different when using the Storybook wrapper: **method invocations must be `await`-ed**. It allows you to step back and forth through your interactions using the debugger. diff --git a/docs/snippets/common/storybook-interactions-play-function.js.mdx b/docs/snippets/common/storybook-interactions-play-function.js.mdx index b449defce278..7da126b7ca54 100644 --- a/docs/snippets/common/storybook-interactions-play-function.js.mdx +++ b/docs/snippets/common/storybook-interactions-play-function.js.mdx @@ -2,7 +2,7 @@ // MyForm.stories.js import { expect } from '@storybook/jest'; import { userEvent, waitFor, within } from '@storybook/testing-library'; -import { MyForm } from './MyForm' +import { MyForm } from './MyForm'; export default { title: 'MyForm', @@ -15,12 +15,17 @@ export default { const Template = (args) => ; const Submitted = Template.bind({}); -Submitted.play = async ({ args, canvasElement }) => { +Submitted.play = async ({ args, canvasElement, step }) => { const canvas = within(canvasElement); - await userEvent.type(canvas.getByTestId('email'), 'hi@example.com'); - await userEvent.type(canvas.getByTestId('password'), 'supersecret'); - await userEvent.click(canvas.getByRole('button')); + await step('Enter credentials', async () => { + await userEvent.type(canvas.getByTestId('email'), 'hi@example.com'); + await userEvent.type(canvas.getByTestId('password'), 'supersecret'); + }); + + await step('Submit form', async () => { + await userEvent.click(canvas.getByRole('button')); + }); await waitFor(() => expect(args.onSubmit).toHaveBeenCalled()); }; diff --git a/docs/snippets/common/storybook-interactions-step-function.js.mdx b/docs/snippets/common/storybook-interactions-step-function.js.mdx new file mode 100644 index 000000000000..7ef59f7d482c --- /dev/null +++ b/docs/snippets/common/storybook-interactions-step-function.js.mdx @@ -0,0 +1,14 @@ +```js +Submitted.play = async ({ args, canvasElement, step }) => { + const canvas = within(canvasElement); + + await step('Enter email and password', async () => { + await userEvent.type(canvas.getByTestId('email'), 'hi@example.com'); + await userEvent.type(canvas.getByTestId('password'), 'supersecret'); + }); + + await step('Submit form', async () => { + await userEvent.click(canvas.getByRole('button')); + }); +}; +``` diff --git a/docs/writing-tests/interaction-testing.md b/docs/writing-tests/interaction-testing.md index d4d74ea0ca48..9d13650d8c4a 100644 --- a/docs/writing-tests/interaction-testing.md +++ b/docs/writing-tests/interaction-testing.md @@ -81,7 +81,7 @@ Once the story loads in the UI, it simulates the user's behavior and verifies th /> -## API for user-events +### API for user-events Under the hood, Storybook’s interaction addon mirrors Testing Library’s [`user-events`](https://testing-library.com/docs/user-event/intro/) API. If you’re familiar with [Testing Library](https://testing-library.com/), you should be at home in Storybook. @@ -99,6 +99,24 @@ Below is an abridged API for user-event. For more, check out the [official user- | `type` | Writes text inside inputs, or textareas
`userEvent.type(await within(canvasElement).getByRole('my-input'),'Some text');` | | `unhover` | Unhovers out of element
`userEvent.unhover(await within(canvasElement).getByLabelText(/Example/i));` | +### Group interactions with the `step` function + +For complex flows, it can be worthwhile to group sets of related interactions together using the `step` function. This allows you to provide a custom label that describes a set of interactions: + + + + + + + +This will show your interactions nested in a collapsible group: + +![Interaction testing with labeled steps](./storybook-addon-interactions-steps.png) + ### Interactive debugger If you check your interactions panel, you'll see the step-by-step flow. It also offers a handy set of UI controls to pause, resume, rewind, and step through each interaction. diff --git a/docs/writing-tests/storybook-addon-interactions-steps.png b/docs/writing-tests/storybook-addon-interactions-steps.png new file mode 100644 index 0000000000000000000000000000000000000000..0438e58678d4c3fd86547324e9a428f91a323e09 GIT binary patch literal 96863 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%0AF+G5N8_5opPl^rx( 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 ToJ{=#_)=GfJgHKA5&pjbKod Date: Fri, 24 Jun 2022 11:50:09 +0200 Subject: [PATCH 008/266] Concrete type for playContext --- lib/preview-web/src/StoryRender.ts | 12 +++++++----- lib/store/src/types.ts | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index d4e9eea8ac68..cfcec1b1c3b3 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -62,6 +62,11 @@ export type RenderContextCallbacks = Pick< export const PREPARE_ABORTED = new Error('prepareAborted'); +const { step } = instrument( + { step: async (label: string, callback: () => Promise | void) => callback() }, + { intercept: true } +); + export type RenderType = 'story' | 'docs'; export interface Render { type: RenderType; @@ -227,6 +232,7 @@ export class StoryRender implements Render unboundStoryFn(renderStoryContext), unboundStoryFn, @@ -243,12 +249,8 @@ export class StoryRender implements Render any) => callback() }, - { intercept: true } - ); await this.runPhase(abortSignal, 'playing', async () => - playFunction({ ...renderContext.storyContext, step }) + playFunction(renderContext.playContext) ); await this.runPhase(abortSignal, 'played'); } catch (error) { diff --git a/lib/store/src/types.ts b/lib/store/src/types.ts index c84bdd451807..6b5570b5e60d 100644 --- a/lib/store/src/types.ts +++ b/lib/store/src/types.ts @@ -100,6 +100,7 @@ export declare type RenderContext void; showException: (err: Error) => void; forceRemount: boolean; + playContext: StoryContext & { step: () => Promise | void }; storyContext: StoryContext; storyFn: PartialStoryFn; unboundStoryFn: LegacyStoryFn; From 7c92060bb6765e1f52efac59071edd87c9ce6eb4 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 11:51:58 +0200 Subject: [PATCH 009/266] Drop needless async keyword --- lib/preview-web/src/StoryRender.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index cfcec1b1c3b3..66ab8618ef37 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -63,7 +63,7 @@ export type RenderContextCallbacks = Pick< export const PREPARE_ABORTED = new Error('prepareAborted'); const { step } = instrument( - { step: async (label: string, callback: () => Promise | void) => callback() }, + { step: (label: string, callback: () => Promise | void) => callback() }, { intercept: true } ); From 1b58c18662d9cddbf6291ddca40d3fdedcb9e893 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 11:55:32 +0200 Subject: [PATCH 010/266] Remove unused import --- addons/interactions/src/components/MethodCall.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interactions/src/components/MethodCall.tsx b/addons/interactions/src/components/MethodCall.tsx index bd4ecd8a3174..c5e62c0caf69 100644 --- a/addons/interactions/src/components/MethodCall.tsx +++ b/addons/interactions/src/components/MethodCall.tsx @@ -1,6 +1,6 @@ import { ObjectInspector } from '@devtools-ds/object-inspector'; import { Call, CallRef, ElementRef } from '@storybook/instrumenter'; -import { color, useTheme } from '@storybook/theming'; +import { useTheme } from '@storybook/theming'; import React, { Fragment, ReactElement } from 'react'; const colorsLight = { From 5f5009e928bb091c4e01e682d3dd8f88a07caebb Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 24 Jun 2022 12:03:00 +0200 Subject: [PATCH 011/266] Fix step type definition --- lib/preview-web/src/Preview.tsx | 8 +++----- lib/preview-web/src/PreviewWeb.tsx | 4 +--- lib/preview-web/src/StoryRender.ts | 4 +++- lib/store/src/types.ts | 4 +++- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/preview-web/src/Preview.tsx b/lib/preview-web/src/Preview.tsx index a179c0229399..e893e6d79124 100644 --- a/lib/preview-web/src/Preview.tsx +++ b/lib/preview-web/src/Preview.tsx @@ -26,13 +26,11 @@ import { RenderToDOM, } from '@storybook/store'; -import { StoryRender } from './StoryRender'; +import { MaybePromise, StoryRender } from './StoryRender'; import { DocsRender } from './DocsRender'; const { fetch } = global; -type MaybePromise = Promise | T; - const STORY_INDEX_PATH = './index.json'; export class Preview { @@ -114,7 +112,7 @@ export class Preview { Perhaps it needs to be upgraded for Storybook 6.4? - More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field + More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field `); } return projectAnnotations; @@ -341,7 +339,7 @@ export class Preview { // In v6 mode, if your preview.js throws, we never get a chance to initialize the preview // or store, and the error is simply logged to the browser console. This is the best we can do throw new Error(dedent`Failed to initialize Storybook. - + Do you have an error in your \`preview.js\`? Check your Storybook's browser console for errors.`); } diff --git a/lib/preview-web/src/PreviewWeb.tsx b/lib/preview-web/src/PreviewWeb.tsx index 8cf9ea0eb8ba..b677bc6a745d 100644 --- a/lib/preview-web/src/PreviewWeb.tsx +++ b/lib/preview-web/src/PreviewWeb.tsx @@ -35,7 +35,7 @@ import { Preview } from './Preview'; import { UrlStore } from './UrlStore'; import { WebView } from './WebView'; -import { PREPARE_ABORTED, Render, StoryRender } from './StoryRender'; +import { MaybePromise, PREPARE_ABORTED, Render, StoryRender } from './StoryRender'; import { DocsRender } from './DocsRender'; const { window: globalWindow } = global; @@ -45,8 +45,6 @@ function focusInInput(event: Event) { return /input|textarea/i.test(target.tagName) || target.getAttribute('contenteditable') !== null; } -type MaybePromise = Promise | T; - export class PreviewWeb extends Preview { urlStore: UrlStore; diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index 66ab8618ef37..aaddd813ae42 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -24,6 +24,8 @@ import { instrument } from '@storybook/instrumenter'; const { AbortController } = global; +export type MaybePromise = Promise | T; + export type RenderPhase = | 'preparing' | 'loading' @@ -63,7 +65,7 @@ export type RenderContextCallbacks = Pick< export const PREPARE_ABORTED = new Error('prepareAborted'); const { step } = instrument( - { step: (label: string, callback: () => Promise | void) => callback() }, + { step: (label: string, callback: () => MaybePromise) => callback() }, { intercept: true } ); diff --git a/lib/store/src/types.ts b/lib/store/src/types.ts index 6b5570b5e60d..6e5fa497a8e8 100644 --- a/lib/store/src/types.ts +++ b/lib/store/src/types.ts @@ -100,7 +100,9 @@ export declare type RenderContext void; showException: (err: Error) => void; forceRemount: boolean; - playContext: StoryContext & { step: () => Promise | void }; + playContext: StoryContext & { + step: (label: string, callback: () => MaybePromise) => MaybePromise; + }; storyContext: StoryContext; storyFn: PartialStoryFn; unboundStoryFn: LegacyStoryFn; From c2ce1702b21fed9aa5de74d0c4345f25e850bea3 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 28 Jun 2022 11:25:47 +0200 Subject: [PATCH 012/266] Fix step function injection --- lib/preview-web/src/StoryRender.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index aaddd813ae42..f4e064457c16 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -57,6 +57,14 @@ function serializeError(error: any) { } } +function createStepFunction() { + const { step } = instrument( + { step: (label: string, callback: () => MaybePromise) => callback() }, + { intercept: true } + ); + return step; +} + export type RenderContextCallbacks = Pick< RenderContext, 'showMain' | 'showError' | 'showException' @@ -64,11 +72,6 @@ export type RenderContextCallbacks = Pick< export const PREPARE_ABORTED = new Error('prepareAborted'); -const { step } = instrument( - { step: (label: string, callback: () => MaybePromise) => callback() }, - { intercept: true } -); - export type RenderType = 'story' | 'docs'; export interface Render { type: RenderType; @@ -90,6 +93,8 @@ export class StoryRender implements Render MaybePromise) => void; + private canvasElement?: HTMLElement; private notYetRendered = true; @@ -110,6 +115,7 @@ export class StoryRender implements Render ) { this.abortController = createController(); + this.stepFunction = createStepFunction(); // Allow short-circuiting preparing if we happen to already // have the story (this is used by docs mode) @@ -234,7 +240,7 @@ export class StoryRender implements Render unboundStoryFn(renderStoryContext), unboundStoryFn, From be40bcee0b3056a17bb053aa75360e43aea00dc0 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 28 Jun 2022 11:27:27 +0200 Subject: [PATCH 013/266] Namespace events to storybook --- lib/instrumenter/src/instrumenter.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index dc9a1f0b2a0e..b7994b8f35c5 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -13,13 +13,13 @@ import global from 'global'; import { Call, CallRef, CallStates, ControlStates, LogItem, Options, State } from './types'; export const EVENTS = { - CALL: 'instrumenter/call', - SYNC: 'instrumenter/sync', - START: 'instrumenter/start', - BACK: 'instrumenter/back', - GOTO: 'instrumenter/goto', - NEXT: 'instrumenter/next', - END: 'instrumenter/end', + CALL: 'storybook/instrumenter/call', + SYNC: 'storybook/instrumenter/sync', + START: 'storybook/instrumenter/start', + BACK: 'storybook/instrumenter/back', + GOTO: 'storybook/instrumenter/goto', + NEXT: 'storybook/instrumenter/next', + END: 'storybook/instrumenter/end', }; type PatchedObj = { From 09a302bd22dcde79683024f3d1e49502c1748fa8 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 28 Jun 2022 12:47:25 +0200 Subject: [PATCH 014/266] Fix tests --- lib/instrumenter/src/instrumenter.test.ts | 2 +- lib/preview-web/src/PreviewWeb.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.test.ts b/lib/instrumenter/src/instrumenter.test.ts index 277be46a0167..a0a1a0e19d22 100644 --- a/lib/instrumenter/src/instrumenter.test.ts +++ b/lib/instrumenter/src/instrumenter.test.ts @@ -227,7 +227,7 @@ describe('Instrumenter', () => { expect(callSpy).toHaveBeenCalledWith( expect.objectContaining({ id: 'kind--story [0] fn1 [0] fn2 [0] fn3', - ancestors: ['kind--story [0] fn1 [0] fn2'], + ancestors: ['kind--story [0] fn1', 'kind--story [0] fn1 [0] fn2'], }) ); expect(callSpy).toHaveBeenCalledWith( diff --git a/lib/preview-web/src/PreviewWeb.test.ts b/lib/preview-web/src/PreviewWeb.test.ts index ac18a122a429..cfa0ddf28870 100644 --- a/lib/preview-web/src/PreviewWeb.test.ts +++ b/lib/preview-web/src/PreviewWeb.test.ts @@ -521,7 +521,7 @@ describe('PreviewWeb', () => { Perhaps it needs to be upgraded for Storybook 6.4? - More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field ] + More info: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field] `); }); From 640072e9bdfd01904260fc2f3776d1cb6d778abc Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 8 Jul 2022 10:18:35 +0200 Subject: [PATCH 015/266] Pass playContext to step function --- lib/preview-web/src/StoryRender.ts | 28 +++++++++++++++++----------- lib/store/src/types.ts | 12 +++++++++--- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index f4e064457c16..83687a161723 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -9,6 +9,7 @@ import { import { Story, RenderContext, + PlayContext, StoryStore, RenderToDOM, TeardownRenderToDOM, @@ -48,6 +49,20 @@ function createController(): AbortController { } as AbortController; } +function createStepFunction(context: PlayContext) { + const { step } = instrument( + { step: (label: string, play: (context: PlayContext) => MaybePromise) => play(context) }, + { intercept: true } + ); + return step; +} + +function createPlayContext(storyContext: StoryContext): PlayContext { + const playContext = { ...storyContext } as any; + playContext.step = createStepFunction(playContext); + return playContext; +} + function serializeError(error: any) { try { const { name = 'Error', message = String(error), stack } = error; @@ -57,14 +72,6 @@ function serializeError(error: any) { } } -function createStepFunction() { - const { step } = instrument( - { step: (label: string, callback: () => MaybePromise) => callback() }, - { intercept: true } - ); - return step; -} - export type RenderContextCallbacks = Pick< RenderContext, 'showMain' | 'showError' | 'showException' @@ -93,7 +100,7 @@ export class StoryRender implements Render MaybePromise) => void; + private stepFunction?: PlayContext['step']; private canvasElement?: HTMLElement; @@ -115,7 +122,6 @@ export class StoryRender implements Render ) { this.abortController = createController(); - this.stepFunction = createStepFunction(); // Allow short-circuiting preparing if we happen to already // have the story (this is used by docs mode) @@ -240,7 +246,7 @@ export class StoryRender implements Render unboundStoryFn(renderStoryContext), unboundStoryFn, diff --git a/lib/store/src/types.ts b/lib/store/src/types.ts index db206b3e95af..998cbc1bf067 100644 --- a/lib/store/src/types.ts +++ b/lib/store/src/types.ts @@ -106,15 +106,21 @@ export type BoundStory = Story; }; +export declare type PlayContext = + StoryContext & { + step: ( + name: string, + play: (context: PlayContext) => MaybePromise + ) => MaybePromise; + }; + export declare type RenderContext = StoryIdentifier & { showMain: () => void; showError: (error: { title: string; description: string }) => void; showException: (err: Error) => void; forceRemount: boolean; - playContext: StoryContext & { - step: (label: string, callback: () => MaybePromise) => MaybePromise; - }; + playContext: PlayContext; storyContext: StoryContext; storyFn: PartialStoryFn; unboundStoryFn: LegacyStoryFn; From 26ec0e6e3d786404cb24ef089b3f9e71ad22fba8 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 8 Jul 2022 10:19:48 +0200 Subject: [PATCH 016/266] Fix signature --- lib/preview-web/src/StoryRender.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/preview-web/src/StoryRender.ts b/lib/preview-web/src/StoryRender.ts index 83687a161723..32bff25cb611 100644 --- a/lib/preview-web/src/StoryRender.ts +++ b/lib/preview-web/src/StoryRender.ts @@ -51,7 +51,7 @@ function createController(): AbortController { function createStepFunction(context: PlayContext) { const { step } = instrument( - { step: (label: string, play: (context: PlayContext) => MaybePromise) => play(context) }, + { step: (name: string, play: (context: PlayContext) => MaybePromise) => play(context) }, { intercept: true } ); return step; From 123fb0978d036657c13f55bf62aee23cbf39304d Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Fri, 29 Jul 2022 18:47:46 +0100 Subject: [PATCH 017/266] Additional links updated --- README.md | 46 +++++++++---------- code/addons/controls/README.md | 2 +- code/addons/docs/README.md | 24 +++++----- code/addons/docs/docs/docspage.md | 4 +- code/addons/docs/docs/props-tables.md | 24 +++++----- code/addons/docs/docs/recipes.md | 2 +- code/addons/essentials/README.md | 2 + .../src/stories/addon-docs.stories.mdx | 2 +- code/frameworks/angular/README.md | 2 +- code/frameworks/ember/README.md | 2 +- code/frameworks/html-webpack5/README.md | 2 +- code/frameworks/preact-webpack5/README.md | 2 +- code/frameworks/react-webpack5/README.md | 2 +- code/frameworks/server-webpack5/README.md | 2 +- code/frameworks/svelte-webpack5/README.md | 2 +- code/frameworks/vue-webpack5/README.md | 2 +- code/frameworks/vue3-webpack5/README.md | 2 +- .../web-components-webpack5/README.md | 2 +- .../blocks/src/components/Preview.stories.tsx | 2 +- code/lib/cli/README.md | 2 +- code/lib/source-loader/README.md | 2 +- 21 files changed, 67 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 1ff40b65251e..94ac5cb4c9f1 100644 --- a/README.md +++ b/README.md @@ -95,44 +95,44 @@ For additional help, join us in the [Storybook Discord](https://discord.gg/story | Framework | Demo | | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| [React](app/react) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/react/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/official-storybook/?path=/story/*) | [![React](https://img.shields.io/npm/dm/@storybook/react?style=flat-square&color=eee)](app/react) | -| [Vue](app/vue) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/vue/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/vue-kitchen-sink/) | [![Vue](https://img.shields.io/npm/dm/@storybook/vue?style=flat-square&color=eee)](app/vue) | -| [Angular](app/angular) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/angular/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/angular-cli/) | [![Angular](https://img.shields.io/npm/dm/@storybook/angular?style=flat-square&color=eee)](app/angular) | -| [Web components](app/web-components) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/web-components/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/web-components-kitchen-sink/) | [![Svelte](https://img.shields.io/npm/dm/@storybook/web-components?style=flat-square&color=eee)](app/web-components) | +| [React](code/frameworks/react-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/react/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/official-storybook/?path=/story/*) | [![React](https://img.shields.io/npm/dm/@storybook/react?style=flat-square&color=eee)](code/frameworks/react-webpack5/) | +| [Vue](code/frameworks/vue-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/vue/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/vue-kitchen-sink/) | [![Vue](https://img.shields.io/npm/dm/@storybook/vue?style=flat-square&color=eee)](code/frameworks/vue-webpack5/) | +| [Angular](code/frameworks/angular/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/angular/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/angular-cli/) | [![Angular](https://img.shields.io/npm/dm/@storybook/angular?style=flat-square&color=eee)](code/frameworks/angular/) | +| [Web components](code/frameworks/web-components-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/web-components/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/web-components-kitchen-sink/) | [![Svelte](https://img.shields.io/npm/dm/@storybook/web-components?style=flat-square&color=eee)](code/frameworks/web-components-webpack5/) | | [React Native](https://github.com/storybookjs/react-native) | - | [![React Native](https://img.shields.io/npm/dm/@storybook/react-native?style=flat-square&color=eee)](https://github.com/storybookjs/react-native) | -| [HTML](app/html) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/html/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/html-kitchen-sink/) | [![HTML](https://img.shields.io/npm/dm/@storybook/html?style=flat-square&color=eee)](app/html) | -| [Ember](app/ember) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/ember/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/ember-cli/) | [![Ember](https://img.shields.io/npm/dm/@storybook/ember?style=flat-square&color=eee)](app/ember) | -| [Svelte](app/svelte) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/svelte/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/svelte-kitchen-sink/) | [![Svelte](https://img.shields.io/npm/dm/@storybook/svelte?style=flat-square&color=eee)](app/svelte) | -| [Preact](app/preact) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/preact/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/preact-kitchen-sink/) | [![Preact](https://img.shields.io/npm/dm/@storybook/preact?style=flat-square&color=eee)](app/preact) | +| [HTML](code/frameworks/html-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/html/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/html-kitchen-sink/) | [![HTML](https://img.shields.io/npm/dm/@storybook/html?style=flat-square&color=eee)](code/frameworks/html-webpack5/) | +| [Ember](code/frameworks/ember/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/ember/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/ember-cli/) | [![Ember](https://img.shields.io/npm/dm/@storybook/ember?style=flat-square&color=eee)](code/frameworks/ember/) | +| [Svelte](code/frameworks/svelte-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/svelte/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/svelte-kitchen-sink/) | [![Svelte](https://img.shields.io/npm/dm/@storybook/svelte?style=flat-square&color=eee)](code/frameworks/svelte-webpack5/) | +| [Preact](code/frameworks/preact-webpack5/) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/preact/latest?style=flat-square&color=blue&label)](https://storybookjs.netlify.com/preact-kitchen-sink/) | [![Preact](https://img.shields.io/npm/dm/@storybook/preact?style=flat-square&color=eee)](code/frameworks/preact-webpack5/) | | [Marionette.js](https://github.com/storybookjs/marionette) | - | [![Marionette.js](https://img.shields.io/npm/dm/@storybook/marionette?style=flat-square&color=eee)](https://github.com/storybookjs/marionette) | | [Android, iOS, Flutter](https://github.com/storybookjs/native) | [![Storybook demo](https://img.shields.io/npm/v/@storybook/native/latest?style=flat-square&color=blue&label)](https://storybookjs.github.io/native/@storybook/native-flutter-example/index.html) | [![Native](https://img.shields.io/npm/dm/@storybook/native?style=flat-square&color=eee)](https://github.com/storybookjs/native) | ### Sub Projects -- [CLI](lib/cli) - Streamlined installation for a variety of app types -- [examples](examples) - Code examples to illustrate different Storybook use cases +- [CLI](code/lib/cli) - Streamlined installation for a variety of app types +- [examples](code/examples) - Code examples to illustrate different Storybook use cases ### Addons | Addons | | | ------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| [a11y](addons/a11y/) | Test components for user accessibility in Storybook | -| [actions](addons/actions/) | Log actions as users interact with components in the Storybook UI | -| [backgrounds](addons/backgrounds/) | Let users choose backgrounds in the Storybook UI | +| [a11y](code/addons/a11y/) | Test components for user accessibility in Storybook | +| [actions](code/addons/actions/) | Log actions as users interact with components in the Storybook UI | +| [backgrounds](code/addons/backgrounds/) | Let users choose backgrounds in the Storybook UI | | [cssresources](https://github.com/storybookjs/addon-cssresources) | Dynamically add/remove css resources to the component iframe | | [design assets](https://github.com/storybookjs/addon-design-assets) | View images, videos, weblinks alongside your story | -| [docs](addons/docs/) | Add high quality documentation to your components | +| [docs](code/addons/docs/) | Add high quality documentation to your components | | [events](https://github.com/storybookjs/addon-events) | Interactively fire events to components that respond to EventEmitter | | [google-analytics](https://github.com/storybookjs/addon-google-analytics) | Reports google analytics on stories | | [graphql](https://github.com/storybookjs/addon-graphql) | Query a GraphQL server within Storybook stories | -| [jest](addons/jest/) | View the results of components' unit tests in Storybook | -| [links](addons/links/) | Create links between stories | +| [jest](code/addons/jest/) | View the results of components' unit tests in Storybook | +| [links](code/addons/links/) | Create links between stories | | [query params](https://github.com/storybookjs/addon-queryparams) | Mock query params | -| [storyshots](addons/storyshots/) | Snapshot testing for components in Storybook | -| [storysource](addons/storysource/) | View the code of your stories within the Storybook UI | -| [viewport](addons/viewport/) | Change display sizes and layouts for responsive components using Storybook | -| [outline](addons/outline/) | Visuallly debug the CSS layout and alignment within the Storybook UI | -| [measure](addons/measure/) | Visually inspect the layout and box model within the Storybook UI | +| [storyshots](code/addons/storyshots/) | Snapshot testing for components in Storybook | +| [storysource](code/addons/storysource/) | View the code of your stories within the Storybook UI | +| [viewport](code/addons/viewport/) | Change display sizes and layouts for responsive components using Storybook | +| [outline](code/addons/outline/) | Visuallly debug the CSS layout and alignment within the Storybook UI | +| [measure](code/addons/measure/) | Visually inspect the layout and box model within the Storybook UI | See [Addon / Framework Support Table](https://storybook.js.org/docs/react/api/frameworks-feature-support) @@ -148,9 +148,9 @@ See [Addon / Framework Support Table](https://storybook.js.org/docs/react/api/fr In order to continue improving your experience, we have to eventually deprecate certain addons in favor of new, better tools. -If you're using info/notes, we highly recommend you to migrate to [docs](addons/docs/) instead, and [here is a guide](addons/docs/docs/recipes.md#migrating-from-notesinfo-addons) to help you. +If you're using info/notes, we highly recommend you to migrate to [docs](code/addons/docs/) instead, and [here is a guide](code/addons/docs/docs/recipes.md#migrating-from-notesinfo-addons) to help you. -If you're using contexts, we highly recommend you to migrate to [toolbars](https://github.com/storybookjs/storybook/tree/next/addons/toolbars) and [here is a guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-addon-contexts) to help you. +If you're using contexts, we highly recommend you to migrate to [toolbars](https://github.com/storybookjs/storybook/tree/next/code/addons/toolbars) and [here is a guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-addon-contexts) to help you. ## Badges & Presentation materials diff --git a/code/addons/controls/README.md b/code/addons/controls/README.md index ff9ffcee435e..1778633fe659 100644 --- a/code/addons/controls/README.md +++ b/code/addons/controls/README.md @@ -210,4 +210,4 @@ export const Template = (args) => ); WithSteps.play = async ({ args, canvasElement, step }) => { - step('Click button', async () => { + await step('Click button', async () => { await userEvent.click(within(canvasElement).getByRole('button')); - step('Verify submit', async () => { + await step('Verify submit', async () => { await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); }); - step('Verify result', async () => { + await step('Verify result', async () => { await expect([{ name: 'John', age: 42 }]).toEqual( expect.arrayContaining([ expect.objectContaining({ name: 'John' }), diff --git a/code/lib/store/src/csf/prepareStory.test.ts b/code/lib/store/src/csf/prepareStory.test.ts index f943f61889a5..81ae1314eab3 100644 --- a/code/lib/store/src/csf/prepareStory.test.ts +++ b/code/lib/store/src/csf/prepareStory.test.ts @@ -641,7 +641,7 @@ describe('playFunction', () => { expect(context.step).toEqual(expect.any(Function)); }); const play = jest.fn(async ({ step }) => { - step('label', stepPlay); + await step('label', stepPlay); }); const runStep = jest.fn((label, p, c) => p(c)); const { playFunction } = prepareStory( From 64c950b9c251053cab7d34e0d72d88baaca912b3 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 9 Aug 2022 14:50:14 +0200 Subject: [PATCH 074/266] Fix formatting in docs --- docs/.prettierrc | 8 +++++ ...torybook-interactions-play-function.js.mdx | 30 +++++++++---------- 2 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 docs/.prettierrc diff --git a/docs/.prettierrc b/docs/.prettierrc new file mode 100644 index 000000000000..d033feea7ad5 --- /dev/null +++ b/docs/.prettierrc @@ -0,0 +1,8 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "bracketSpacing": true, + "trailingComma": "es5", + "singleQuote": true, + "arrowParens": "always" +} diff --git a/docs/snippets/common/storybook-interactions-play-function.js.mdx b/docs/snippets/common/storybook-interactions-play-function.js.mdx index dfc5ff357e7f..dafb7dde0e51 100644 --- a/docs/snippets/common/storybook-interactions-play-function.js.mdx +++ b/docs/snippets/common/storybook-interactions-play-function.js.mdx @@ -1,39 +1,39 @@ ```js // MyForm.stories.js -import { expect } from "@storybook/jest" +import { expect } from '@storybook/jest'; -import { userEvent, waitFor, within } from "@storybook/testing-library" +import { userEvent, waitFor, within } from '@storybook/testing-library'; -import { MyForm } from "./MyForm" +import { MyForm } from './MyForm'; export default { /* 👇 The title prop is optional. * See https://storybook.js.org/docs/7.0/react/configure/overview#configure-story-loading * to learn how to generate automatic titles */ - title: "MyForm", + title: 'MyForm', component: MyForm, argTypes: { onSubmit: { action: true }, }, -} +}; export const Submitted = { play: async ({ args, canvasElement, step }) => { // Starts querying the component from its root element - const canvas = within(canvasElement) + const canvas = within(canvasElement); - await step("Enter credentials", async () => { - await userEvent.type(canvas.getByTestId("email"), "hi@example.com") - await userEvent.type(canvas.getByTestId("password"), "supersecret") - }) + await step('Enter credentials', async () => { + await userEvent.type(canvas.getByTestId('email'), 'hi@example.com'); + await userEvent.type(canvas.getByTestId('password'), 'supersecret'); + }); - await step("Submit form", async () => { - await userEvent.click(canvas.getByRole("button")) - }) + await step('Submit form', async () => { + await userEvent.click(canvas.getByRole('button')); + }); - await waitFor(() => expect(args.onSubmit).toHaveBeenCalled()) + await waitFor(() => expect(args.onSubmit).toHaveBeenCalled()); }, -} +}; ``` From 51d74a7800aa7852a324840666a782ece6d47b65 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 9 Aug 2022 15:01:36 +0200 Subject: [PATCH 075/266] Move MaybePromise to Preview.ts --- code/lib/preview-web/src/Preview.tsx | 4 +++- code/lib/preview-web/src/PreviewWeb.tsx | 4 ++-- code/lib/preview-web/src/render/StoryRender.ts | 2 -- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/lib/preview-web/src/Preview.tsx b/code/lib/preview-web/src/Preview.tsx index 6b8b9d8f7a67..c17ca1fa131b 100644 --- a/code/lib/preview-web/src/Preview.tsx +++ b/code/lib/preview-web/src/Preview.tsx @@ -26,7 +26,7 @@ import { RenderToDOM, } from '@storybook/store'; -import { MaybePromise, StoryRender } from './render/StoryRender'; +import { StoryRender } from './render/StoryRender'; import { TemplateDocsRender } from './render/TemplateDocsRender'; import { StandaloneDocsRender } from './render/StandaloneDocsRender'; @@ -34,6 +34,8 @@ const { fetch } = global; const STORY_INDEX_PATH = './index.json'; +export type MaybePromise = Promise | T; + export class Preview { serverChannel?: Channel; diff --git a/code/lib/preview-web/src/PreviewWeb.tsx b/code/lib/preview-web/src/PreviewWeb.tsx index a89175ebac8e..3178ae7611fe 100644 --- a/code/lib/preview-web/src/PreviewWeb.tsx +++ b/code/lib/preview-web/src/PreviewWeb.tsx @@ -30,11 +30,11 @@ import type { WebProjectAnnotations, } from '@storybook/store'; -import { Preview } from './Preview'; +import { MaybePromise, Preview } from './Preview'; import { UrlStore } from './UrlStore'; import { WebView } from './WebView'; -import { MaybePromise, PREPARE_ABORTED, StoryRender } from './render/StoryRender'; +import { PREPARE_ABORTED, StoryRender } from './render/StoryRender'; import { TemplateDocsRender } from './render/TemplateDocsRender'; import { StandaloneDocsRender } from './render/StandaloneDocsRender'; diff --git a/code/lib/preview-web/src/render/StoryRender.ts b/code/lib/preview-web/src/render/StoryRender.ts index a13fdcb65082..a59c8e909aa6 100644 --- a/code/lib/preview-web/src/render/StoryRender.ts +++ b/code/lib/preview-web/src/render/StoryRender.ts @@ -25,8 +25,6 @@ import { Render, RenderType } from './Render'; const { AbortController } = global; -export type MaybePromise = Promise | T; - export type RenderPhase = | 'preparing' | 'loading' From f46a08ca7646c762517fd26fa05c57173984043b Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 9 Aug 2022 15:02:11 +0200 Subject: [PATCH 076/266] Drop unused stepFunction property and its type definition --- code/lib/preview-web/src/render/StoryRender.ts | 3 --- code/lib/store/src/types.ts | 8 -------- 2 files changed, 11 deletions(-) diff --git a/code/lib/preview-web/src/render/StoryRender.ts b/code/lib/preview-web/src/render/StoryRender.ts index a59c8e909aa6..70b6b8fd86a0 100644 --- a/code/lib/preview-web/src/render/StoryRender.ts +++ b/code/lib/preview-web/src/render/StoryRender.ts @@ -9,7 +9,6 @@ import { import { Story, RenderContext, - PlayContext, StoryStore, RenderToDOM, TeardownRenderToDOM, @@ -72,8 +71,6 @@ export class StoryRender implements Render = Story; }; -export declare type PlayContext = - StoryContext & { - step: ( - name: string, - play: (context: PlayContext) => MaybePromise - ) => MaybePromise; - }; - export declare type RenderContext = StoryIdentifier & { showMain: () => void; From 46f21be082da4949f775bad0a3d50bdd67e9a0d6 Mon Sep 17 00:00:00 2001 From: luciana-mendonca Date: Tue, 9 Aug 2022 17:18:58 +0200 Subject: [PATCH 077/266] build(addon-links): use ts-up to build addon-links --- code/addons/links/manager.js | 2 +- code/addons/links/package.json | 44 ++++++++++++++++++++++++++++++---- code/addons/links/preview.js | 2 +- code/addons/links/react.js | 2 +- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/code/addons/links/manager.js b/code/addons/links/manager.js index 4e287d25b151..8a2eae4ffce1 100644 --- a/code/addons/links/manager.js +++ b/code/addons/links/manager.js @@ -1 +1 @@ -import './dist/esm/manager'; +import './dist/manager'; diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 24ee3cb9dca8..c4d835e2aa92 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -21,9 +21,37 @@ "url": "https://opencollective.com/storybook" }, "license": "MIT", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "types": "dist/types/index.d.ts", + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + }, + "./manager": { + "require": "./dist/manager.js", + "import": "./dist/manager.mjs", + "types": "./dist/manager.d.ts" + }, + "./preview": { + "require": "./dist/preview.js", + "import": "./dist/preview.mjs", + "types": "./dist/preview.d.ts" + }, + "./react": { + "require": "./dist/react/index.js", + "import": "./dist/react/index.mjs", + "types": "./dist/react.d.ts" + }, + "./register.js": { + "require": "./dist/manager.js", + "import": "./dist/manager.mjs", + "types": "./dist/manager.d.ts" + }, + "./package.json": "./package.json" + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", "files": [ "dist/**/*", "README.md", @@ -32,7 +60,7 @@ ], "scripts": { "check": "tsc --noEmit", - "prepare": "node ../../../scripts/prepare.js" + "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { "@storybook/addons": "7.0.0-alpha.18", @@ -63,6 +91,14 @@ "publishConfig": { "access": "public" }, + "bundler": { + "entries": [ + "./src/index.ts", + "./src/manager.ts", + "./src/preview.ts", + "./src/react/index.ts" + ] + }, "gitHead": "bd59f1eef0f644175abdb0d9873ed0553f431f53", "storybook": { "displayName": "Links", diff --git a/code/addons/links/preview.js b/code/addons/links/preview.js index e726cab5a1b6..49ad602f79f4 100644 --- a/code/addons/links/preview.js +++ b/code/addons/links/preview.js @@ -1 +1 @@ -export * from './dist/esm/preview'; +export * from './dist/preview'; diff --git a/code/addons/links/react.js b/code/addons/links/react.js index d0e3270119d6..685845b5dceb 100644 --- a/code/addons/links/react.js +++ b/code/addons/links/react.js @@ -1,3 +1,3 @@ -import LinkTo from './dist/esm/react'; +import LinkTo from './dist/react'; export default LinkTo; From 3dd83b1be1faee0143cff3dac068cea713e5559a Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 1 Aug 2022 11:54:32 +1000 Subject: [PATCH 078/266] Add a simple playwright setup --- code/.eslintrc.js | 6 ++ code/.gitignore | 3 + code/e2e-tests/example.spec.ts | 17 ++++++ code/package.json | 2 + code/playwright.config.ts | 107 +++++++++++++++++++++++++++++++++ code/yarn.lock | 34 +++++++++++ 6 files changed, 169 insertions(+) create mode 100644 code/e2e-tests/example.spec.ts create mode 100644 code/playwright.config.ts diff --git a/code/.eslintrc.js b/code/.eslintrc.js index 80316f0a5e7d..1129908e7eb0 100644 --- a/code/.eslintrc.js +++ b/code/.eslintrc.js @@ -95,5 +95,11 @@ module.exports = { 'react/no-unknown-property': 'off', // Need to deactivate otherwise eslint replaces some unknown properties with React ones }, }, + { + files: ['**/e2e-tests/**/*'], + rules: { + 'jest/no-test-callback': 'off', // These aren't jest tests + }, + }, ], }; diff --git a/code/.gitignore b/code/.gitignore index 193ada9a92e3..ef192156c384 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -43,3 +43,6 @@ junit.xml !/**/.yarn/sdks !/**/.yarn/versions /**/.pnp.* +/test-results/ +/playwright-report/ +/playwright/.cache/ diff --git a/code/e2e-tests/example.spec.ts b/code/e2e-tests/example.spec.ts new file mode 100644 index 000000000000..39c877a93199 --- /dev/null +++ b/code/e2e-tests/example.spec.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:4000'; + +test('Basic story test', async ({ page }) => { + await page.goto(storybookUrl); + + const preview = page.frameLocator('#storybook-preview-iframe'); + const root = preview.locator('#root:visible, #docs-root:visible'); + + // General check for any selected entry + await expect(root).not.toBeEmpty(); + + // Specific check for introduction story + await expect(root).toContainText('Welcome to Storybook'); +}); diff --git a/code/package.json b/code/package.json index 2f03200814c8..f6c1921ee55e 100644 --- a/code/package.json +++ b/code/package.json @@ -152,6 +152,7 @@ "@nrwl/nx-cloud": "12.1.1", "@nrwl/tao": "12.3.4", "@nrwl/workspace": "12.3.4", + "@playwright/test": "^1.24.2", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^21.0.1", "@rollup/plugin-json": "^4.1.0", @@ -315,6 +316,7 @@ "node-gyp": "^8.4.0", "npmlog": "^5.0.1", "p-limit": "^3.1.0", + "playwright": "^1.24.2", "postcss-loader": "^6.2.1", "prettier": ">=2.2.1 <=2.3.0", "prompts": "^2.4.0", diff --git a/code/playwright.config.ts b/code/playwright.config.ts new file mode 100644 index 000000000000..139ce346beaf --- /dev/null +++ b/code/playwright.config.ts @@ -0,0 +1,107 @@ +import type { PlaywrightTestConfig } from '@playwright/test'; +import { devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +const config: PlaywrightTestConfig = { + testDir: './e2e-tests', + /* Maximum time one test can run for. */ + timeout: 30 * 1000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 5000, + }, + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + actionTimeout: 0, + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + }, + }, + + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'], + }, + }, + + { + name: 'webkit', + use: { + ...devices['Desktop Safari'], + }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { + // ...devices['Pixel 5'], + // }, + // }, + // { + // name: 'Mobile Safari', + // use: { + // ...devices['iPhone 12'], + // }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { + // channel: 'msedge', + // }, + // }, + // { + // name: 'Google Chrome', + // use: { + // channel: 'chrome', + // }, + // }, + ], + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + // outputDir: 'test-results/', + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // port: 3000, + // }, +}; + +export default config; diff --git a/code/yarn.lock b/code/yarn.lock index 2272bd8a4116..543ffc2773e6 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6406,6 +6406,18 @@ __metadata: languageName: node linkType: hard +"@playwright/test@npm:^1.24.2": + version: 1.24.2 + resolution: "@playwright/test@npm:1.24.2" + dependencies: + "@types/node": "*" + playwright-core: 1.24.2 + bin: + playwright: cli.js + checksum: 87e943149510fd7ad1369b7e1c07b67a86f31f09c0a2ddf61c48b0e7f56f8f9542b8541d2aed9e8e08b7c3aa93459329f5af01337e00f8136202ecf93fb3ffd9 + languageName: node + linkType: hard + "@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.1, @pmmmwh/react-refresh-webpack-plugin@npm:^0.5.3, @pmmmwh/react-refresh-webpack-plugin@npm:^0.5.5": version: 0.5.7 resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.7" @@ -8881,6 +8893,7 @@ __metadata: "@nrwl/nx-cloud": 12.1.1 "@nrwl/tao": 12.3.4 "@nrwl/workspace": 12.3.4 + "@playwright/test": ^1.24.2 "@rollup/plugin-babel": ^5.3.1 "@rollup/plugin-commonjs": ^21.0.1 "@rollup/plugin-json": ^4.1.0 @@ -9045,6 +9058,7 @@ __metadata: node-gyp: ^8.4.0 npmlog: ^5.0.1 p-limit: ^3.1.0 + playwright: ^1.24.2 postcss-loader: ^6.2.1 prettier: ">=2.2.1 <=2.3.0" prompts: ^2.4.0 @@ -34446,6 +34460,26 @@ __metadata: languageName: node linkType: hard +"playwright-core@npm:1.24.2": + version: 1.24.2 + resolution: "playwright-core@npm:1.24.2" + bin: + playwright: cli.js + checksum: ecd60ece818f1d57bf34685dd812c56f3b8cf7d8ca8e14074e1743fac56387f16791121901b34cf519d3ef5f9360968656ab661c7b589e55500144eb2cf69448 + languageName: node + linkType: hard + +"playwright@npm:^1.24.2": + version: 1.24.2 + resolution: "playwright@npm:1.24.2" + dependencies: + playwright-core: 1.24.2 + bin: + playwright: cli.js + checksum: c5e4cfd57f8030f15e019c101c867a5ce3f1d12c3a6d8a32a9fb34897746470faced7935d5cc920c85082c0aec0bcf5bb23174ba55f6eabf942d38707a40d1f0 + languageName: node + linkType: hard + "please-upgrade-node@npm:^3.2.0": version: 3.2.0 resolution: "please-upgrade-node@npm:3.2.0" From 210df609a57880afa13213dbb78037e719e5f2e5 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 1 Aug 2022 15:47:00 +1000 Subject: [PATCH 079/266] Add playwright to CircleCI --- .circleci/config.yml | 34 ++++++++++++++++++++++++++++++++++ code/.gitignore | 9 ++++++--- code/package.json | 1 + code/playwright.config.ts | 2 +- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4b3b17220cf9..0e68a79fa6a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -377,6 +377,37 @@ jobs: - store_artifacts: path: /tmp/cypress-record destination: cypress + e2e-tests-examples-playwright: + docker: + - image: mcr.microsoft.com/playwright:v1.24.0-focal + steps: + - git-shallow-clone/checkout_advanced: + clone_options: '--depth 1 --verbose' + - attach_workspace: + at: . + - run: + name: running example + command: | + cd code + yarn serve-storybooks + background: true + - run: + name: await running examples + command: | + cd code + yarn await-serve-storybooks + - run: + name: playwright test + command: | + cd code + yarn test:e2e-examples-playwright --reporter=junit + environment: + PLAYWRIGHT_JUNIT_OUTPUT_NAME: test-results/playwright.xml + - store_test_results: + path: test-results + - store_artifacts: # this is where playwright puts more complex stuff + path: /playwright-results/ + destination: playwright smoke-tests: executor: class: medium+ @@ -578,6 +609,9 @@ workflows: - e2e-tests-examples: requires: - examples + - e2e-tests-examples-playwright: + requires: + - examples - smoke-tests: requires: - build diff --git a/code/.gitignore b/code/.gitignore index ef192156c384..8e7366b01633 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -36,6 +36,12 @@ examples/angular-cli/addon-jest.testresults.json junit.xml .next +/test-results/ +/playwright-results/ +/playwright-report/ +/playwright/.cache/ + + # Yarn stuff /**/.yarn/* !/**/.yarn/releases @@ -43,6 +49,3 @@ junit.xml !/**/.yarn/sdks !/**/.yarn/versions /**/.pnp.* -/test-results/ -/playwright-report/ -/playwright/.cache/ diff --git a/code/package.json b/code/package.json index f6c1921ee55e..f16fdd59d910 100644 --- a/code/package.json +++ b/code/package.json @@ -89,6 +89,7 @@ "test:cli": "npm --prefix lib/cli run test", "test:e2e-examples": "cypress run", "test:e2e-examples-gui": "concurrently --success first --kill-others \"cypress open\" \"yarn serve-storybooks\"", + "test:e2e-examples-playwright": "playwright test", "test:e2e-framework": "ts-node --project=../scripts/tsconfig.json ../scripts/run-e2e.ts" }, "husky": { diff --git a/code/playwright.config.ts b/code/playwright.config.ts index 139ce346beaf..65bd48e564e7 100644 --- a/code/playwright.config.ts +++ b/code/playwright.config.ts @@ -95,7 +95,7 @@ const config: PlaywrightTestConfig = { ], /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - // outputDir: 'test-results/', + outputDir: 'playwright-results/', /* Run your local dev server before starting the tests */ // webServer: { From ef3dc80294e0da9f2a11a84e9531faac32326435 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 1 Aug 2022 16:43:07 +1000 Subject: [PATCH 080/266] Use correct port --- code/e2e-tests/example.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/e2e-tests/example.spec.ts b/code/e2e-tests/example.spec.ts index 39c877a93199..806717cc56a8 100644 --- a/code/e2e-tests/example.spec.ts +++ b/code/e2e-tests/example.spec.ts @@ -1,7 +1,7 @@ import { test, expect } from '@playwright/test'; import process from 'process'; -const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:4000'; +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; test('Basic story test', async ({ page }) => { await page.goto(storybookUrl); From 1d6729dba42cdc9334d4924df8f5add67e5e1c3d Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Tue, 2 Aug 2022 08:55:58 +1000 Subject: [PATCH 081/266] Fix paths --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e68a79fa6a1..e0e3d6ec2c90 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -404,9 +404,9 @@ jobs: environment: PLAYWRIGHT_JUNIT_OUTPUT_NAME: test-results/playwright.xml - store_test_results: - path: test-results + path: code/test-results - store_artifacts: # this is where playwright puts more complex stuff - path: /playwright-results/ + path: code/playwright-results/ destination: playwright smoke-tests: executor: From e95f64c1dfa6b96e438452080925e1d385129f10 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Tue, 2 Aug 2022 16:06:50 +1000 Subject: [PATCH 082/266] Tweak spec to work on angular example --- code/e2e-tests/example.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/e2e-tests/example.spec.ts b/code/e2e-tests/example.spec.ts index 806717cc56a8..f13c7910f96c 100644 --- a/code/e2e-tests/example.spec.ts +++ b/code/e2e-tests/example.spec.ts @@ -13,5 +13,5 @@ test('Basic story test', async ({ page }) => { await expect(root).not.toBeEmpty(); // Specific check for introduction story - await expect(root).toContainText('Welcome to Storybook'); + await expect(root).toContainText('Welcome'); }); From 2dc6698a20db1de928708ff3e25dcb51d41e9c2a Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Tue, 2 Aug 2022 09:33:12 +1000 Subject: [PATCH 083/266] SB is at angular-cli --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index e0e3d6ec2c90..d5f449c53f48 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -403,6 +403,7 @@ jobs: yarn test:e2e-examples-playwright --reporter=junit environment: PLAYWRIGHT_JUNIT_OUTPUT_NAME: test-results/playwright.xml + STORYBOOK_URL: 'http://localhost:8001/angular-cli' - store_test_results: path: code/test-results - store_artifacts: # this is where playwright puts more complex stuff From c5e4df91cd7c29867d2f5bfae140bd11fc252d99 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Tue, 2 Aug 2022 16:05:59 +1000 Subject: [PATCH 084/266] Possibly `.not.toBeEmpty()` isn't reliable --- code/e2e-tests/example.spec.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/e2e-tests/example.spec.ts b/code/e2e-tests/example.spec.ts index f13c7910f96c..6caeddd4077b 100644 --- a/code/e2e-tests/example.spec.ts +++ b/code/e2e-tests/example.spec.ts @@ -9,9 +9,6 @@ test('Basic story test', async ({ page }) => { const preview = page.frameLocator('#storybook-preview-iframe'); const root = preview.locator('#root:visible, #docs-root:visible'); - // General check for any selected entry - await expect(root).not.toBeEmpty(); - // Specific check for introduction story await expect(root).toContainText('Welcome'); }); From 5daa14bcf747554f107cb4be6f48d0ddd258140e Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Wed, 10 Aug 2022 09:32:31 +1000 Subject: [PATCH 085/266] Add a `create-built-sandboxes-index` script --- code/package.json | 1 + scripts/create-built-sandboxes-index.ts | 119 ++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 scripts/create-built-sandboxes-index.ts diff --git a/code/package.json b/code/package.json index f16fdd59d910..c28f190c0982 100644 --- a/code/package.json +++ b/code/package.json @@ -61,6 +61,7 @@ "check": "NODE_ENV=production node ../scripts/check-package.js", "clean:dist": "del **/dist", "coverage": "codecov", + "create-built-sandboxes-index": "ts-node ../scripts/create-built-sandboxes-index", "danger": "danger", "generate-repros": "zx ../scripts/repros-generator/index.mjs", "github-release": "github-release-from-changelog", diff --git a/scripts/create-built-sandboxes-index.ts b/scripts/create-built-sandboxes-index.ts new file mode 100644 index 000000000000..b52b9bb2d1fb --- /dev/null +++ b/scripts/create-built-sandboxes-index.ts @@ -0,0 +1,119 @@ +import { createOptions, getOptionsOrPrompt } from './utils/options'; +import { filterTemplates } from './once-per-template'; +import type { Templates } from './once-per-template'; +import TEMPLATES from '../code/lib/cli/src/repro-templates'; +import { outputFile } from 'fs-extra'; + +export const options = createOptions({ + output: { + type: 'string', + description: 'Where to put the index.html file?', + required: true, + }, + cadence: { + type: 'string', + description: 'What cadence are we running on (i.e. which templates should we use)?', + values: ['ci', 'daily', 'weekly'] as const, + required: true, + }, +}); + +function toPath(key: keyof Templates) { + return key.replace('/', '-'); +} + +const createContent = (templates: Templates) => { + return ` + + + + + + + + + ### I see a "No Preview" error with a Storybook production build From 4cb06bd1a875111551ee303485af145892b1876f Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:11:47 +0800 Subject: [PATCH 175/266] Examples: Add angular repro template and refactor --- .github/workflows/generate-repros-next.yml | 9 +++- CONTRIBUTING.md | 4 +- code/lib/cli/package.json | 1 - .../scripts/generate-repro-templates-list.js | 42 ------------------- code/lib/cli/src/repro-templates.ts | 11 ++++- code/package.json | 2 +- generate-repros.sh | 2 +- .../{generate.ts => generate-repros.ts} | 27 ++++-------- scripts/next-repro-generators/publish.ts | 2 +- .../next-repro-generators/repro-config.yml | 16 ------- .../next-repro-generators/utils/template.ts | 37 ++++++++-------- 11 files changed, 49 insertions(+), 104 deletions(-) delete mode 100755 code/lib/cli/scripts/generate-repro-templates-list.js rename scripts/next-repro-generators/{generate.ts => generate-repros.ts} (81%) delete mode 100644 scripts/next-repro-generators/repro-config.yml diff --git a/.github/workflows/generate-repros-next.yml b/.github/workflows/generate-repros-next.yml index fcfd6f56ac04..80a56744f715 100644 --- a/.github/workflows/generate-repros-next.yml +++ b/.github/workflows/generate-repros-next.yml @@ -2,7 +2,12 @@ name: Generate and push repros to the next branch on: schedule: - - cron: '2 2 */1 * *' + - cron: "2 2 */1 * *" + workflow_dispatch: + # To remove when the branch will be merged + push: + branches: + - shilman/add-angular-repro-template jobs: generate: @@ -21,7 +26,7 @@ jobs: run: yarn bootstrap --prep working-directory: ./code - name: Generate repros - run: yarn next-repro + run: yarn generate-repros-next working-directory: ./code - name: Publish repros to GitHub run: yarn publish-repros --remote=https://storybook-bot:${{ secrets.PAT_STORYBOOK_BOT}}@github.com/storybookjs/repro-templates-temp.git --push diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ff1cd848c883..81e6f6ceec71 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,10 +7,10 @@ # Generating reproductions -The monorepo has a script that generates Storybook reproductions based on configurations set in the `scripts/next-repro-generators/repro-config.yml` file. This makes it possible to quickly bootstrap examples with and without Storybook, for given configurations (e.g. CRA, Angular, Vue, etc.) +The monorepo has a script that generates Storybook reproductions based on configurations set in the `code/lib/cli/src/repro-templates.ts` file. This makes it possible to quickly bootstrap examples with and without Storybook, for given configurations (e.g. CRA, Angular, Vue, etc.) To do so: -- Check the `scripts/next-repro-generators/repro-config.yml` if you want to see what will be generated +- Check the `code/lib/cli/src/repro-templates.ts` if you want to see what will be generated - Run `./generate-repros.sh` - Check the result in the `repros` directory diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 9ec6f67d5466..b1278cab3dc4 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -42,7 +42,6 @@ ], "scripts": { "check": "tsc --noEmit", - "preprepare": "node ./scripts/generate-repro-templates-list.js", "prepare": "node ../../../scripts/prepare.js", "test": "jest test/**/*.test.js" }, diff --git a/code/lib/cli/scripts/generate-repro-templates-list.js b/code/lib/cli/scripts/generate-repro-templates-list.js deleted file mode 100755 index 5f1eaf32ce47..000000000000 --- a/code/lib/cli/scripts/generate-repro-templates-list.js +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node - -const { writeFile } = require('fs-extra'); -const { exec } = require('child_process'); -const path = require('path'); -const { default: dedent } = require('ts-dedent'); -const { readFile } = require('fs-extra'); -const yml = require('js-yaml'); - -const logger = console; - -async function getTemplatesData(filePath) { - const configContents = await readFile(filePath, 'utf8'); - return yml.load(configContents); -} - -const run = async () => { - logger.log('Generating templates list...'); - const templatesData = await getTemplatesData( - path.resolve(__dirname, '../../../../scripts/next-repro-generators/repro-config.yml') - ); - const destination = path.join(__dirname, '..', 'src', 'repro-templates.ts'); - - await writeFile( - destination, - dedent` - // This file was auto generated from generate-repro-templates-list.js, please do not edit! - export default ${JSON.stringify(templatesData, null, 2)} - ` - ); - - exec(`yarn lint:js:cmd --fix ${destination}`, { - cwd: path.join(__dirname, '..', '..', '..'), - }); - - logger.log('Done! generated ', destination); -}; - -run().catch((e) => { - logger.error(e); - process.exit(1); -}); diff --git a/code/lib/cli/src/repro-templates.ts b/code/lib/cli/src/repro-templates.ts index 09a0a2699c5a..57d6cfd8967d 100644 --- a/code/lib/cli/src/repro-templates.ts +++ b/code/lib/cli/src/repro-templates.ts @@ -1,4 +1,3 @@ -// auto generated file, do not edit export default { 'cra/default-js': { name: 'Create React App (Javascript)', @@ -18,4 +17,14 @@ export default { builder: '@storybook/builder-webpack5', }, }, + 'angular/latest': { + name: 'Angular (latest)', + script: + 'npx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --skip-install=true --strict', + expected: { + framework: '@storybook/angular', + renderer: '@storybook/angular', + builder: '@storybook/builder-webpack5', + }, + }, } as const; diff --git a/code/package.json b/code/package.json index d862b7239a32..274b90923f44 100644 --- a/code/package.json +++ b/code/package.json @@ -63,6 +63,7 @@ "coverage": "codecov", "danger": "danger", "generate-repros": "zx ../scripts/repros-generator/index.mjs", + "generate-repros-next": "ts-node ../scripts/next-repro-generators/generate-repros.ts", "github-release": "github-release-from-changelog", "linear-export": "ts-node --project=../scripts/tsconfig.json ../scripts/linear-export.ts", "lint": "yarn lint:js && yarn lint:md", @@ -73,7 +74,6 @@ "lint:other": "prettier --write '**/*.{css,html,json,md,yml}'", "lint:package": "sort-package-json", "local-registry": "ts-node --project=../scripts/tsconfig.json ../scripts/run-registry.ts --port 6000", - "next-repro": "ts-node ../scripts/next-repro-generators/generate.ts", "publish-repros": "ts-node ../scripts/next-repro-generators/publish.ts", "publish:debug": "npm run publish:latest -- --npm-tag=debug --no-push", "publish:latest": "lerna publish --exact --concurrency 1 --force-publish", diff --git a/generate-repros.sh b/generate-repros.sh index 59bf9eee663d..43e1f9f9e29f 100755 --- a/generate-repros.sh +++ b/generate-repros.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./scripts/node_modules/.bin/ts-node ./scripts/next-repro-generators/generate.ts \ No newline at end of file +./scripts/node_modules/.bin/ts-node ./scripts/next-repro-generators/generate-repros.ts \ No newline at end of file diff --git a/scripts/next-repro-generators/generate.ts b/scripts/next-repro-generators/generate-repros.ts similarity index 81% rename from scripts/next-repro-generators/generate.ts rename to scripts/next-repro-generators/generate-repros.ts index 50b9f3d0b5aa..5d2f66dfff22 100755 --- a/scripts/next-repro-generators/generate.ts +++ b/scripts/next-repro-generators/generate-repros.ts @@ -1,12 +1,13 @@ /* eslint-disable no-console */ -import path, { join, relative } from 'path'; +import { join, relative } from 'path'; import program from 'commander'; import { command } from 'execa'; import type { Options as ExecaOptions } from 'execa'; -import yaml from 'js-yaml'; import pLimit from 'p-limit'; import prettyTime from 'pretty-hrtime'; -import { copy, emptyDir, ensureDir, readFile, rename, writeFile } from 'fs-extra'; +import { copy, emptyDir, ensureDir, rename, writeFile } from 'fs-extra'; +import reproTemplates from '../../code/lib/cli/src/repro-templates'; + // @ts-ignore import { maxConcurrentTasks } from '../utils/concurrency'; @@ -105,31 +106,19 @@ const runGenerators = async (generators: (GeneratorConfig & { dirName: string }) ); }; -const generate = async ({ config }: { config: string }) => { - const configContents = await readFile(config, 'utf8'); - const data: Record = yaml.load(configContents); - +const generate = async () => { runGenerators( - Object.entries(data).map(([dirName, configuration]) => ({ + Object.entries(reproTemplates).map(([dirName, configuration]) => ({ dirName, ...configuration, })) ); }; -program - .description('Create a reproduction from a set of possible templates') - .option( - '-c --config ', - 'Choose a custom configuration file (.yml format)', - path.join(__dirname, 'repro-config.yml') - ); - +program.description('Create a reproduction from a set of possible templates'); program.parse(process.argv); -const options = program.opts() as { config: string }; - -generate(options).catch((e) => { +generate().catch((e) => { console.trace(e); process.exit(1); }); diff --git a/scripts/next-repro-generators/publish.ts b/scripts/next-repro-generators/publish.ts index f1a9cba08cdd..f3975c993a03 100755 --- a/scripts/next-repro-generators/publish.ts +++ b/scripts/next-repro-generators/publish.ts @@ -24,7 +24,7 @@ const publish = async (options: PublishOptions & { tmpFolder: string }) => { const scriptPath = __dirname; const gitBranch = useNextVersion ? 'next' : 'main'; - const templatesData = await getTemplatesData(join(scriptPath, 'repro-config.yml')); + const templatesData = await getTemplatesData(); logger.log(`👯‍♂️ Cloning the repository ${remote} in branch ${gitBranch}`); await command(`git clone ${remote} .`, { cwd: tmpFolder }); diff --git a/scripts/next-repro-generators/repro-config.yml b/scripts/next-repro-generators/repro-config.yml deleted file mode 100644 index ae5ce55b4b9c..000000000000 --- a/scripts/next-repro-generators/repro-config.yml +++ /dev/null @@ -1,16 +0,0 @@ -# group-name/instance-name. Should always be two levels deep. -cra/default-js: - name: "Create React App (Javascript)" - script: "npx create-react-app ." - expected: - framework: "@storybook/cra" - renderer: "@storybook/react" - builder: "@storybook/builder-webpack5" - -cra/default-ts: - name: "Create React App (Typescript)" - script: "npx create-react-app . --template typescript" - expected: - framework: "@storybook/cra" - renderer: "@storybook/react" - builder: "@storybook/builder-webpack5" \ No newline at end of file diff --git a/scripts/next-repro-generators/utils/template.ts b/scripts/next-repro-generators/utils/template.ts index ffeee660fe17..5765771f9fd9 100644 --- a/scripts/next-repro-generators/utils/template.ts +++ b/scripts/next-repro-generators/utils/template.ts @@ -3,6 +3,7 @@ import { readFile } from 'fs-extra'; import yml from 'js-yaml'; import { format } from 'prettier'; import { GeneratorConfig } from './types'; +import reproTemplates from '../../../code/lib/cli/src/repro-templates'; export async function renderTemplate(templatePath: string, templateData: Record) { const template = await readFile(templatePath, 'utf8'); @@ -13,14 +14,11 @@ export async function renderTemplate(templatePath: string, templateData: Record< return output; } -export const getStackblitzUrl = (path: string) => { - return `https://stackblitz.com/github/storybookjs/repro-templates-temp/tree/main/${path}/after-storybook?preset=node`; +export const getStackblitzUrl = (path: string, branch = 'next') => { + return `https://stackblitz.com/github/storybookjs/repro-templates-temp/tree/${branch}/${path}/after-storybook?preset=node`; }; -export async function getTemplatesData(filePath: string) { - const configContents = await readFile(filePath, 'utf8'); - const ymlData: Record = yml.load(configContents); - +export async function getTemplatesData() { type TemplatesData = Record< string, Record< @@ -31,17 +29,20 @@ export async function getTemplatesData(filePath: string) { > >; - const templatesData = Object.keys(ymlData).reduce((acc, next) => { - const [dirName, templateName] = next.split('/'); - const groupName = - dirName === 'cra' ? 'CRA' : dirName.slice(0, 1).toUpperCase() + dirName.slice(1); - const generatorData = ymlData[next]; - acc[groupName] = acc[groupName] || {}; - acc[groupName][templateName] = { - ...generatorData, - stackblitzUrl: getStackblitzUrl(next), - }; - return acc; - }, {}); + const templatesData = Object.keys(reproTemplates).reduce( + (acc, curr: keyof typeof reproTemplates) => { + const [dirName, templateName] = curr.split('/'); + const groupName = + dirName === 'cra' ? 'CRA' : dirName.slice(0, 1).toUpperCase() + dirName.slice(1); + const generatorData = reproTemplates[curr]; + acc[groupName] = acc[groupName] || {}; + acc[groupName][templateName] = { + ...generatorData, + stackblitzUrl: getStackblitzUrl(curr), + }; + return acc; + }, + {} + ); return templatesData; } From 180564e2e18f2024986968f6ea6b95c625b18f59 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:36:06 +0800 Subject: [PATCH 176/266] Fix deepscan --- scripts/next-repro-generators/utils/template.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/next-repro-generators/utils/template.ts b/scripts/next-repro-generators/utils/template.ts index 5765771f9fd9..4adb10be7ce6 100644 --- a/scripts/next-repro-generators/utils/template.ts +++ b/scripts/next-repro-generators/utils/template.ts @@ -1,6 +1,5 @@ import { render } from 'ejs'; import { readFile } from 'fs-extra'; -import yml from 'js-yaml'; import { format } from 'prettier'; import { GeneratorConfig } from './types'; import reproTemplates from '../../../code/lib/cli/src/repro-templates'; From f68820d0fc4554c9533d9d6baf4bd81fddb6b0a3 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:41:02 +0800 Subject: [PATCH 177/266] Fix indentation? --- .github/workflows/generate-repros-next.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/generate-repros-next.yml b/.github/workflows/generate-repros-next.yml index 80a56744f715..278c7c131def 100644 --- a/.github/workflows/generate-repros-next.yml +++ b/.github/workflows/generate-repros-next.yml @@ -4,10 +4,10 @@ on: schedule: - cron: "2 2 */1 * *" workflow_dispatch: - # To remove when the branch will be merged - push: - branches: - - shilman/add-angular-repro-template + # To remove when the branch will be merged + push: + branches: + - shilman/add-angular-repro-template jobs: generate: From 03f4e415dfaa226b99534372eed1b979eef2bd17 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:48:13 +0800 Subject: [PATCH 178/266] E2E: Addon-actions playwright test --- code/e2e-tests/addon-actions.spec.ts | 26 ++++++++++++ code/e2e-tests/util.ts | 60 ++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 code/e2e-tests/addon-actions.spec.ts create mode 100644 code/e2e-tests/util.ts diff --git a/code/e2e-tests/addon-actions.spec.ts b/code/e2e-tests/addon-actions.spec.ts new file mode 100644 index 000000000000..efdfa76ce324 --- /dev/null +++ b/code/e2e-tests/addon-actions.spec.ts @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-actions', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + }); + + test('should trigger an action', async ({ page }) => { + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-button', 'primary'); + const root = sbPage.previewRoot(); + const button = root.locator('button', { hasText: 'Button' }); + await button.click(); + + await sbPage.viewAddonPanel('Actions'); + const logItem = await page.locator('#storybook-panel-root #panel-tab-content', { + hasText: 'onClick', + }); + await expect(logItem).toBeVisible(); + }); +}); diff --git a/code/e2e-tests/util.ts b/code/e2e-tests/util.ts new file mode 100644 index 000000000000..2a30899a6123 --- /dev/null +++ b/code/e2e-tests/util.ts @@ -0,0 +1,60 @@ +/* eslint-disable jest/no-standalone-expect */ +import { expect, Locator, Page } from '@playwright/test'; + +export class SbPage { + readonly page: Page; + + constructor(page: Page) { + this.page = page; + } + + async navigateToStory(title: string, name: string) { + const titleId = title.replace(/ /g, '-').toLowerCase(); + const storyId = name.replace(/ /g, '-').toLowerCase(); + + const titleLink = this.page.locator(`#${titleId}`); + if ((await titleLink.getAttribute('aria-expanded')) === 'false') { + await titleLink.click(); + } + + const storyLinkId = `#${titleId}--${storyId}`; + await this.page.waitForSelector(storyLinkId); + const storyLink = this.page.locator(storyLinkId); + await storyLink.click({ force: true }); + + // assert url changes + const viewMode = name === 'docs' ? 'docs' : 'story'; + + const url = this.page.url(); + await expect(url).toContain(`path=/${viewMode}/${titleId}--${storyId}`); + + const selected = await storyLink.getAttribute('data-selected'); + await expect(selected).toBe('true'); + } + + previewIframe() { + return this.page.frameLocator('#storybook-preview-iframe'); + } + + previewRoot() { + const preview = this.previewIframe(); + return preview.locator('#root:visible, #docs-root:visible'); + } + + async viewAddonPanel(name: string) { + const tabs = await this.page.locator('[role=tablist] button[role=tab]'); + const tab = tabs.locator(`text=/^${name}/`); + await tab.click(); + } + + async selectToolbar(toolbarSelector: string, itemSelector?: string) { + await this.page.locator(toolbarSelector).click(); + if (itemSelector) { + await this.page.locator(itemSelector).click(); + } + } + + getCanvasBodyElement() { + return this.previewIframe().locator('body'); + } +} From 58fc426cfd5f2268aca242bc5e13580073d84f8a Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:48:35 +0800 Subject: [PATCH 179/266] E2E: Addon-backgrounds playwright test --- code/e2e-tests/addon-backgrounds.spec.ts | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 code/e2e-tests/addon-backgrounds.spec.ts diff --git a/code/e2e-tests/addon-backgrounds.spec.ts b/code/e2e-tests/addon-backgrounds.spec.ts new file mode 100644 index 000000000000..3cb70f8031a2 --- /dev/null +++ b/code/e2e-tests/addon-backgrounds.spec.ts @@ -0,0 +1,29 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-backgrounds', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + }); + + test('should have a dark background', async ({ page }) => { + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-button', 'primary'); + await sbPage.selectToolbar('[title="Change the background of the preview"]', '#dark'); + + await expect(sbPage.getCanvasBodyElement()).toHaveCSS('background-color', 'rgb(51, 51, 51)'); + }); + + test('should apply a grid', async ({ page }) => { + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-button', 'primary'); + await sbPage.selectToolbar('[title="Apply a grid to the preview"]'); + + await expect(sbPage.getCanvasBodyElement()).toHaveCSS('background-image', /linear-gradient/); + }); +}); From 30f4faeff3168b2a4aa55aeee7a12cc5efea6fa4 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Sun, 14 Aug 2022 11:53:47 +0200 Subject: [PATCH 180/266] fix generate-repros path --- scripts/next-repro-generators/utils/yarn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/next-repro-generators/utils/yarn.ts b/scripts/next-repro-generators/utils/yarn.ts index 4ece51f1e4ac..0227fc65f491 100644 --- a/scripts/next-repro-generators/utils/yarn.ts +++ b/scripts/next-repro-generators/utils/yarn.ts @@ -1,6 +1,6 @@ import { join } from 'path'; import { move, remove } from 'fs-extra'; -import { runCommand } from '../generate'; +import { runCommand } from '../generate-repros'; interface SetupYarnOptions { cwd: string; From 41c1e359a434ecf3e921f80d144d301c9dd6f824 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 17:58:02 +0800 Subject: [PATCH 181/266] Fix deepscan --- code/e2e-tests/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/e2e-tests/util.ts b/code/e2e-tests/util.ts index 2a30899a6123..132f51fca0d0 100644 --- a/code/e2e-tests/util.ts +++ b/code/e2e-tests/util.ts @@ -1,5 +1,5 @@ /* eslint-disable jest/no-standalone-expect */ -import { expect, Locator, Page } from '@playwright/test'; +import { expect, Page } from '@playwright/test'; export class SbPage { readonly page: Page; From ba8561804ba10bb08144989d47719c3dc22330df Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 19:20:33 +0800 Subject: [PATCH 182/266] E2E: Addon-controls playwright test --- code/e2e-tests/addon-controls.spec.ts | 71 +++++++++++++++++++++++++++ code/e2e-tests/util.ts | 4 ++ 2 files changed, 75 insertions(+) create mode 100644 code/e2e-tests/addon-controls.spec.ts diff --git a/code/e2e-tests/addon-controls.spec.ts b/code/e2e-tests/addon-controls.spec.ts new file mode 100644 index 000000000000..a49f7cbeb489 --- /dev/null +++ b/code/e2e-tests/addon-controls.spec.ts @@ -0,0 +1,71 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-controls', () => { + test('should change component when changing controls', async ({ page }) => { + await page.goto(storybookUrl); + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-button', 'primary'); + await sbPage.viewAddonPanel('Controls'); + + // Text input: Label + await expect(sbPage.previewRoot().locator('button')).toContainText('Button'); + const label = sbPage.panelContent().locator('textarea[name=label]'); + await label.fill('Hello world'); + await expect(sbPage.previewRoot().locator('button')).toContainText('Hello world'); + + // Args in URL + await page.waitForTimeout(300); + const url = await page.url(); + await expect(url).toContain('args=label:Hello+world'); + + // Boolean toggle: Primary/secondary + await expect(sbPage.previewRoot().locator('button')).toHaveCSS( + 'background-color', + 'rgb(30, 167, 253)' + ); + const toggle = sbPage.panelContent().locator('input[name=primary]'); + await toggle.click(); + await expect(sbPage.previewRoot().locator('button')).toHaveCSS( + 'background-color', + 'rgba(0, 0, 0, 0)' + ); + + // Color picker: Background color + const color = sbPage.panelContent().locator('input[placeholder="Choose color..."]'); + await color.fill('red'); + await expect(sbPage.previewRoot().locator('button')).toHaveCSS( + 'background-color', + 'rgb(255, 0, 0)' + ); + + // TODO: enable this once the controls for size are aligned in all CLI templates. + // Radio buttons: Size + // cy.getStoryElement().find('button').should('have.css', 'font-size', '14px'); + // cy.get('label[for="size-large"]').click(); + // cy.getStoryElement().find('button').should('have.css', 'font-size', '16px'); + + // Reset controls: assert that the component is back to original state + const reset = sbPage.panelContent().locator('button[title="Reset controls"]'); + await reset.click(); + const button = sbPage.previewRoot().locator('button'); + await expect(button).toHaveCSS('font-size', '14px'); + await expect(button).toHaveCSS('background-color', 'rgb(30, 167, 253)'); + await expect(button).toContainText('Button'); + }); + + test('should apply controls automatically when passed via url', async ({ page }) => { + await page.goto(`${storybookUrl}?path=/story/example-button--primary&args=label:Hello+world`); + + const sbPage = new SbPage(page); + await expect(sbPage.previewRoot().locator('button')).toContainText('Hello world'); + + await sbPage.viewAddonPanel('Controls'); + const label = await sbPage.panelContent().locator('textarea[name=label]').inputValue(); + await expect(label).toEqual('Hello world'); + }); +}); diff --git a/code/e2e-tests/util.ts b/code/e2e-tests/util.ts index 132f51fca0d0..e9aef15095cf 100644 --- a/code/e2e-tests/util.ts +++ b/code/e2e-tests/util.ts @@ -41,6 +41,10 @@ export class SbPage { return preview.locator('#root:visible, #docs-root:visible'); } + panelContent() { + return this.page.locator('#storybook-panel-root #panel-tab-content'); + } + async viewAddonPanel(name: string) { const tabs = await this.page.locator('[role=tablist] button[role=tab]'); const tab = tabs.locator(`text=/^${name}/`); From cb20988f4ee33af6e5f63c637fcce89060678771 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 19:41:42 +0800 Subject: [PATCH 183/266] E2E: Addon-docs playwright test --- code/e2e-tests/addon-docs.spec.ts | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 code/e2e-tests/addon-docs.spec.ts diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts new file mode 100644 index 000000000000..d4ddbaeec1a6 --- /dev/null +++ b/code/e2e-tests/addon-docs.spec.ts @@ -0,0 +1,35 @@ +/* eslint-disable no-await-in-loop */ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-docs', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + }); + + // FIXME: skip html/vue3 + test('should provide source snippet', async ({ page }) => { + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-button', 'docs'); + const root = sbPage.previewRoot(); + const toggles = root.locator('.docblock-code-toggle'); + + const toggleCount = await toggles.count(); + for (let i = 0; i < toggleCount; i += 1) { + const toggle = await toggles.nth(i); + await toggle.click({ force: true }); + } + + const codes = root.locator('pre.prismjs'); + const codeCount = await codes.count(); + for (let i = 0; i < codeCount; i += 1) { + const code = await codes.nth(i); + const text = await code.innerText(); + await expect(text).not.toMatch(/^\(args\) => /); + } + }); +}); From 23badb7d8d8811a42c68e80b678ff482517e6e5f Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 19:57:43 +0800 Subject: [PATCH 184/266] E2E: Addon-interactions playwright test --- code/e2e-tests/addon-interactions.spec.ts | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 code/e2e-tests/addon-interactions.spec.ts diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts new file mode 100644 index 000000000000..52a517ce6790 --- /dev/null +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -0,0 +1,33 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-interactions', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + }); + + // FIXME: skip xxx + test('should have interactions', async ({ page }) => { + const sbPage = new SbPage(page); + + await sbPage.navigateToStory('example-page', 'logged-in'); + await sbPage.viewAddonPanel('Interactions'); + + const welcome = await sbPage.previewRoot().locator('.welcome'); + await expect(welcome).toContainText('Welcome, Jane Doe!'); + + const interactionsTab = await page.locator('#tabbutton-interactions'); + await expect(interactionsTab).toContainText(/(1)/); + await expect(interactionsTab).toBeVisible(); + + const panel = sbPage.panelContent(); + await expect(panel).toContainText(/userEvent.click/); + await expect(panel).toBeVisible(); + + const done = await panel.locator('[data-testid=icon-done]'); + await expect(done).toBeVisible(); + }); +}); From 74f5836fa9d26afd1712efa41af6b523057d3229 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 14 Aug 2022 20:02:38 +0800 Subject: [PATCH 185/266] E2E: Addon-viewport playwright test --- code/e2e-tests/addon-viewport.spec.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 code/e2e-tests/addon-viewport.spec.ts diff --git a/code/e2e-tests/addon-viewport.spec.ts b/code/e2e-tests/addon-viewport.spec.ts new file mode 100644 index 000000000000..a5935b4db2cd --- /dev/null +++ b/code/e2e-tests/addon-viewport.spec.ts @@ -0,0 +1,22 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('addon-viewport', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + }); + + test('should have viewport button in the toolbar', async ({ page }) => { + const sbPage = new SbPage(page); + + // Click on viewport button and select small mobile + await sbPage.navigateToStory('example-button', 'primary'); + await sbPage.selectToolbar('[title="Change the size of the preview"]', '#mobile1'); + + // Check that Button story is still displayed + await expect(sbPage.previewRoot()).toContainText('Button'); + }); +}); From 8e373f4b5495e83ba20515c13bc681485cbf405c Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 08:29:52 +0800 Subject: [PATCH 186/266] E2E: Conditionally skip vue3 docs snippet tests --- code/e2e-tests/addon-docs.spec.ts | 9 +++++++-- scripts/tasks/e2e-tests.ts | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index d4ddbaeec1a6..2be60673da1b 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -1,19 +1,24 @@ +/* eslint-disable jest/no-disabled-tests */ /* eslint-disable no-await-in-loop */ import { test, expect } from '@playwright/test'; import process from 'process'; import { SbPage } from './util'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; +const templateName = process.env.STORYBOOK_TEMPLATE_NAME || ''; test.describe('addon-docs', () => { test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); }); - // FIXME: skip html/vue3 test('should provide source snippet', async ({ page }) => { - const sbPage = new SbPage(page); + test.skip( + /^vue3/.test(templateName), + `Skipping ${templateName}, which does not support dynamic source snippets` + ); + const sbPage = new SbPage(page); await sbPage.navigateToStory('example-button', 'docs'); const root = sbPage.previewRoot(); const toggles = root.locator('.docblock-code-toggle'); diff --git a/scripts/tasks/e2e-tests.ts b/scripts/tasks/e2e-tests.ts index 55633b6b07c9..ea72790736de 100644 --- a/scripts/tasks/e2e-tests.ts +++ b/scripts/tasks/e2e-tests.ts @@ -8,12 +8,13 @@ export const e2eTests: Task = { async ready() { return false; }, - async run(_, { builtSandboxDir, junitFilename }) { + async run(_, { builtSandboxDir, junitFilename, template }) { const storybookController = await serveSandbox(builtSandboxDir, {}); await exec('yarn playwright test --reporter=junit', { env: { STORYBOOK_URL: `http://localhost:8001`, + STORYBOOK_TEMPLATE_NAME: template.name, ...(junitFilename && { PLAYWRIGHT_JUNIT_OUTPUT_NAME: junitFilename, }), From 6771348e691a2b8fb346a03d85e12f980cdc89ca Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 10:01:25 +0800 Subject: [PATCH 187/266] Fix sandbox parallelism --- .circleci/config.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2245dcaa2c13..142d6b4ea8b0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -457,12 +457,12 @@ jobs: cd code yarn coverage -## new workflow + ## new workflow create-sandboxes: executor: class: medium+ name: sb_node_14_browsers - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -609,7 +609,7 @@ workflows: requires: - publish -## new workflow + ## new workflow - create-sandboxes: requires: - publish @@ -628,4 +628,3 @@ workflows: - e2e-sandboxes: requires: - build-sandboxes - \ No newline at end of file From 2e3af9e86083dafcaeca17690d93dda2a5f4b4c2 Mon Sep 17 00:00:00 2001 From: Lalantha <50310777+Lalanthawi@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:59:32 +0530 Subject: [PATCH 188/266] Update introduction.md added a link --- docs/addons/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/addons/introduction.md b/docs/addons/introduction.md index 7558e16786b4..0d6f0ed986cf 100644 --- a/docs/addons/introduction.md +++ b/docs/addons/introduction.md @@ -9,7 +9,7 @@ Browse our [addon catalog](https://storybook.js.org/addons) to install an existi ## Storybook basics -Before writing your first addon, let’s take a look at the basics of Storybook’s architecture. While Storybook presents a unified user interface, under the hood it’s divided down the middle into **Manager** and **Preview**. +Before writing your first [addon](https://storybook.js.org/addons), let’s take a look at the basics of Storybook’s architecture. While Storybook presents a unified user interface, under the hood it’s divided down the middle into **Manager** and **Preview**. The **Manager** is the UI responsible for rendering the: From eaf45689a2589840a5ba178024fb13809940f8c9 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 11:39:14 +0800 Subject: [PATCH 189/266] Don't hardcode renderer location in monorepo --- scripts/sandbox.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/scripts/sandbox.ts b/scripts/sandbox.ts index 640bc6fa7166..afa99e8dff22 100644 --- a/scripts/sandbox.ts +++ b/scripts/sandbox.ts @@ -11,6 +11,7 @@ import { } from 'fs-extra'; import prompts from 'prompts'; import type { AbortController } from 'node-abort-controller'; +import command from 'execa'; import { createOptions, getOptionsOrPrompt, OptionValues } from './utils/options'; import { executeCLIStep } from './utils/cli-step'; @@ -286,8 +287,19 @@ export async function sandbox(optionValues: OptionValues) { const storiesPath = await findFirstPath([path.join('src', 'stories'), 'stories'], { cwd }); // Link in the template/components/index.js from the renderer - const rendererName = templateConfig.expected.renderer.split('/')[1]; - const rendererPath = path.join('renderers', rendererName); + const { stdout } = await command('yarn workspaces list --json', { + cwd: process.cwd(), + shell: true, + }); + const workspaces = JSON.parse(`[${stdout.split('\n').join(',')}]`) as [ + { name: string; location: string } + ]; + const { renderer } = templateConfig.expected; + const rendererWorkspace = workspaces.find((workspace) => workspace.name === renderer); + if (!rendererWorkspace) { + throw new Error(`Unknown renderer '${renderer}', not in yarn workspace!`); + } + const rendererPath = rendererWorkspace.location; await ensureSymlink( path.join(codeDir, rendererPath, 'template', 'components'), path.resolve(cwd, storiesPath, 'components') From dd7db82cab650b469ac922a8808cd4501d2f3389 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 11:39:55 +0800 Subject: [PATCH 190/266] Angular: Add renderer components / stories --- .../template/components/button.component.ts | 53 ++++++++ .../angular/template/components/button.css | 30 +++++ .../angular/template/components/index.js | 5 + .../template/stories/child.component.ts | 20 +++ .../template/stories/decorators.stories.ts | 117 ++++++++++++++++++ .../template/stories/parent.component.ts | 18 +++ 6 files changed, 243 insertions(+) create mode 100644 code/frameworks/angular/template/components/button.component.ts create mode 100644 code/frameworks/angular/template/components/button.css create mode 100644 code/frameworks/angular/template/components/index.js create mode 100644 code/frameworks/angular/template/stories/child.component.ts create mode 100644 code/frameworks/angular/template/stories/decorators.stories.ts create mode 100644 code/frameworks/angular/template/stories/parent.component.ts diff --git a/code/frameworks/angular/template/components/button.component.ts b/code/frameworks/angular/template/components/button.component.ts new file mode 100644 index 000000000000..3d0efd6af2f3 --- /dev/null +++ b/code/frameworks/angular/template/components/button.component.ts @@ -0,0 +1,53 @@ +import { Component, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'storybook-button', + template: ` `, + styleUrls: ['./button.css'], +}) +export default class ButtonComponent { + /** + * Is this the principal call to action on the page? + */ + @Input() + primary = false; + + /** + * What background color to use + */ + @Input() + backgroundColor?: string; + + /** + * How large should the button be? + */ + @Input() + size: 'small' | 'medium' | 'large' = 'medium'; + + /** + * Button contents + * + * @required + */ + @Input() + label = 'Button'; + + /** + * Optional click handler + */ + @Output() + onClick = new EventEmitter(); + + public get classes(): string[] { + const mode = this.primary ? 'storybook-button--primary' : 'storybook-button--secondary'; + + return ['storybook-button', `storybook-button--${this.size}`, mode]; + } +} diff --git a/code/frameworks/angular/template/components/button.css b/code/frameworks/angular/template/components/button.css new file mode 100644 index 000000000000..dc91dc76370b --- /dev/null +++ b/code/frameworks/angular/template/components/button.css @@ -0,0 +1,30 @@ +.storybook-button { + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} +.storybook-button--primary { + color: white; + background-color: #1ea7fd; +} +.storybook-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} +.storybook-button--small { + font-size: 12px; + padding: 10px 16px; +} +.storybook-button--medium { + font-size: 14px; + padding: 11px 20px; +} +.storybook-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/code/frameworks/angular/template/components/index.js b/code/frameworks/angular/template/components/index.js new file mode 100644 index 000000000000..5ae9ef153d83 --- /dev/null +++ b/code/frameworks/angular/template/components/index.js @@ -0,0 +1,5 @@ +import globalThis from 'global'; + +import Button from './button.component'; + +globalThis.Components = { Button }; diff --git a/code/frameworks/angular/template/stories/child.component.ts b/code/frameworks/angular/template/stories/child.component.ts new file mode 100644 index 000000000000..4666ec952ad1 --- /dev/null +++ b/code/frameworks/angular/template/stories/child.component.ts @@ -0,0 +1,20 @@ +import { Component, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'child-component', + template: ` + Child
+ Input text: {{ childText }}
+ Output :
+ Private text: {{ childPrivateText }}
+ `, +}) +export default class ChildComponent { + @Input() + childText = ''; + + childPrivateText = ''; + + @Output() + onClickChild = new EventEmitter(); +} diff --git a/code/frameworks/angular/template/stories/decorators.stories.ts b/code/frameworks/angular/template/stories/decorators.stories.ts new file mode 100644 index 000000000000..1f4b61b9bec9 --- /dev/null +++ b/code/frameworks/angular/template/stories/decorators.stories.ts @@ -0,0 +1,117 @@ +// your-component.stories.ts + +import { componentWrapperDecorator, Meta, moduleMetadata } from '@storybook/angular'; +import ChildComponent from './child.component'; +import ParentComponent from './parent.component'; + +export default { + title: 'Core / Decorators / ComponentWrapperDecorator', + component: ChildComponent, + decorators: [ + componentWrapperDecorator( + (story) => `Grandparent
${story}
` + ), + ], + args: { childText: 'Child text', childPrivateText: 'Child private text' }, + argTypes: { onClickChild: { action: 'onClickChild' } }, +} as Meta; + +export const WithTemplate = (args) => ({ + template: `Child Template`, + props: { + ...args, + }, +}); + +export const WithComponent = (args) => ({ + props: { + ...args, + }, +}); + +export const WithLegacyComponent = (args) => ({ + component: ChildComponent, + props: { + ...args, + }, +}); + +export const WithComponentWrapperDecorator = (args) => ({ + component: ChildComponent, + props: { + ...args, + }, +}); +WithComponentWrapperDecorator.decorators = [ + moduleMetadata({ declarations: [ParentComponent] }), + componentWrapperDecorator(ParentComponent), +]; + +export const WithComponentWrapperDecoratorAndProps = (args) => ({ + component: ChildComponent, + props: { + ...args, + }, +}); +WithComponentWrapperDecoratorAndProps.decorators = [ + moduleMetadata({ declarations: [ParentComponent] }), + componentWrapperDecorator(ParentComponent, { + parentText: 'Parent text', + onClickParent: () => { + console.log('onClickParent'); + }, + }), +]; + +export const WithComponentWrapperDecoratorAndArgs = (args) => ({ + component: ChildComponent, + props: { + ...args, + }, +}); +WithComponentWrapperDecoratorAndArgs.argTypes = { + parentText: { control: { type: 'text' } }, + onClickParent: { action: 'onClickParent' }, +}; +WithComponentWrapperDecoratorAndArgs.decorators = [ + moduleMetadata({ declarations: [ParentComponent] }), + componentWrapperDecorator(ParentComponent, ({ args }) => ({ + parentText: args.parentText, + onClickParent: args.onClickParent, + })), +]; + +export const WithCustomDecorator = (args) => ({ + template: `Child Template`, + props: { + ...args, + }, +}); +WithCustomDecorator.decorators = [ + (storyFunc) => { + const story = storyFunc(); + + return { + ...story, + template: `Custom Decorator
${story.template}
`, + }; + }, +]; + +export const AngularLegacyRendering = (args) => ({ + template: `Child Template`, + props: { + ...args, + }, +}); +AngularLegacyRendering.parameters = { angularLegacyRendering: true }; +AngularLegacyRendering.decorators = [ + (storyFunc) => { + const story = storyFunc(); + + return { + ...story, + template: `Custom Decorator
${story.template}
`, + }; + }, +]; diff --git a/code/frameworks/angular/template/stories/parent.component.ts b/code/frameworks/angular/template/stories/parent.component.ts new file mode 100644 index 000000000000..f49ce1bb1873 --- /dev/null +++ b/code/frameworks/angular/template/stories/parent.component.ts @@ -0,0 +1,18 @@ +import { Component, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'parent-component', + template: ` + Parent
+ Input text: {{ parentText }}
+ Output :
+
+ `, +}) +export default class ParentComponent { + @Input() + parentText = ''; + + @Output() + onClickParent = new EventEmitter(); +} From 776aa2e253c3971dc22ad6c32ccbf7b693ba00d2 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 12:49:30 +0800 Subject: [PATCH 191/266] Increase parallelism for angular --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 142d6b4ea8b0..19f045eb2f5e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -482,7 +482,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -498,7 +498,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -518,7 +518,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -534,7 +534,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -549,7 +549,7 @@ jobs: e2e-sandboxes: docker: - image: mcr.microsoft.com/playwright:v1.24.0-focal - parallelism: 2 + parallelism: 3 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' From 40746a328f0050beb5d2497e4c6b41b6c1fd7fa3 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 13:12:55 +0800 Subject: [PATCH 192/266] CI: Disable Angular repro template --- .circleci/config.yml | 12 ++++++------ code/lib/cli/src/repro-templates.ts | 23 ++++++++++++----------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 19f045eb2f5e..b384479d14ed 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -462,7 +462,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -482,7 +482,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -498,7 +498,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -518,7 +518,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -534,7 +534,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -549,7 +549,7 @@ jobs: e2e-sandboxes: docker: - image: mcr.microsoft.com/playwright:v1.24.0-focal - parallelism: 3 + parallelism: 2 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' diff --git a/code/lib/cli/src/repro-templates.ts b/code/lib/cli/src/repro-templates.ts index 4026a9e44308..d85493b8c142 100644 --- a/code/lib/cli/src/repro-templates.ts +++ b/code/lib/cli/src/repro-templates.ts @@ -19,15 +19,16 @@ export default { builder: '@storybook/builder-webpack5', }, }, - 'angular/latest': { - name: 'Angular (latest)', - script: - 'npx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --skip-install=true --strict', - cadence: ['ci', 'daily', 'weekly'], - expected: { - framework: '@storybook/angular', - renderer: '@storybook/angular', - builder: '@storybook/builder-webpack5', - }, - }, + // FIXME: missing documentation.json + // 'angular/latest': { + // name: 'Angular (latest)', + // script: + // 'npx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --skip-install=true --strict', + // cadence: ['ci', 'daily', 'weekly'], + // expected: { + // framework: '@storybook/angular', + // renderer: '@storybook/angular', + // builder: '@storybook/builder-webpack5', + // }, + // }, } as const; From 0518456dc2f4026cc48a6174634794caeda8514c Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 08:32:37 +0200 Subject: [PATCH 193/266] disable telemetry for sandbox generated projects --- scripts/sandbox.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/sandbox.ts b/scripts/sandbox.ts index afa99e8dff22..d3ec2519675c 100644 --- a/scripts/sandbox.ts +++ b/scripts/sandbox.ts @@ -308,6 +308,7 @@ export async function sandbox(optionValues: OptionValues) { ['previewEntries'], [`.${path.sep}${path.join(storiesPath, 'components')}`] ); + mainConfig.setFieldValue(['core', 'disableTelemetry'], true); const storiesToAdd = [] as string[]; storiesToAdd.push(rendererPath); From d0b9f93e1c3d6e213b26759d690768effbed0547 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 08:33:31 +0200 Subject: [PATCH 194/266] disable telemetry in stackblitz repros --- scripts/repros-generator/templates/next/.stackblitzrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/repros-generator/templates/next/.stackblitzrc b/scripts/repros-generator/templates/next/.stackblitzrc index 58bd8bde3389..084c9f538832 100644 --- a/scripts/repros-generator/templates/next/.stackblitzrc +++ b/scripts/repros-generator/templates/next/.stackblitzrc @@ -1,4 +1,4 @@ { "installDependencies": true, - "startCommand": "yarn storybook" + "startCommand": "STORYBOOK_DISABLE_TELEMETRY=1 yarn storybook" } From aea156cd45ac6eb2d6419491d02ab39bc1ef39e4 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 09:09:22 +0200 Subject: [PATCH 195/266] disable telemetry in sandbox commands --- scripts/utils/cli-step.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/utils/cli-step.ts b/scripts/utils/cli-step.ts index 1ac95d379df0..eac83af90008 100644 --- a/scripts/utils/cli-step.ts +++ b/scripts/utils/cli-step.ts @@ -34,7 +34,12 @@ export async function executeCLIStep( await exec( command, - { cwd: options.cwd }, + { + cwd: options.cwd, + env: { + STORYBOOK_DISABLE_TELEMETRY: 'true', + }, + }, { startMessage: `${cliStep.icon} ${cliStep.description}`, errorMessage: `🚨 ${cliStep.description} failed`, From 6fb436bf61e5482549579a4bfc78fa719e6a68b9 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 10:45:30 +0200 Subject: [PATCH 196/266] exit sandbox gracefully on cancel --- scripts/utils/options.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/utils/options.ts b/scripts/utils/options.ts index ec8313c95079..29e041157b7d 100644 --- a/scripts/utils/options.ts +++ b/scripts/utils/options.ts @@ -234,7 +234,12 @@ export async function promptOptions( }; }); - const selection = await prompts(questions); + const selection = await prompts(questions, { + onCancel: () => { + console.log('Command cancelled by the user. Exiting...'); + process.exit(0); + }, + }); // Again the structure of the questions guarantees we get responses of the type we need return selection as OptionValues; } From c6f2d4e17e1e78f40aba9eae30557da02d4386df Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 16:59:55 +0800 Subject: [PATCH 197/266] Update scripts/utils/options.ts --- scripts/utils/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/utils/options.ts b/scripts/utils/options.ts index 29e041157b7d..09774c698a12 100644 --- a/scripts/utils/options.ts +++ b/scripts/utils/options.ts @@ -237,7 +237,7 @@ export async function promptOptions( const selection = await prompts(questions, { onCancel: () => { console.log('Command cancelled by the user. Exiting...'); - process.exit(0); + process.exit(1); }, }); // Again the structure of the questions guarantees we get responses of the type we need From fcc4dca1e38051fa1ac251ee3924806a1d0d93d6 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Mon, 15 Aug 2022 18:42:12 +0800 Subject: [PATCH 198/266] Extend new frameworks automigration to include Webpack4 --- .../automigrate/fixes/new-frameworks.test.ts | 8 +++++++- .../src/automigrate/fixes/new-frameworks.ts | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts index b1a37d627b19..482389d3bf8e 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.test.ts @@ -60,7 +60,13 @@ describe('new-frameworks fix', () => { framework: '@storybook/vue', }, }) - ).resolves.toBeFalsy(); + ).resolves.toEqual( + expect.objectContaining({ + frameworkPackage: '@storybook/vue-webpack5', + dependenciesToAdd: ['@storybook/vue-webpack5'], + dependenciesToRemove: ['@storybook/vue'], + }) + ); }); it('in sb 7 with unsupported package', async () => { diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index 016e05a66145..9b96b69793ec 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -62,7 +62,7 @@ export const getBuilder = (builder: string | { name: string }) => { return builder.includes('vite') ? 'vite' : 'webpack5'; } - return builder.name.includes('vite') ? 'vite' : 'webpack5'; + return builder?.name.includes('vite') ? 'vite' : 'webpack5'; }; export const getFrameworkOptions = (framework: string, main: ConfigFile) => { @@ -113,7 +113,7 @@ export const newFrameworks: Fix = { const frameworkPackage = main.getFieldValue(['framework']) as keyof typeof packagesMap; const builder = main.getFieldValue(['core', 'builder']); - if (!frameworkPackage || !builder) { + if (!frameworkPackage) { return null; } @@ -138,6 +138,8 @@ export const newFrameworks: Fix = { const dependenciesToRemove = [ '@storybook/builder-webpack5', '@storybook/manager-webpack5', + '@storybook/builder-webpack4', + '@storybook/manager-webpack4', ].filter((dep) => allDeps[dep]); const newFrameworkPackage = packagesMap[frameworkPackage][builderInfo.name]; @@ -168,9 +170,20 @@ export const newFrameworks: Fix = { We can remove the dependencies that are no longer needed and install the new framework that already includes the builder. - More info: ${chalk.yellow( + To learn more about the framework field, see: ${chalk.yellow( 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory' )} + + ${chalk.underline(chalk.bold(chalk.cyan('Webpack4 users')))} + + Unless you're using Storybook's Vite builder, this automigration will install a Webpack5-based framework. + + If you were using Storybook's Webpack4 builder (default in 6.x, discontinued in 7.0), this could be a breaking + change--especially if your project has a custom webpack configuration. + + To learn more about migrating from Webpack4, see: ${chalk.yellow( + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued' + )} `; }, From e54e22a6f291482b960ee364174691415dd2733d Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 13:02:02 +0200 Subject: [PATCH 199/266] log the error with stack trace in automigration --- code/lib/cli/src/automigrate/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index a20325c86119..0eab9bca3d9c 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -57,7 +57,7 @@ export const automigrate = async ({ fixId, dryRun, yes }: FixOptions = {}) => { logger.info(`✅ ran ${chalk.cyan(f.id)} migration`); } catch (error) { logger.info(`❌ error when running ${chalk.cyan(f.id)} migration:`); - logger.info(error.message); + logger.info(error); logger.info(); } } else { From 441d432882ce791582981db7893b26071cd3e402 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 13:02:32 +0200 Subject: [PATCH 200/266] fix core builder logic in new-frameworks automigration --- .../cli/src/automigrate/fixes/new-frameworks.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index 9b96b69793ec..efa09e619ce6 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -224,14 +224,16 @@ export const newFrameworks: Fix = { if (Object.keys(builderInfo.options).length > 0) { main.setFieldValue(['framework', 'options', 'builder'], builderInfo.options); + delete currentCore.builder; } - delete currentCore.builder; - if (Object.keys(currentCore).length === 0) { - // TODO: this should delete the field instead - main.setFieldValue(['core'], {}); - } else { - main.setFieldValue(['core'], currentCore); + if (currentCore) { + if (Object.keys(currentCore).length === 0) { + // TODO: this should delete the field instead + main.setFieldValue(['core'], {}); + } else { + main.setFieldValue(['core'], currentCore); + } } await writeConfig(main); From c0a47e16801a59fc6f6dfdaf4bdea7403a45edb0 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 15 Aug 2022 13:09:31 +0200 Subject: [PATCH 201/266] fix new-frameworks logic --- code/lib/cli/src/automigrate/fixes/new-frameworks.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index efa09e619ce6..f288787485bd 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -222,9 +222,12 @@ export const newFrameworks: Fix = { main.setFieldValue(['framework', 'name'], frameworkPackage); main.setFieldValue(['framework', 'options'], frameworkOptions); + if (currentCore?.builder) { + delete currentCore.builder; + } + if (Object.keys(builderInfo.options).length > 0) { main.setFieldValue(['framework', 'options', 'builder'], builderInfo.options); - delete currentCore.builder; } if (currentCore) { From d76bbba2311193c7bbf04a58b6cb408756d9ce14 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Aug 2022 16:07:19 +0200 Subject: [PATCH 202/266] Fix interactions count --- code/addons/interactions/src/Panel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index bc4ce66aa464..8c56755a00f9 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -137,7 +137,7 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { React.useEffect(() => { if (isPlaying || isRerunAnimating) return; - setInteractionsCount(interactions.length); + setInteractionsCount(interactions.filter(({ method }) => method !== 'step').length); }, [interactions, isPlaying, isRerunAnimating]); const controls = React.useMemo( From 60c6653da89b7c6b54a7a8d34a1f8c7b2f8545a2 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Aug 2022 16:53:19 +0200 Subject: [PATCH 203/266] Fix collapse to bust memoization --- code/addons/interactions/src/Panel.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index 8c56755a00f9..8c5152fee16e 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -87,7 +87,8 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { const [interactions, setInteractions] = React.useState([]); const [interactionsCount, setInteractionsCount] = React.useState(); - // Calls are tracked in a ref so we don't needlessly rerender. + // Log and calls are tracked in a ref so we don't needlessly rerender. + const log = React.useRef([]); const calls = React.useRef>>(new Map()); const setCall = ({ status, ...call }: Call) => calls.current.set(call.id, call); @@ -113,6 +114,7 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { setInteractions( getInteractions({ log: payload.logItems, calls: calls.current, collapsed, setCollapsed }) ); + log.current = payload.logItems; }, [STORY_RENDER_PHASE_CHANGED]: (event) => { setStoryId(event.storyId); @@ -135,6 +137,12 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { [collapsed] ); + React.useEffect(() => { + setInteractions( + getInteractions({ log: log.current, calls: calls.current, collapsed, setCollapsed }) + ); + }, [collapsed]); + React.useEffect(() => { if (isPlaying || isRerunAnimating) return; setInteractionsCount(interactions.filter(({ method }) => method !== 'step').length); From ff5e9e8d40b4e16758fc66ae3fe335361ca6b533 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Aug 2022 16:54:45 +0200 Subject: [PATCH 204/266] Nobody cares about the number of items to hide --- code/addons/interactions/src/components/Interaction.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/addons/interactions/src/components/Interaction.tsx b/code/addons/interactions/src/components/Interaction.tsx index 8888e092cd85..7ad25af69a32 100644 --- a/code/addons/interactions/src/components/Interaction.tsx +++ b/code/addons/interactions/src/components/Interaction.tsx @@ -165,11 +165,7 @@ export const Interaction = ({ {childCallIds?.length > 0 && ( - } + tooltip={} > From ec52a4e42f917cf5f087c713d67a6011282a09e6 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 16 Aug 2022 03:00:21 +0800 Subject: [PATCH 205/266] 7.0.0-alpha.20 changelog --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45d59d9ba8af..84a2a8635d95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## 7.0.0-alpha.20 (August 16, 2022) + +#### Features + +- CLI: Automigration for new frameworks [#18919](https://github.com/storybooks/storybook/pull/18919) + +#### Bug Fixes + +- UI: Fix the order of addons appearing in prebuilt manager [#18918](https://github.com/storybooks/storybook/pull/18918) + +#### Maintenance + +- Exit sandbox gracefully on cancel [#18936](https://github.com/storybooks/storybook/pull/18936) +- Disable telemetry in monorepo and CI [#18935](https://github.com/storybooks/storybook/pull/18935) +- Convert cypress e2e tests to playwright [#18932](https://github.com/storybooks/storybook/pull/18932) +- CI: Refactor to use tasks [#18922](https://github.com/storybooks/storybook/pull/18922) +- Angular: Add renderer components / stories [#18934](https://github.com/storybooks/storybook/pull/18934) +- Examples: Add angular repro template and refactor [#18931](https://github.com/storybooks/storybook/pull/18931) + ## 7.0.0-alpha.19 (August 12, 2022) #### Features From c8f8dfb6a4701bdf4a99443f81015372233d00b2 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 16 Aug 2022 03:21:52 +0800 Subject: [PATCH 206/266] Fix typescript types --- code/lib/cli/src/automigrate/fixes/new-frameworks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts index f288787485bd..24864113d31f 100644 --- a/code/lib/cli/src/automigrate/fixes/new-frameworks.ts +++ b/code/lib/cli/src/automigrate/fixes/new-frameworks.ts @@ -49,7 +49,7 @@ interface NewFrameworkRunOptions { packageJson: PackageJsonWithDepsAndDevDeps; dependenciesToAdd: string[]; dependenciesToRemove: string[]; - frameworkPackage: keyof typeof packagesMap; + frameworkPackage: string; frameworkOptions: Record; builderInfo: { name: string; From 68787379ca046d2c1e16383909984a6c2da37f23 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 16 Aug 2022 03:23:44 +0800 Subject: [PATCH 207/266] Update root, peer deps, version.ts/json to 7.0.0-alpha.20 [ci skip] --- .../storyshots-puppeteer/package.json | 2 +- code/lib/api/src/version.ts | 2 +- code/lib/cli/src/versions.ts | 150 +++++++++--------- code/package.json | 2 +- 4 files changed, 78 insertions(+), 78 deletions(-) diff --git a/code/addons/storyshots/storyshots-puppeteer/package.json b/code/addons/storyshots/storyshots-puppeteer/package.json index 738d91deeeb3..8ccab53f3d5d 100644 --- a/code/addons/storyshots/storyshots-puppeteer/package.json +++ b/code/addons/storyshots/storyshots-puppeteer/package.json @@ -45,7 +45,7 @@ "puppeteer": "^2.0.0 || ^3.0.0" }, "peerDependencies": { - "@storybook/addon-storyshots": "7.0.0-alpha.19", + "@storybook/addon-storyshots": "7.0.0-alpha.20", "puppeteer": ">=2.0.0" }, "peerDependenciesMeta": { diff --git a/code/lib/api/src/version.ts b/code/lib/api/src/version.ts index a6322b24e3e7..4e28b620d922 100644 --- a/code/lib/api/src/version.ts +++ b/code/lib/api/src/version.ts @@ -1 +1 @@ -export const version = '7.0.0-alpha.19'; +export const version = '7.0.0-alpha.20'; diff --git a/code/lib/cli/src/versions.ts b/code/lib/cli/src/versions.ts index 9649f954af13..69a51c4eedb8 100644 --- a/code/lib/cli/src/versions.ts +++ b/code/lib/cli/src/versions.ts @@ -1,78 +1,78 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '7.0.0-alpha.19', - '@storybook/addon-actions': '7.0.0-alpha.19', - '@storybook/addon-backgrounds': '7.0.0-alpha.19', - '@storybook/addon-controls': '7.0.0-alpha.19', - '@storybook/addon-docs': '7.0.0-alpha.19', - '@storybook/addon-essentials': '7.0.0-alpha.19', - '@storybook/addon-highlight': '7.0.0-alpha.19', - '@storybook/addon-interactions': '7.0.0-alpha.19', - '@storybook/addon-jest': '7.0.0-alpha.19', - '@storybook/addon-links': '7.0.0-alpha.19', - '@storybook/addon-measure': '7.0.0-alpha.19', - '@storybook/addon-outline': '7.0.0-alpha.19', - '@storybook/addon-storyshots': '7.0.0-alpha.19', - '@storybook/addon-storyshots-puppeteer': '7.0.0-alpha.19', - '@storybook/addon-storysource': '7.0.0-alpha.19', - '@storybook/addon-toolbars': '7.0.0-alpha.19', - '@storybook/addon-viewport': '7.0.0-alpha.19', - '@storybook/addons': '7.0.0-alpha.19', - '@storybook/angular': '7.0.0-alpha.19', - '@storybook/api': '7.0.0-alpha.19', - '@storybook/blocks': '7.0.0-alpha.19', - '@storybook/builder-manager': '7.0.0-alpha.19', - '@storybook/builder-webpack5': '7.0.0-alpha.19', - '@storybook/channel-postmessage': '7.0.0-alpha.19', - '@storybook/channel-websocket': '7.0.0-alpha.19', - '@storybook/channels': '7.0.0-alpha.19', - '@storybook/cli': '7.0.0-alpha.19', - '@storybook/client-api': '7.0.0-alpha.19', - '@storybook/client-logger': '7.0.0-alpha.19', - '@storybook/codemod': '7.0.0-alpha.19', - '@storybook/components': '7.0.0-alpha.19', - '@storybook/core-client': '7.0.0-alpha.19', - '@storybook/core-common': '7.0.0-alpha.19', - '@storybook/core-events': '7.0.0-alpha.19', - '@storybook/core-server': '7.0.0-alpha.19', - '@storybook/core-webpack': '7.0.0-alpha.19', - '@storybook/csf-tools': '7.0.0-alpha.19', - '@storybook/docs-tools': '7.0.0-alpha.19', - '@storybook/ember': '7.0.0-alpha.19', - '@storybook/html': '7.0.0-alpha.19', - '@storybook/html-webpack5': '7.0.0-alpha.19', - '@storybook/instrumenter': '7.0.0-alpha.19', - '@storybook/node-logger': '7.0.0-alpha.19', - '@storybook/postinstall': '7.0.0-alpha.19', - '@storybook/preact': '7.0.0-alpha.19', - '@storybook/preact-webpack5': '7.0.0-alpha.19', - '@storybook/preset-html-webpack': '7.0.0-alpha.19', - '@storybook/preset-preact-webpack': '7.0.0-alpha.19', - '@storybook/preset-react-webpack': '7.0.0-alpha.19', - '@storybook/preset-server-webpack': '7.0.0-alpha.19', - '@storybook/preset-svelte-webpack': '7.0.0-alpha.19', - '@storybook/preset-vue-webpack': '7.0.0-alpha.19', - '@storybook/preset-vue3-webpack': '7.0.0-alpha.19', - '@storybook/preset-web-components-webpack': '7.0.0-alpha.19', - '@storybook/preview-web': '7.0.0-alpha.19', - '@storybook/react': '7.0.0-alpha.19', - '@storybook/react-webpack5': '7.0.0-alpha.19', - '@storybook/router': '7.0.0-alpha.19', - '@storybook/server': '7.0.0-alpha.19', - '@storybook/server-webpack5': '7.0.0-alpha.19', - '@storybook/source-loader': '7.0.0-alpha.19', - '@storybook/store': '7.0.0-alpha.19', - '@storybook/svelte': '7.0.0-alpha.19', - '@storybook/svelte-webpack5': '7.0.0-alpha.19', - '@storybook/telemetry': '7.0.0-alpha.19', - '@storybook/theming': '7.0.0-alpha.19', - '@storybook/ui': '7.0.0-alpha.19', - '@storybook/vue': '7.0.0-alpha.19', - '@storybook/vue-webpack5': '7.0.0-alpha.19', - '@storybook/vue3': '7.0.0-alpha.19', - '@storybook/vue3-webpack5': '7.0.0-alpha.19', - '@storybook/web-components': '7.0.0-alpha.19', - '@storybook/web-components-webpack5': '7.0.0-alpha.19', - sb: '7.0.0-alpha.19', - storybook: '7.0.0-alpha.19', + '@storybook/addon-a11y': '7.0.0-alpha.20', + '@storybook/addon-actions': '7.0.0-alpha.20', + '@storybook/addon-backgrounds': '7.0.0-alpha.20', + '@storybook/addon-controls': '7.0.0-alpha.20', + '@storybook/addon-docs': '7.0.0-alpha.20', + '@storybook/addon-essentials': '7.0.0-alpha.20', + '@storybook/addon-highlight': '7.0.0-alpha.20', + '@storybook/addon-interactions': '7.0.0-alpha.20', + '@storybook/addon-jest': '7.0.0-alpha.20', + '@storybook/addon-links': '7.0.0-alpha.20', + '@storybook/addon-measure': '7.0.0-alpha.20', + '@storybook/addon-outline': '7.0.0-alpha.20', + '@storybook/addon-storyshots': '7.0.0-alpha.20', + '@storybook/addon-storyshots-puppeteer': '7.0.0-alpha.20', + '@storybook/addon-storysource': '7.0.0-alpha.20', + '@storybook/addon-toolbars': '7.0.0-alpha.20', + '@storybook/addon-viewport': '7.0.0-alpha.20', + '@storybook/addons': '7.0.0-alpha.20', + '@storybook/angular': '7.0.0-alpha.20', + '@storybook/api': '7.0.0-alpha.20', + '@storybook/blocks': '7.0.0-alpha.20', + '@storybook/builder-manager': '7.0.0-alpha.20', + '@storybook/builder-webpack5': '7.0.0-alpha.20', + '@storybook/channel-postmessage': '7.0.0-alpha.20', + '@storybook/channel-websocket': '7.0.0-alpha.20', + '@storybook/channels': '7.0.0-alpha.20', + '@storybook/cli': '7.0.0-alpha.20', + '@storybook/client-api': '7.0.0-alpha.20', + '@storybook/client-logger': '7.0.0-alpha.20', + '@storybook/codemod': '7.0.0-alpha.20', + '@storybook/components': '7.0.0-alpha.20', + '@storybook/core-client': '7.0.0-alpha.20', + '@storybook/core-common': '7.0.0-alpha.20', + '@storybook/core-events': '7.0.0-alpha.20', + '@storybook/core-server': '7.0.0-alpha.20', + '@storybook/core-webpack': '7.0.0-alpha.20', + '@storybook/csf-tools': '7.0.0-alpha.20', + '@storybook/docs-tools': '7.0.0-alpha.20', + '@storybook/ember': '7.0.0-alpha.20', + '@storybook/html': '7.0.0-alpha.20', + '@storybook/html-webpack5': '7.0.0-alpha.20', + '@storybook/instrumenter': '7.0.0-alpha.20', + '@storybook/node-logger': '7.0.0-alpha.20', + '@storybook/postinstall': '7.0.0-alpha.20', + '@storybook/preact': '7.0.0-alpha.20', + '@storybook/preact-webpack5': '7.0.0-alpha.20', + '@storybook/preset-html-webpack': '7.0.0-alpha.20', + '@storybook/preset-preact-webpack': '7.0.0-alpha.20', + '@storybook/preset-react-webpack': '7.0.0-alpha.20', + '@storybook/preset-server-webpack': '7.0.0-alpha.20', + '@storybook/preset-svelte-webpack': '7.0.0-alpha.20', + '@storybook/preset-vue-webpack': '7.0.0-alpha.20', + '@storybook/preset-vue3-webpack': '7.0.0-alpha.20', + '@storybook/preset-web-components-webpack': '7.0.0-alpha.20', + '@storybook/preview-web': '7.0.0-alpha.20', + '@storybook/react': '7.0.0-alpha.20', + '@storybook/react-webpack5': '7.0.0-alpha.20', + '@storybook/router': '7.0.0-alpha.20', + '@storybook/server': '7.0.0-alpha.20', + '@storybook/server-webpack5': '7.0.0-alpha.20', + '@storybook/source-loader': '7.0.0-alpha.20', + '@storybook/store': '7.0.0-alpha.20', + '@storybook/svelte': '7.0.0-alpha.20', + '@storybook/svelte-webpack5': '7.0.0-alpha.20', + '@storybook/telemetry': '7.0.0-alpha.20', + '@storybook/theming': '7.0.0-alpha.20', + '@storybook/ui': '7.0.0-alpha.20', + '@storybook/vue': '7.0.0-alpha.20', + '@storybook/vue-webpack5': '7.0.0-alpha.20', + '@storybook/vue3': '7.0.0-alpha.20', + '@storybook/vue3-webpack5': '7.0.0-alpha.20', + '@storybook/web-components': '7.0.0-alpha.20', + '@storybook/web-components-webpack5': '7.0.0-alpha.20', + sb: '7.0.0-alpha.20', + storybook: '7.0.0-alpha.20', }; diff --git a/code/package.json b/code/package.json index 3286bd071b80..2086cc26476f 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "description": "Storybook is an open source tool for developing UI components in isolation for React, Vue and Angular. It makes building stunning UIs organized and efficient.", "keywords": [ From a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 16 Aug 2022 03:38:31 +0800 Subject: [PATCH 208/266] v7.0.0-alpha.20 --- code/addons/a11y/package.json | 18 +++---- code/addons/actions/package.json | 14 ++--- code/addons/backgrounds/package.json | 14 ++--- code/addons/controls/package.json | 20 +++---- code/addons/docs/package.json | 30 +++++------ code/addons/essentials/package.json | 30 +++++------ code/addons/highlight/package.json | 6 +-- code/addons/interactions/package.json | 18 +++---- code/addons/jest/package.json | 14 ++--- code/addons/links/package.json | 10 ++-- code/addons/measure/package.json | 12 ++--- code/addons/outline/package.json | 12 ++--- .../storyshots/storyshots-core/package.json | 22 ++++---- .../storyshots-puppeteer/package.json | 4 +- code/addons/storysource/package.json | 16 +++--- code/addons/toolbars/package.json | 12 ++--- code/addons/viewport/package.json | 14 ++--- code/examples/angular-cli/package.json | 32 ++++++------ code/examples/cra-kitchen-sink/package.json | 32 ++++++------ code/examples/cra-ts-essentials/package.json | 18 +++---- .../examples/cra-ts-kitchen-sink/package.json | 22 ++++---- code/examples/doc-blocks/package.json | 20 +++---- code/examples/ember-cli/package.json | 28 +++++----- code/examples/external-docs/package.json | 20 +++---- code/examples/html-kitchen-sink/package.json | 38 +++++++------- code/examples/official-storybook/package.json | 52 +++++++++---------- .../examples/preact-kitchen-sink/package.json | 28 +++++----- code/examples/react-ts/package.json | 22 ++++---- .../examples/server-kitchen-sink/package.json | 22 ++++---- code/examples/standalone-preview/package.json | 12 ++--- .../examples/svelte-kitchen-sink/package.json | 34 ++++++------ code/examples/vue-3-cli/package.json | 18 +++---- code/examples/vue-cli/package.json | 14 ++--- code/examples/vue-kitchen-sink/package.json | 34 ++++++------ .../web-components-kitchen-sink/package.json | 2 +- code/frameworks/angular/package.json | 24 ++++----- code/frameworks/ember/package.json | 12 ++--- code/frameworks/html-webpack5/package.json | 10 ++-- code/frameworks/preact-webpack5/package.json | 10 ++-- code/frameworks/react-webpack5/package.json | 8 +-- code/frameworks/server-webpack5/package.json | 10 ++-- code/frameworks/svelte-webpack5/package.json | 10 ++-- code/frameworks/vue-webpack5/package.json | 10 ++-- code/frameworks/vue3-webpack5/package.json | 10 ++-- .../web-components-webpack5/package.json | 10 ++-- code/lerna.json | 2 +- code/lib/addons/package.json | 14 ++--- code/lib/api/package.json | 12 ++--- code/lib/blocks/package.json | 22 ++++---- code/lib/builder-manager/package.json | 8 +-- code/lib/builder-webpack5/package.json | 34 ++++++------ code/lib/channel-postmessage/package.json | 8 +-- code/lib/channel-websocket/package.json | 6 +-- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 4 +- code/lib/cli-storybook/package.json | 4 +- code/lib/cli/package.json | 16 +++--- code/lib/client-api/package.json | 14 ++--- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 6 +-- code/lib/components/package.json | 6 +-- code/lib/core-client/package.json | 20 +++---- code/lib/core-common/package.json | 4 +- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 20 +++---- code/lib/core-webpack/package.json | 6 +-- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 4 +- code/lib/instrumenter/package.json | 8 +-- code/lib/node-logger/package.json | 2 +- code/lib/postinstall/package.json | 2 +- code/lib/preview-web/package.json | 14 ++--- code/lib/router/package.json | 4 +- code/lib/source-loader/package.json | 6 +-- code/lib/store/package.json | 8 +-- code/lib/telemetry/package.json | 6 +-- code/lib/theming/package.json | 4 +- code/lib/ui/package.json | 22 ++++---- code/presets/html-webpack/package.json | 4 +- code/presets/preact-webpack/package.json | 4 +- code/presets/react-webpack/package.json | 10 ++-- code/presets/server-webpack/package.json | 8 +-- code/presets/svelte-webpack/package.json | 6 +-- code/presets/vue-webpack/package.json | 6 +-- code/presets/vue3-webpack/package.json | 6 +-- .../web-components-webpack/package.json | 4 +- code/renderers/html/package.json | 12 ++--- code/renderers/preact/package.json | 8 +-- code/renderers/react/package.json | 12 ++--- code/renderers/server/package.json | 10 ++-- code/renderers/svelte/package.json | 12 ++--- code/renderers/vue/package.json | 12 ++--- code/renderers/vue3/package.json | 10 ++-- code/renderers/web-components/package.json | 16 +++--- 94 files changed, 631 insertions(+), 631 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index bfdf650919ca..5d6c4626f31c 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", @@ -62,15 +62,15 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "axe-core": "^4.2.0", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 2cacb6697add..ec210c9407b8 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", @@ -35,13 +35,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "dequal": "^2.0.2", "global": "^4.4.0", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 272ec6045a50..aa1c0b55490b 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", @@ -62,13 +62,13 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index fbe117ac3e55..0e34d57545f7 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", @@ -57,16 +57,16 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/blocks": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/blocks": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 562a7ad673a9..32297bc41bd2 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", @@ -53,22 +53,22 @@ "@babel/preset-env": "^7.12.11", "@jest/transform": "^26.6.2", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/blocks": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/blocks": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/csf-tools": "7.0.0-alpha.19", - "@storybook/docs-tools": "7.0.0-alpha.19", + "@storybook/csf-tools": "7.0.0-alpha.20", + "@storybook/docs-tools": "7.0.0-alpha.20", "@storybook/mdx1-csf": "0.0.5-canary.13.9ce928a.0", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/postinstall": "7.0.0-alpha.19", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/source-loader": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/postinstall": "7.0.0-alpha.20", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/source-loader": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "babel-loader": "^8.2.5", "core-js": "^3.8.2", "dequal": "^2.0.2", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 0a9020226852..32313a9fb94d 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", @@ -33,25 +33,25 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-measure": "7.0.0-alpha.19", - "@storybook/addon-outline": "7.0.0-alpha.19", - "@storybook/addon-toolbars": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-measure": "7.0.0-alpha.20", + "@storybook/addon-outline": "7.0.0-alpha.20", + "@storybook/addon-toolbars": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "ts-dedent": "^2.0.0" }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/vue": "7.0.0-alpha.19", + "@storybook/vue": "7.0.0-alpha.20", "@types/jest": "^26.0.16", "typescript": "~4.6.3" }, diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 9549be829549..9337ede3b996 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", @@ -37,8 +37,8 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0" }, diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index 432b8e502921..03457d94c40a 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", @@ -36,15 +36,15 @@ }, "dependencies": { "@devtools-ds/object-inspector": "^1.1.2", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/instrumenter": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/instrumenter": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "jest-mock": "^27.0.6", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 1e360e767f4a..3b602c1dbdec 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -59,12 +59,12 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react-sizeme": "^3.0.1", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index d13e99b0468a..7eb8337383f2 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", @@ -63,11 +63,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/router": "7.0.0-alpha.19", + "@storybook/router": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "prop-types": "^15.7.2", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index 204c8da5593f..df2316a2920d 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", @@ -61,11 +61,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", "core-js": "^3.8.2", "global": "^4.4.0" diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index dc797b9a9f1f..5177442945a9 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", @@ -64,11 +64,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/addons/storyshots/storyshots-core/package.json b/code/addons/storyshots/storyshots-core/package.json index 357d915fce32..d4e58415e5e6 100644 --- a/code/addons/storyshots/storyshots-core/package.json +++ b/code/addons/storyshots/storyshots-core/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Take a code snapshot of every story automatically with Jest", "keywords": [ "addon", @@ -38,12 +38,12 @@ }, "dependencies": { "@jest/transform": "^26.6.2", - "@storybook/addons": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", "@storybook/babel-plugin-require-context-hook": "1.0.1", - "@storybook/client-api": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-webpack": "7.0.0-alpha.19", + "@storybook/client-api": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-webpack": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", "@types/glob": "^7.1.3", "@types/jest": "^26.0.16", @@ -62,11 +62,11 @@ "@angular/core": "^13.3.6", "@angular/platform-browser-dynamic": "^13.3.6", "@emotion/jest": "^11.8.0", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/angular": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/vue": "7.0.0-alpha.19", - "@storybook/vue3": "7.0.0-alpha.19", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/angular": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/vue": "7.0.0-alpha.20", + "@storybook/vue3": "7.0.0-alpha.20", "babel-loader": "^8.2.5", "enzyme": "^3.11.0", "enzyme-to-json": "^3.6.1", diff --git a/code/addons/storyshots/storyshots-puppeteer/package.json b/code/addons/storyshots/storyshots-puppeteer/package.json index 8ccab53f3d5d..ff8353b43a6b 100644 --- a/code/addons/storyshots/storyshots-puppeteer/package.json +++ b/code/addons/storyshots/storyshots-puppeteer/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots-puppeteer", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Image snapshots addition to StoryShots based on puppeteer", "keywords": [ "addon", @@ -35,7 +35,7 @@ "dependencies": { "@axe-core/puppeteer": "^4.2.0", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", "@types/jest-image-snapshot": "^4.1.3", "core-js": "^3.8.2", "jest-image-snapshot": "^4.3.0" diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index fe71fcb4868d..bb708b848af5 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", @@ -35,13 +35,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/router": "7.0.0-alpha.19", - "@storybook/source-loader": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/router": "7.0.0-alpha.20", + "@storybook/source-loader": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "estraverse": "^5.2.0", "prop-types": "^15.7.2", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index a9d6f8d1441a..f922ea80deab 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", @@ -57,11 +57,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2" }, "devDependencies": { diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 6e97da5a1990..6b6b768fbb48 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", @@ -36,12 +36,12 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", diff --git a/code/examples/angular-cli/package.json b/code/examples/angular-cli/package.json index 07731391d056..a91eaa594c3e 100644 --- a/code/examples/angular-cli/package.json +++ b/code/examples/angular-cli/package.json @@ -1,6 +1,6 @@ { "name": "angular-cli", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "license": "MIT", "workspaces": { @@ -44,22 +44,22 @@ "@angular/compiler-cli": "^13.3.6", "@angular/elements": "^13.3.6", "@compodoc/compodoc": "^1.1.18", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-interactions": "7.0.0-alpha.19", - "@storybook/addon-jest": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/angular": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-interactions": "7.0.0-alpha.20", + "@storybook/addon-jest": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/angular": "7.0.0-alpha.20", "@storybook/babel-plugin-require-context-hook": "1.0.1", "@storybook/jest": "^0.0.10", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/source-loader": "7.0.0-alpha.20", "@storybook/testing-library": "0.0.14-next.0", "@types/core-js": "^2.5.4", "@types/jest": "^26.0.16", @@ -72,7 +72,7 @@ "jest": "^26.6.3", "jest-preset-angular": "^8.3.2", "protractor": "~7.0.0", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "storybook-addon-angular-ivy": "^0.0.1", "ts-jest": "^26.4.4", "ts-node": "^10.4.0", diff --git a/code/examples/cra-kitchen-sink/package.json b/code/examples/cra-kitchen-sink/package.json index 8b870c708a9d..c1ada759e826 100644 --- a/code/examples/cra-kitchen-sink/package.json +++ b/code/examples/cra-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "cra-kitchen-sink", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "react-scripts build", @@ -11,7 +11,7 @@ "test": "react-scripts test --env=jsdom" }, "dependencies": { - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/client-logger": "7.0.0-alpha.20", "global": "^4.4.0", "prop-types": "^15.7.2", "react": "16.14.0", @@ -21,21 +21,21 @@ }, "devDependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-jest": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/builder-webpack5": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-jest": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/builder-webpack5": "7.0.0-alpha.20", "@storybook/preset-create-react-app": "^4.1.0", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", - "storybook": "7.0.0-alpha.19", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", + "storybook": "7.0.0-alpha.20", "webpack": "5" }, "storybook": { diff --git a/code/examples/cra-ts-essentials/package.json b/code/examples/cra-ts-essentials/package.json index f9e05bb750ea..81d1531be4f3 100644 --- a/code/examples/cra-ts-essentials/package.json +++ b/code/examples/cra-ts-essentials/package.json @@ -1,6 +1,6 @@ { "name": "cra-ts-essentials", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "react-scripts build", @@ -23,8 +23,8 @@ ] }, "dependencies": { - "@storybook/components": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "@types/jest": "^26.0.16", "@types/node": "^14.14.20 || ^16.0.0", "@types/react": "^16.14.23", @@ -37,14 +37,14 @@ "typescript": "~4.6.3" }, "devDependencies": { - "@storybook/addon-essentials": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/builder-webpack5": "7.0.0-alpha.19", + "@storybook/addon-essentials": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/builder-webpack5": "7.0.0-alpha.20", "@storybook/preset-create-react-app": "^4.1.0", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", "@storybook/testing-library": "^0.0.9", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "ts-node": "^10.4.0", "webpack": "5" }, diff --git a/code/examples/cra-ts-kitchen-sink/package.json b/code/examples/cra-ts-kitchen-sink/package.json index 96f4de26b6f3..fd96d74e9cb0 100644 --- a/code/examples/cra-ts-kitchen-sink/package.json +++ b/code/examples/cra-ts-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "cra-ts-kitchen-sink", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "react-scripts build", @@ -34,23 +34,23 @@ "typescript": "~4.6.3" }, "devDependencies": { - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/builder-webpack5": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/builder-webpack5": "7.0.0-alpha.20", "@storybook/preset-create-react-app": "^4.1.0", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", "@types/enzyme": "^3.10.8", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.9.1", "enzyme-to-json": "^3.6.1", "fork-ts-checker-webpack-plugin": "^7.2.6", "react-moment-proptypes": "^1.7.0", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "ts-node": "^10.4.0", "webpack": "5" }, diff --git a/code/examples/doc-blocks/package.json b/code/examples/doc-blocks/package.json index 94a959f5a97a..d61238b26f02 100644 --- a/code/examples/doc-blocks/package.json +++ b/code/examples/doc-blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/example-doc-blocks", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb build", @@ -15,20 +15,20 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addon-essentials": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/cli": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addon-essentials": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/cli": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "@types/babel__preset-env": "^7", "@types/react": "^16.14.23", "@types/react-dom": "^16.9.14", "cross-env": "^7.0.3", "lodash": "^4.17.21", - "sb": "7.0.0-alpha.19", + "sb": "7.0.0-alpha.20", "typescript": "~4.6.3", "webpack": "5" }, diff --git a/code/examples/ember-cli/package.json b/code/examples/ember-cli/package.json index bda64103c059..388b46e3f009 100644 --- a/code/examples/ember-cli/package.json +++ b/code/examples/ember-cli/package.json @@ -1,6 +1,6 @@ { "name": "ember-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "--build-storybook": "yarn storybook-prebuild && storybook build", @@ -17,19 +17,19 @@ "devDependencies": { "@babel/core": "^7.12.10", "@ember/optional-features": "^2.0.0", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/ember": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/ember": "7.0.0-alpha.20", "@storybook/ember-cli-storybook": "^0.2.1", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/source-loader": "7.0.0-alpha.20", "babel-loader": "^8.2.5", "broccoli-asset-rev": "^3.0.0", "browserify-zlib": "^0.2.0", @@ -49,7 +49,7 @@ "loader.js": "^4.7.0", "os-browserify": "^0.3.0", "shx": "^0.3.2", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "stream-browserify": "^3.0.0", "vm-browserify": "^1.1.2", "webpack": "5", diff --git a/code/examples/external-docs/package.json b/code/examples/external-docs/package.json index 39f5cedb3d21..356f2080463f 100644 --- a/code/examples/external-docs/package.json +++ b/code/examples/external-docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/external-docs", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "next build", @@ -11,15 +11,15 @@ "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook dev -p 9011 --no-manager-cache -c .storybook" }, "dependencies": { - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-essentials": "7.0.0-alpha.19", - "@storybook/blocks": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-essentials": "7.0.0-alpha.20", + "@storybook/blocks": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "formik": "^2.2.9", "next": "^12.1.0", "nextra": "^1.1.0", @@ -38,7 +38,7 @@ "cross-env": "^7.0.3", "eslint": "8.7.0", "eslint-config-next": "12.0.8", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "typescript": "~4.6.3", "webpack": "5" } diff --git a/code/examples/html-kitchen-sink/package.json b/code/examples/html-kitchen-sink/package.json index cf683cbb9c62..3f7a99cef010 100644 --- a/code/examples/html-kitchen-sink/package.json +++ b/code/examples/html-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "html-kitchen-sink", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "description": "", "keywords": [], @@ -13,31 +13,31 @@ "storybook": "storybook dev -p 9006 --no-manager-cache" }, "devDependencies": { - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-jest": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-jest": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", "@storybook/addon-postcss": "^2.0.0", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-api": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", - "@storybook/html": "7.0.0-alpha.19", - "@storybook/html-webpack5": "7.0.0-alpha.19", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-api": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", + "@storybook/html": "7.0.0-alpha.20", + "@storybook/html-webpack5": "7.0.0-alpha.20", + "@storybook/source-loader": "7.0.0-alpha.20", "autoprefixer": "^10.0.1", "eventemitter3": "^4.0.7", "format-json": "^1.0.3", "global": "^4.4.0", "postcss": "^8.2.4", "postcss-color-rebeccapurple": "^6.0.0", - "storybook": "7.0.0-alpha.19" + "storybook": "7.0.0-alpha.20" }, "storybook": { "chromatic": { diff --git a/code/examples/official-storybook/package.json b/code/examples/official-storybook/package.json index 464ef1de0c6e..1b0b0278ca2e 100644 --- a/code/examples/official-storybook/package.json +++ b/code/examples/official-storybook/package.json @@ -1,6 +1,6 @@ { "name": "official-storybook", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook build -c ./", @@ -13,33 +13,33 @@ "devDependencies": { "@emotion/jest": "^11.8.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-interactions": "7.0.0-alpha.19", - "@storybook/addon-jest": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storyshots-puppeteer": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-toolbars": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/cli": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-interactions": "7.0.0-alpha.20", + "@storybook/addon-jest": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storyshots-puppeteer": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-toolbars": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/cli": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/design-system": "^5.4.7", "@storybook/jest": "^0.0.10", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", - "@storybook/router": "7.0.0-alpha.19", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", + "@storybook/router": "7.0.0-alpha.20", + "@storybook/source-loader": "7.0.0-alpha.20", "@storybook/testing-library": "0.0.14-next.0", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "@testing-library/dom": "^7.31.2", "@testing-library/user-event": "^13.1.9", "chromatic": "^6.0.2", @@ -55,7 +55,7 @@ "prop-types": "^15.7.2", "react": "16.14.0", "react-dom": "16.14.0", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "terser-webpack-plugin": "^5.3.1", "uuid-browser": "^3.1.0", "webpack": "5" diff --git a/code/examples/preact-kitchen-sink/package.json b/code/examples/preact-kitchen-sink/package.json index ceace462a3dc..db0289d49eed 100644 --- a/code/examples/preact-kitchen-sink/package.json +++ b/code/examples/preact-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "preact-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -14,18 +14,18 @@ }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/preact": "7.0.0-alpha.19", - "@storybook/preact-webpack5": "7.0.0-alpha.19", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/preact": "7.0.0-alpha.20", + "@storybook/preact-webpack5": "7.0.0-alpha.20", + "@storybook/source-loader": "7.0.0-alpha.20", "@types/prop-types": "^15.7.3", "@types/react": "^17", "@types/react-dom": "^17", @@ -38,7 +38,7 @@ "raw-loader": "^4.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "svg-url-loader": "^7.1.1", "webpack": "5", "webpack-dev-server": "^4.8.1" diff --git a/code/examples/react-ts/package.json b/code/examples/react-ts/package.json index 112c7e19f018..7a11c94a1410 100644 --- a/code/examples/react-ts/package.json +++ b/code/examples/react-ts/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/example-react-ts", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook build", @@ -17,15 +17,15 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addon-essentials": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/cli": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/addon-essentials": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/cli": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "@testing-library/dom": "^7.31.2", "@testing-library/react": "12.1.2", "@testing-library/user-event": "^13.1.9", @@ -34,7 +34,7 @@ "@types/react-dom": "^16.9.14", "cross-env": "^7.0.3", "lodash": "^4.17.21", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "typescript": "~4.6.3", "webpack": "5" } diff --git a/code/examples/server-kitchen-sink/package.json b/code/examples/server-kitchen-sink/package.json index c5efae0f52d1..843084261e07 100644 --- a/code/examples/server-kitchen-sink/package.json +++ b/code/examples/server-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "server-kitchen-sink", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "description": "", "keywords": [], @@ -14,15 +14,15 @@ "storybook": "SERVER_PORT=1137 storybook dev -p 9006 --quiet" }, "devDependencies": { - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/server": "7.0.0-alpha.19", - "@storybook/server-webpack5": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/server": "7.0.0-alpha.20", + "@storybook/server-webpack5": "7.0.0-alpha.20", "concurrently": "^5.3.0", "cors": "^2.8.5", "express": "~4.17.1", @@ -30,6 +30,6 @@ "nodemon": "^2.0.7", "pug": "^3.0.0", "safe-identifier": "^0.4.1", - "storybook": "7.0.0-alpha.19" + "storybook": "7.0.0-alpha.20" } } diff --git a/code/examples/standalone-preview/package.json b/code/examples/standalone-preview/package.json index 6a18add58228..4da015571332 100644 --- a/code/examples/standalone-preview/package.json +++ b/code/examples/standalone-preview/package.json @@ -1,20 +1,20 @@ { "name": "standalone-preview", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook dev -p 9011 -c ../official-storybook --no-manager-cache --preview-url=http://localhost:1337/external-iframe.html", "storybook-preview": "cross-env PREVIEW_URL=external-iframe.html parcel ./storybook.html --port 1337" }, "devDependencies": { - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/cli": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", - "@storybook/react-webpack5": "7.0.0-alpha.19", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/cli": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", + "@storybook/react-webpack5": "7.0.0-alpha.20", "cross-env": "^7.0.3", "parcel": "2.0.1", "react": "16.14.0", "react-dom": "16.14.0", - "storybook": "7.0.0-alpha.19" + "storybook": "7.0.0-alpha.20" } } diff --git a/code/examples/svelte-kitchen-sink/package.json b/code/examples/svelte-kitchen-sink/package.json index 9c2065eed75b..137d71afbc3b 100644 --- a/code/examples/svelte-kitchen-sink/package.json +++ b/code/examples/svelte-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "svelte-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build-storybook": "storybook build", @@ -10,24 +10,24 @@ "global": "^4.4.0" }, "devDependencies": { - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-interactions": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-interactions": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", "@storybook/jest": "^0.0.10", - "@storybook/source-loader": "7.0.0-alpha.19", - "@storybook/svelte": "7.0.0-alpha.19", - "@storybook/svelte-webpack5": "7.0.0-alpha.19", + "@storybook/source-loader": "7.0.0-alpha.20", + "@storybook/svelte": "7.0.0-alpha.20", + "@storybook/svelte-webpack5": "7.0.0-alpha.20", "@storybook/testing-library": "0.0.14-next.0", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "svelte-jester": "^2.3.2", "svelte-preprocess": "^4.10.6" }, diff --git a/code/examples/vue-3-cli/package.json b/code/examples/vue-3-cli/package.json index 416262da2f2d..8693ebe591e5 100644 --- a/code/examples/vue-3-cli/package.json +++ b/code/examples/vue-3-cli/package.json @@ -1,6 +1,6 @@ { "name": "vue-3-cli-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "vue-cli-service build", @@ -14,21 +14,21 @@ }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-essentials": "7.0.0-alpha.19", - "@storybook/addon-interactions": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-essentials": "7.0.0-alpha.20", + "@storybook/addon-interactions": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", "@storybook/jest": "^0.0.10", "@storybook/testing-library": "0.0.14-next.0", - "@storybook/vue3": "7.0.0-alpha.19", - "@storybook/vue3-webpack5": "7.0.0-alpha.19", + "@storybook/vue3": "7.0.0-alpha.20", + "@storybook/vue3-webpack5": "7.0.0-alpha.20", "@vue/cli-plugin-babel": "^5.0.4", "@vue/cli-plugin-typescript": "^5.0.4", "@vue/cli-service": "^5.0.4", "@vue/compiler-sfc": "^3.2.36", "babel-loader": "^8.2.5", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "typescript": "~4.6.3", "vue-jest": "^5.0.0-alpha.8", "vue-loader": "^16.0.0" diff --git a/code/examples/vue-cli/package.json b/code/examples/vue-cli/package.json index cde4061040bc..0009d1426e28 100644 --- a/code/examples/vue-cli/package.json +++ b/code/examples/vue-cli/package.json @@ -1,6 +1,6 @@ { "name": "vue-cli-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "vue-cli-service build", @@ -15,16 +15,16 @@ "vue-property-decorator": "^9.1.2" }, "devDependencies": { - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-essentials": "7.0.0-alpha.19", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-essentials": "7.0.0-alpha.20", "@storybook/preset-scss": "^1.0.3", - "@storybook/source-loader": "7.0.0-alpha.19", - "@storybook/vue": "7.0.0-alpha.19", - "@storybook/vue-webpack5": "7.0.0-alpha.19", + "@storybook/source-loader": "7.0.0-alpha.20", + "@storybook/vue": "7.0.0-alpha.20", + "@storybook/vue-webpack5": "7.0.0-alpha.20", "@vue/cli-plugin-babel": "^5.0.4", "@vue/cli-plugin-typescript": "^5.0.4", "@vue/cli-service": "^5.0.4", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "typescript": "~4.6.3", "vue-template-compiler": "^2.6.14" } diff --git a/code/examples/vue-kitchen-sink/package.json b/code/examples/vue-kitchen-sink/package.json index 54a86fd03b65..620363008f76 100644 --- a/code/examples/vue-kitchen-sink/package.json +++ b/code/examples/vue-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "vue-example", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -14,29 +14,29 @@ }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/addon-a11y": "7.0.0-alpha.19", - "@storybook/addon-actions": "7.0.0-alpha.19", - "@storybook/addon-backgrounds": "7.0.0-alpha.19", - "@storybook/addon-controls": "7.0.0-alpha.19", - "@storybook/addon-docs": "7.0.0-alpha.19", - "@storybook/addon-highlight": "7.0.0-alpha.19", - "@storybook/addon-interactions": "7.0.0-alpha.19", - "@storybook/addon-links": "7.0.0-alpha.19", - "@storybook/addon-storyshots": "7.0.0-alpha.19", - "@storybook/addon-storysource": "7.0.0-alpha.19", - "@storybook/addon-viewport": "7.0.0-alpha.19", - "@storybook/addons": "7.0.0-alpha.19", + "@storybook/addon-a11y": "7.0.0-alpha.20", + "@storybook/addon-actions": "7.0.0-alpha.20", + "@storybook/addon-backgrounds": "7.0.0-alpha.20", + "@storybook/addon-controls": "7.0.0-alpha.20", + "@storybook/addon-docs": "7.0.0-alpha.20", + "@storybook/addon-highlight": "7.0.0-alpha.20", + "@storybook/addon-interactions": "7.0.0-alpha.20", + "@storybook/addon-links": "7.0.0-alpha.20", + "@storybook/addon-storyshots": "7.0.0-alpha.20", + "@storybook/addon-storysource": "7.0.0-alpha.20", + "@storybook/addon-viewport": "7.0.0-alpha.20", + "@storybook/addons": "7.0.0-alpha.20", "@storybook/jest": "^0.0.10", - "@storybook/source-loader": "7.0.0-alpha.19", + "@storybook/source-loader": "7.0.0-alpha.20", "@storybook/testing-library": "0.0.14-next.0", - "@storybook/vue": "7.0.0-alpha.19", - "@storybook/vue-webpack5": "7.0.0-alpha.19", + "@storybook/vue": "7.0.0-alpha.20", + "@storybook/vue-webpack5": "7.0.0-alpha.20", "@vue/babel-preset-jsx": "^1.2.4", "babel-loader": "^8.2.5", "cross-env": "^7.0.3", "file-loader": "^6.2.0", "prop-types": "^15.7.2", - "storybook": "7.0.0-alpha.19", + "storybook": "7.0.0-alpha.20", "svg-url-loader": "^7.1.1", "vue-loader": "^15.9.6", "vue-style-loader": "^4.1.3", diff --git a/code/examples/web-components-kitchen-sink/package.json b/code/examples/web-components-kitchen-sink/package.json index f29e0d6ec66e..52b6111d87b5 100644 --- a/code/examples/web-components-kitchen-sink/package.json +++ b/code/examples/web-components-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "web-components-kitchen-sink", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "private": true, "description": "", "keywords": [], diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 47a10acc91dc..74f39a8a9fec 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", @@ -34,19 +34,19 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", - "@storybook/core-server": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", + "@storybook/core-server": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "@types/react": "^16.14.23", "@types/react-dom": "^16.9.14", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index c74346af58b8..30cd27961a2b 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/main/frameworks/ember", "bugs": { @@ -30,11 +30,11 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index afbc7f8bc903..bbcc8cecb9bd 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/html": "7.0.0-alpha.19", - "@storybook/preset-html-webpack": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/html": "7.0.0-alpha.20", + "@storybook/preset-html-webpack": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index d83770ec622b..668b1b62b48d 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preact": "7.0.0-alpha.19", - "@storybook/preset-preact-webpack": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preact": "7.0.0-alpha.20", + "@storybook/preset-preact-webpack": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index aae2d5f8cfcb..76c65ed94081 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -51,9 +51,9 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/preset-react-webpack": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/preset-react-webpack": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2" }, diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index f5df621c62f1..6c9f87ae436d 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preset-server-webpack": "7.0.0-alpha.19", - "@storybook/server": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preset-server-webpack": "7.0.0-alpha.20", + "@storybook/server": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index a81016522bdb..86c1da189bb4 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -51,10 +51,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preset-svelte-webpack": "7.0.0-alpha.19", - "@storybook/svelte": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preset-svelte-webpack": "7.0.0-alpha.20", + "@storybook/svelte": "7.0.0-alpha.20", "core-js": "^3.8.2", "react": "16.14.0", "react-dom": "16.14.0" diff --git a/code/frameworks/vue-webpack5/package.json b/code/frameworks/vue-webpack5/package.json index b4da7c561705..992d6a462d8f 100644 --- a/code/frameworks/vue-webpack5/package.json +++ b/code/frameworks/vue-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preset-vue-webpack": "7.0.0-alpha.19", - "@storybook/vue": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preset-vue-webpack": "7.0.0-alpha.20", + "@storybook/vue": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 7f518562ee7b..e153066df42e 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preset-vue3-webpack": "7.0.0-alpha.19", - "@storybook/vue3": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preset-vue3-webpack": "7.0.0-alpha.20", + "@storybook/vue3": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 6ac085813068..689d916f8204 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit-html", @@ -53,10 +53,10 @@ }, "dependencies": { "@babel/preset-env": "^7.12.11", - "@storybook/builder-webpack5": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/preset-web-components-webpack": "7.0.0-alpha.19", - "@storybook/web-components": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/preset-web-components-webpack": "7.0.0-alpha.20", + "@storybook/web-components": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/lerna.json b/code/lerna.json index 895fb00fa98c..599aa6c26c94 100644 --- a/code/lerna.json +++ b/code/lerna.json @@ -2,5 +2,5 @@ "npmClient": "yarn", "useWorkspaces": true, "registry": "https://registry.npmjs.org", - "version": "7.0.0-alpha.19" + "version": "7.0.0-alpha.20" } diff --git a/code/lib/addons/package.json b/code/lib/addons/package.json index 059c5f1471e8..734515b149d5 100644 --- a/code/lib/addons/package.json +++ b/code/lib/addons/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addons", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook addons store", "keywords": [ "storybook" @@ -34,13 +34,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/api": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/router": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/router": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "@types/webpack-env": "^1.16.4", "core-js": "^3.8.2", "global": "^4.4.0" diff --git a/code/lib/api/package.json b/code/lib/api/package.json index 608bef4f3041..4d6cf2e7e50a 100644 --- a/code/lib/api/package.json +++ b/code/lib/api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/api", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Core Storybook API & Context", "keywords": [ "storybook" @@ -32,13 +32,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/router": "7.0.0-alpha.19", + "@storybook/router": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "dequal": "^2.0.2", "global": "^4.4.0", diff --git a/code/lib/blocks/package.json b/code/lib/blocks/package.json index 40a132d19726..bd6c68423a3c 100644 --- a/code/lib/blocks/package.json +++ b/code/lib/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Doc Blocks", "keywords": [ "storybook" @@ -41,16 +41,16 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/api": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "color-convert": "^2.0.1", "core-js": "^3.8.2", "dequal": "^2.0.2", @@ -64,7 +64,7 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@storybook/addons": "7.0.0-alpha.19" + "@storybook/addons": "7.0.0-alpha.20" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" diff --git a/code/lib/builder-manager/package.json b/code/lib/builder-manager/package.json index 3649daef14ae..81028bf6efb4 100644 --- a/code/lib/builder-manager/package.json +++ b/code/lib/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook manager builder", "keywords": [ "storybook" @@ -42,9 +42,9 @@ }, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/ui": "7.0.0-alpha.19", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/ui": "7.0.0-alpha.20", "@types/ejs": "^3.1.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", diff --git a/code/lib/builder-webpack5/package.json b/code/lib/builder-webpack5/package.json index 5f97bba807b1..8938e26f8998 100644 --- a/code/lib/builder-webpack5/package.json +++ b/code/lib/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -34,23 +34,23 @@ }, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/channel-postmessage": "7.0.0-alpha.19", - "@storybook/channel-websocket": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/router": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/channel-postmessage": "7.0.0-alpha.20", + "@storybook/channel-websocket": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/router": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/theming": "7.0.0-alpha.20", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.2.5", "babel-plugin-named-exports-order": "^0.0.2", diff --git a/code/lib/channel-postmessage/package.json b/code/lib/channel-postmessage/package.json index 7150cb97f0db..3411a10da244 100644 --- a/code/lib/channel-postmessage/package.json +++ b/code/lib/channel-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-postmessage", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" @@ -34,9 +34,9 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", diff --git a/code/lib/channel-websocket/package.json b/code/lib/channel-websocket/package.json index 74e54f26ec68..0e4d6970025f 100644 --- a/code/lib/channel-websocket/package.json +++ b/code/lib/channel-websocket/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-websocket", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" @@ -34,8 +34,8 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^6.0.8" diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 19987aa5040e..210af2542188 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 71ba872a2ec0..2b23b9cd7a36 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook CLI", "keywords": [ "storybook" @@ -25,7 +25,7 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/cli": "7.0.0-alpha.19" + "@storybook/cli": "7.0.0-alpha.20" }, "devDependencies": { "typescript": "~4.6.3" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 85a5526403a1..eaf62ab2c45e 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook CLI", "keywords": [ "storybook" @@ -28,7 +28,7 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/cli": "7.0.0-alpha.19" + "@storybook/cli": "7.0.0-alpha.20" }, "devDependencies": { "typescript": "~4.6.3" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index b1278cab3dc4..c4457fef8504 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook's CLI - easiest method of adding storybook to your projects", "keywords": [ "cli", @@ -48,13 +48,13 @@ "dependencies": { "@babel/core": "^7.12.10", "@babel/preset-env": "^7.12.11", - "@storybook/codemod": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-server": "7.0.0-alpha.19", - "@storybook/csf-tools": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/codemod": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-server": "7.0.0-alpha.20", + "@storybook/csf-tools": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/telemetry": "7.0.0-alpha.19", + "@storybook/telemetry": "7.0.0-alpha.20", "boxen": "^5.1.2", "chalk": "^4.1.0", "commander": "^6.2.1", @@ -81,7 +81,7 @@ "update-notifier": "^5.0.1" }, "devDependencies": { - "@storybook/client-api": "7.0.0-alpha.19", + "@storybook/client-api": "7.0.0-alpha.20", "@types/cross-spawn": "^6.0.2", "@types/degit": "^2.8.3", "@types/prompts": "^2.0.9", diff --git a/code/lib/client-api/package.json b/code/lib/client-api/package.json index ea9ba4eb570d..131d9441bb1c 100644 --- a/code/lib/client-api/package.json +++ b/code/lib/client-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-api", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Client API", "keywords": [ "storybook" @@ -34,13 +34,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/channel-postmessage": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/channel-postmessage": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.4", "core-js": "^3.8.2", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 971c50cd2744..ba61fa28c95e 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 750554619fe9..ce5a2dde01e2 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" @@ -45,8 +45,8 @@ "@babel/types": "^7.12.11", "@mdx-js/mdx": "^1.6.22", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/csf-tools": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/csf-tools": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", diff --git a/code/lib/components/package.json b/code/lib/components/package.json index 19c4d9fb78ff..727ba28d2ddc 100644 --- a/code/lib/components/package.json +++ b/code/lib/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -51,9 +51,9 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/client-logger": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "core-js": "^3.8.2", "memoizerific": "^1.11.3", "qs": "^6.10.0", diff --git a/code/lib/core-client/package.json b/code/lib/core-client/package.json index 9f754bff57f3..2ee652b19b0c 100644 --- a/code/lib/core-client/package.json +++ b/code/lib/core-client/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-client", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -34,16 +34,16 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/channel-postmessage": "7.0.0-alpha.19", - "@storybook/channel-websocket": "7.0.0-alpha.19", - "@storybook/client-api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/channel-postmessage": "7.0.0-alpha.20", + "@storybook/channel-websocket": "7.0.0-alpha.20", + "@storybook/client-api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/ui": "7.0.0-alpha.19", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/ui": "7.0.0-alpha.20", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 289525ffb4d7..1257041ef877 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -69,7 +69,7 @@ "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 2c17594850c0..831918de78aa 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 34b2f0dd08ef..633fb58ce0a4 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -35,17 +35,17 @@ "dependencies": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/builder-manager": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/csf-tools": "7.0.0-alpha.19", + "@storybook/csf-tools": "7.0.0-alpha.20", "@storybook/docs-mdx": "0.0.1-canary.12433cf.0", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/node-logger": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/store": "7.0.0-alpha.19", - "@storybook/telemetry": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", + "@storybook/telemetry": "7.0.0-alpha.20", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -77,7 +77,7 @@ "ws": "^8.2.3" }, "devDependencies": { - "@storybook/builder-webpack5": "7.0.0-alpha.19", + "@storybook/builder-webpack5": "7.0.0-alpha.20", "@types/compression": "^1.7.0", "@types/ip": "^1.1.0", "@types/serve-favicon": "^2.5.2", diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index e4adc3097ad8..4b5aaae39b45 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -34,8 +34,8 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/core-common": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/core-common": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "@types/node": "^14.0.10 || ^16.0.0", "core-js": "^3.8.2", "ts-dedent": "^2.0.0" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index dec5a5690215..7b03fb8ea384 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 345c8c50dd51..140f4de215fe 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" @@ -36,7 +36,7 @@ "dependencies": { "@babel/core": "^7.12.10", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "doctrine": "^3.0.0", "lodash": "^4.17.21" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 3b3112174a20..d6484792c541 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" @@ -41,9 +41,9 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0" }, diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index ecef8c72e253..ead07128e0ba 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" diff --git a/code/lib/postinstall/package.json b/code/lib/postinstall/package.json index 860d8e4f8890..a79689379a19 100644 --- a/code/lib/postinstall/package.json +++ b/code/lib/postinstall/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/postinstall", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook addons postinstall utilities", "keywords": [ "api", diff --git a/code/lib/preview-web/package.json b/code/lib/preview-web/package.json index d2bd995c35db..27bb91268adf 100644 --- a/code/lib/preview-web/package.json +++ b/code/lib/preview-web/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-web", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" @@ -41,13 +41,13 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/channel-postmessage": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/channel-postmessage": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/lib/router/package.json b/code/lib/router/package.json index fe50f0e8e51f..147ef5b267ff 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Core Storybook Router", "keywords": [ "storybook" @@ -34,7 +34,7 @@ "prepare": "ts-node ../../../scripts/prebundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/client-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "memoizerific": "^1.11.3", "qs": "^6.10.0" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 3fabb327a3ce..2562b427857b 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Source loader", "keywords": [ "lib", @@ -35,8 +35,8 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", "core-js": "^3.8.2", "estraverse": "^5.2.0", diff --git a/code/lib/store/package.json b/code/lib/store/package.json index f7c17bd5a849..9e9e11f8601d 100644 --- a/code/lib/store/package.json +++ b/code/lib/store/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/store", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "", "keywords": [ "storybook" @@ -41,9 +41,9 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", "core-js": "^3.8.2", "dequal": "^2.0.2", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index 090d1351ddf3..f3bf5ccba415 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" @@ -34,8 +34,8 @@ "prepare": "node ../../../scripts/prepare.js" }, "dependencies": { - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-common": "7.0.0-alpha.19", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-common": "7.0.0-alpha.20", "chalk": "^4.1.0", "core-js": "^3.8.2", "detect-package-manager": "^2.0.1", diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index ed9b73cf401c..11a1422759b1 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -47,7 +47,7 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.0.0-alpha.19", + "@storybook/client-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "memoizerific": "^1.11.3" }, diff --git a/code/lib/ui/package.json b/code/lib/ui/package.json index a18c307a0fec..d56228693b19 100644 --- a/code/lib/ui/package.json +++ b/code/lib/ui/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ui", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Core Storybook UI", "keywords": [ "storybook" @@ -54,18 +54,18 @@ "devDependencies": { "@babel/core": "^7.12.10", "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/channel-postmessage": "7.0.0-alpha.19", - "@storybook/channel-websocket": "7.0.0-alpha.19", - "@storybook/channels": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/components": "7.0.0-alpha.19", - "@storybook/core-events": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/channel-postmessage": "7.0.0-alpha.20", + "@storybook/channel-websocket": "7.0.0-alpha.20", + "@storybook/channels": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/components": "7.0.0-alpha.20", + "@storybook/core-events": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/router": "7.0.0-alpha.19", + "@storybook/router": "7.0.0-alpha.20", "@storybook/semver": "^7.3.2", - "@storybook/theming": "7.0.0-alpha.19", + "@storybook/theming": "7.0.0-alpha.20", "@testing-library/react": "^11.2.2", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 824a896e3d16..8888785b2a64 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -50,7 +50,7 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "html-loader": "^3.1.0", diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 5189c38e50d4..1e42d046f60f 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -51,7 +51,7 @@ }, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.12.12", - "@storybook/core-webpack": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index 84968c6f18b6..3e964e043d6f 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -74,10 +74,10 @@ "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", - "@storybook/react": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", + "@storybook/react": "7.0.0-alpha.20", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", "@types/node": "^14.14.20 || ^16.0.0", diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 09e907114fd8..2d703ec75056 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -55,9 +55,9 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-server": "7.0.0-alpha.19", - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/server": "7.0.0-alpha.19", + "@storybook/core-server": "7.0.0-alpha.20", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/server": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "global": "^4.4.0", diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 23ce53b5d049..55f5b9b46dad 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -65,8 +65,8 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/node-logger": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/node-logger": "7.0.0-alpha.20", "core-js": "^3.8.2", "react": "16.14.0", "react-dom": "16.14.0", diff --git a/code/presets/vue-webpack/package.json b/code/presets/vue-webpack/package.json index b8bb7edd3eac..aa29f911e619 100644 --- a/code/presets/vue-webpack/package.json +++ b/code/presets/vue-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -60,8 +60,8 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/docs-tools": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/docs-tools": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index 9dc2005607f0..8503f47950c9 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -61,8 +61,8 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.0.0-alpha.19", - "@storybook/docs-tools": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", + "@storybook/docs-tools": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "core-js": "^3.8.2", "react": "16.14.0", diff --git a/code/presets/web-components-webpack/package.json b/code/presets/web-components-webpack/package.json index de60848030ca..ca858307d8b0 100644 --- a/code/presets/web-components-webpack/package.json +++ b/code/presets/web-components-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-web-components-webpack", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit-html", @@ -55,7 +55,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/preset-env": "^7.12.11", - "@storybook/core-webpack": "7.0.0-alpha.19", + "@storybook/core-webpack": "7.0.0-alpha.20", "@types/node": "^14.14.20 || ^16.0.0", "babel-loader": "^7.0.0 || ^8.0.0", "babel-plugin-bundled-import-meta": "^0.3.1", diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index fb2dc3261559..099084c6af9c 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook HTML renderer", "keywords": [ "storybook" @@ -50,12 +50,12 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index 360b1b18b497..aa838c330337 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Preact renderer", "keywords": [ "storybook" @@ -50,10 +50,10 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 86dd4e1eee91..778bc6497625 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook React renderer", "keywords": [ "storybook" @@ -51,12 +51,12 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "acorn": "^7.4.1", diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 31de1b3f6f3b..aec2e9f9d9ab 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Server renderer", "keywords": [ "storybook" @@ -50,11 +50,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index 24eb431564ec..6ae4dab08df4 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Svelte renderer", "keywords": [ "storybook" @@ -54,12 +54,12 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/vue/package.json b/code/renderers/vue/package.json index 53709aa7625b..9372416b3d00 100644 --- a/code/renderers/vue/package.json +++ b/code/renderers/vue/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Vue renderer", "keywords": [ "storybook" @@ -50,12 +50,12 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 0630ec2927a5..58474462786c 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" @@ -51,11 +51,11 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index a1b048d8717b..5323d0ac90d4 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "7.0.0-alpha.19", + "version": "7.0.0-alpha.20", "description": "Storybook web-components renderer", "keywords": [ "lit-html", @@ -52,14 +52,14 @@ "prepare": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.0.0-alpha.19", - "@storybook/api": "7.0.0-alpha.19", - "@storybook/client-logger": "7.0.0-alpha.19", - "@storybook/core-client": "7.0.0-alpha.19", + "@storybook/addons": "7.0.0-alpha.20", + "@storybook/api": "7.0.0-alpha.20", + "@storybook/client-logger": "7.0.0-alpha.20", + "@storybook/core-client": "7.0.0-alpha.20", "@storybook/csf": "0.0.2--canary.0899bb7.0", - "@storybook/docs-tools": "7.0.0-alpha.19", - "@storybook/preview-web": "7.0.0-alpha.19", - "@storybook/store": "7.0.0-alpha.19", + "@storybook/docs-tools": "7.0.0-alpha.20", + "@storybook/preview-web": "7.0.0-alpha.20", + "@storybook/store": "7.0.0-alpha.20", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", From 06ffa2989ced7ac7f98c5326e1438ed0e332269d Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Tue, 16 Aug 2022 03:42:53 +0800 Subject: [PATCH 209/266] Update git head to 7.0.0-alpha.20, update yarn.lock [ci skip] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/outline/package.json | 2 +- .../storyshots/storyshots-core/package.json | 2 +- .../storyshots-puppeteer/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/vue-webpack5/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/addons/package.json | 2 +- code/lib/api/package.json | 2 +- code/lib/blocks/package.json | 2 +- code/lib/builder-manager/package.json | 2 +- code/lib/builder-webpack5/package.json | 2 +- code/lib/channel-postmessage/package.json | 2 +- code/lib/channel-websocket/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-api/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/components/package.json | 2 +- code/lib/core-client/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/postinstall/package.json | 2 +- code/lib/preview-web/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/store/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/ui/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- .../web-components-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/yarn.lock | 1224 ++++++++--------- 76 files changed, 687 insertions(+), 687 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 5d6c4626f31c..90a01ba89f2a 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -105,7 +105,7 @@ "./src/preview.tsx" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Accessibility", "icon": "https://user-images.githubusercontent.com/263385/101991665-47042f80-3c7c-11eb-8f00-64b5a18f498a.png", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index ec210c9407b8..74a826e75643 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -73,7 +73,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Actions", "unsupportedFrameworks": [ diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index aa1c0b55490b..e13d89a8143c 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -100,7 +100,7 @@ "./src/preview.tsx" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Backgrounds", "icon": "https://user-images.githubusercontent.com/263385/101991667-479cc600-3c7c-11eb-96d3-410e936252e7.png", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 0e34d57545f7..bcf7db55fe70 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -93,7 +93,7 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Controls", "icon": "https://user-images.githubusercontent.com/263385/101991669-479cc600-3c7c-11eb-93d9-38b67e8371f2.png", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 32297bc41bd2..86b83245b888 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -104,7 +104,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Docs", "icon": "https://user-images.githubusercontent.com/263385/101991672-48355c80-3c7c-11eb-82d9-95fa12438f64.png", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 32313a9fb94d..35b341f11068 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -99,5 +99,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 9337ede3b996..380044aa37ca 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -49,7 +49,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Highlight", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index 03457d94c40a..5d51c7e2ba27 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -72,7 +72,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Interactions", "unsupportedFrameworks": [ diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 3b602c1dbdec..c0c7ee2b8d84 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -95,7 +95,7 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Jest", "icon": "https://pbs.twimg.com/profile_images/821713465245102080/mMtKIMax_400x400.jpg", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 7eb8337383f2..fb31fc388676 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -99,7 +99,7 @@ "./src/react/index.ts" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Links", "icon": "https://user-images.githubusercontent.com/263385/101991673-48355c80-3c7c-11eb-9b6e-b627c96a75f6.png", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index df2316a2920d..411dc55dfdc3 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -95,7 +95,7 @@ "./src/preview.tsx" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Measure", "unsupportedFrameworks": [ diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index 5177442945a9..9d1439bc76b5 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -99,7 +99,7 @@ "./src/preset/preview.tsx" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Outline", "unsupportedFrameworks": [ diff --git a/code/addons/storyshots/storyshots-core/package.json b/code/addons/storyshots/storyshots-core/package.json index d4e58415e5e6..be87c4940c30 100644 --- a/code/addons/storyshots/storyshots-core/package.json +++ b/code/addons/storyshots/storyshots-core/package.json @@ -144,7 +144,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Storyshots", "icon": "https://user-images.githubusercontent.com/263385/101991676-48cdf300-3c7c-11eb-8aa1-944dab6ab29b.png", diff --git a/code/addons/storyshots/storyshots-puppeteer/package.json b/code/addons/storyshots/storyshots-puppeteer/package.json index ff8353b43a6b..863c93e7de2f 100644 --- a/code/addons/storyshots/storyshots-puppeteer/package.json +++ b/code/addons/storyshots/storyshots-puppeteer/package.json @@ -56,5 +56,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index bb708b848af5..e1379adad8b4 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -67,7 +67,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Storysource", "icon": "https://user-images.githubusercontent.com/263385/101991675-48cdf300-3c7c-11eb-9400-58de5ac6daa7.png", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index f922ea80deab..c248b9c5f4ee 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -89,7 +89,7 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Toolbars", "icon": "https://user-images.githubusercontent.com/263385/101991677-48cdf300-3c7c-11eb-93b4-19b0e3366959.png", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 6b6b768fbb48..26e8fc700623 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -65,7 +65,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281", + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4", "storybook": { "displayName": "Viewport", "icon": "https://user-images.githubusercontent.com/263385/101991678-48cdf300-3c7c-11eb-9764-f8af293c1b28.png", diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 74f39a8a9fec..507e4d372f51 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -128,5 +128,5 @@ "access": "public" }, "builders": "dist/types/builders/builders.json", - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 30cd27961a2b..e72d3cbcd61c 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -58,5 +58,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index bbcc8cecb9bd..ab502367bc20 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -79,5 +79,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 668b1b62b48d..cab8c09d0380 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -80,5 +80,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 76c65ed94081..118a18704880 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -87,5 +87,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 6c9f87ae436d..15fe8555165b 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -75,5 +75,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index 86c1da189bb4..eef159eb6cf5 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -82,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/vue-webpack5/package.json b/code/frameworks/vue-webpack5/package.json index 992d6a462d8f..d7202a378326 100644 --- a/code/frameworks/vue-webpack5/package.json +++ b/code/frameworks/vue-webpack5/package.json @@ -86,5 +86,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index e153066df42e..12bdc4581aed 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -83,5 +83,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 689d916f8204..6fe34a17bc8e 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -82,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/addons/package.json b/code/lib/addons/package.json index 734515b149d5..9494b9a37656 100644 --- a/code/lib/addons/package.json +++ b/code/lib/addons/package.json @@ -52,5 +52,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/api/package.json b/code/lib/api/package.json index 4d6cf2e7e50a..3a14426f57f7 100644 --- a/code/lib/api/package.json +++ b/code/lib/api/package.json @@ -65,5 +65,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/blocks/package.json b/code/lib/blocks/package.json index bd6c68423a3c..89ae9ce261be 100644 --- a/code/lib/blocks/package.json +++ b/code/lib/blocks/package.json @@ -77,5 +77,5 @@ "./src/index.ts" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/builder-manager/package.json b/code/lib/builder-manager/package.json index 81028bf6efb4..0f6ff512ea3e 100644 --- a/code/lib/builder-manager/package.json +++ b/code/lib/builder-manager/package.json @@ -68,5 +68,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/builder-webpack5/package.json b/code/lib/builder-webpack5/package.json index 8938e26f8998..8cea7d42b409 100644 --- a/code/lib/builder-webpack5/package.json +++ b/code/lib/builder-webpack5/package.json @@ -95,5 +95,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/channel-postmessage/package.json b/code/lib/channel-postmessage/package.json index 3411a10da244..cf040416574d 100644 --- a/code/lib/channel-postmessage/package.json +++ b/code/lib/channel-postmessage/package.json @@ -48,5 +48,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/channel-websocket/package.json b/code/lib/channel-websocket/package.json index 0e4d6970025f..fec6dac9763b 100644 --- a/code/lib/channel-websocket/package.json +++ b/code/lib/channel-websocket/package.json @@ -46,5 +46,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 210af2542188..fdea6ce50a3b 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -57,5 +57,5 @@ "./src/index.ts" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 2b23b9cd7a36..5122fac0f568 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -33,5 +33,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index eaf62ab2c45e..3d7b341a176c 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -36,5 +36,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index c4457fef8504..8170321b4ed7 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -96,5 +96,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/client-api/package.json b/code/lib/client-api/package.json index 131d9441bb1c..08c1091c4df4 100644 --- a/code/lib/client-api/package.json +++ b/code/lib/client-api/package.json @@ -64,5 +64,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index ba61fa28c95e..8bd061912f05 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -43,5 +43,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index ce5a2dde01e2..dde5b9e149ce 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -63,5 +63,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/components/package.json b/code/lib/components/package.json index 727ba28d2ddc..a69f0f51304a 100644 --- a/code/lib/components/package.json +++ b/code/lib/components/package.json @@ -100,5 +100,5 @@ ], "platform": "neutral" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/core-client/package.json b/code/lib/core-client/package.json index 2ee652b19b0c..f9a2f933d2e9 100644 --- a/code/lib/core-client/package.json +++ b/code/lib/core-client/package.json @@ -64,5 +64,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 1257041ef877..977736a7a856 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -125,5 +125,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 831918de78aa..e3e3a4911d50 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -55,5 +55,5 @@ "./src/index.ts" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 633fb58ce0a4..b729ce9eb3b4 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -101,5 +101,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 4b5aaae39b45..f4139ad8ad0d 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -46,5 +46,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index 7b03fb8ea384..f7d63fbc4ac5 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -56,5 +56,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 140f4de215fe..3c1f212600a1 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -49,5 +49,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index d6484792c541..c97c18621da6 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -53,5 +53,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index ead07128e0ba..f5f85478381b 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -47,5 +47,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/postinstall/package.json b/code/lib/postinstall/package.json index a79689379a19..550d56efc0f7 100644 --- a/code/lib/postinstall/package.json +++ b/code/lib/postinstall/package.json @@ -46,5 +46,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/preview-web/package.json b/code/lib/preview-web/package.json index 27bb91268adf..0ef9cd69ef64 100644 --- a/code/lib/preview-web/package.json +++ b/code/lib/preview-web/package.json @@ -63,5 +63,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 147ef5b267ff..559857abeb0a 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -58,5 +58,5 @@ "access": "public" }, "bundlerEntrypoint": "./src/index.ts", - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 2562b427857b..953c09b2813a 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -54,5 +54,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/store/package.json b/code/lib/store/package.json index 9e9e11f8601d..5b20a014bed0 100644 --- a/code/lib/store/package.json +++ b/code/lib/store/package.json @@ -66,5 +66,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index f3bf5ccba415..5b377cecd54a 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -52,5 +52,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 11a1422759b1..4a0c550ba8cf 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -80,5 +80,5 @@ ], "post": "./scripts/fix-theme-type-export.ts" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/lib/ui/package.json b/code/lib/ui/package.json index d56228693b19..c3dcba6bbb29 100644 --- a/code/lib/ui/package.json +++ b/code/lib/ui/package.json @@ -104,5 +104,5 @@ "./src/runtime.ts" ] }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 8888785b2a64..30e246de9853 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -76,5 +76,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 1e42d046f60f..1476cce3d451 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -77,5 +77,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index 3e964e043d6f..7a9985e3f541 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -123,5 +123,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 2d703ec75056..b3044752c23f 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -86,5 +86,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 55f5b9b46dad..938924636a82 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -98,5 +98,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/vue-webpack/package.json b/code/presets/vue-webpack/package.json index aa29f911e619..76097e3b93c8 100644 --- a/code/presets/vue-webpack/package.json +++ b/code/presets/vue-webpack/package.json @@ -100,5 +100,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index 8503f47950c9..6298927f0993 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -98,5 +98,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/presets/web-components-webpack/package.json b/code/presets/web-components-webpack/package.json index ca858307d8b0..b7c1adc75c51 100644 --- a/code/presets/web-components-webpack/package.json +++ b/code/presets/web-components-webpack/package.json @@ -82,5 +82,5 @@ ], "platform": "node" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index 099084c6af9c..0b12acd717b4 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -81,5 +81,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index aa838c330337..7fb425c7b7ca 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -80,5 +80,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 778bc6497625..4df3506af678 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -101,5 +101,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index aec2e9f9d9ab..58365b2db0e4 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -77,5 +77,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index 6ae4dab08df4..4e3cb2a4531f 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -87,5 +87,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/vue/package.json b/code/renderers/vue/package.json index 9372416b3d00..651c6c2afbc1 100644 --- a/code/renderers/vue/package.json +++ b/code/renderers/vue/package.json @@ -85,5 +85,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 58474462786c..f772b2f25f5f 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -85,5 +85,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 5323d0ac90d4..3d7db15f728f 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -86,5 +86,5 @@ ], "platform": "browser" }, - "gitHead": "74bdb53f67dd59bae2661c668d2d5d4296113281" + "gitHead": "a6c00d2ebed21da54b4772b4a4f7fed9258f0ab4" } diff --git a/code/yarn.lock b/code/yarn.lock index f486dffc2538..9d98e70f6a3c 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6752,19 +6752,19 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@7.0.0-alpha.19, @storybook/addon-a11y@workspace:*, @storybook/addon-a11y@workspace:addons/a11y": +"@storybook/addon-a11y@7.0.0-alpha.20, @storybook/addon-a11y@workspace:*, @storybook/addon-a11y@workspace:addons/a11y": version: 0.0.0-use.local resolution: "@storybook/addon-a11y@workspace:addons/a11y" dependencies: - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/react": ^11.2.2 axe-core: ^4.2.0 core-js: ^3.8.2 @@ -6785,17 +6785,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-actions@7.0.0-alpha.19, @storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": +"@storybook/addon-actions@7.0.0-alpha.20, @storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": version: 0.0.0-use.local resolution: "@storybook/addon-actions@workspace:addons/actions" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@types/lodash": ^4.14.167 core-js: ^3.8.2 dequal: ^2.0.2 @@ -6820,17 +6820,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-backgrounds@7.0.0-alpha.19, @storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": +"@storybook/addon-backgrounds@7.0.0-alpha.20, @storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": version: 0.0.0-use.local resolution: "@storybook/addon-backgrounds@workspace:addons/backgrounds" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 memoizerific: ^1.11.3 @@ -6848,20 +6848,20 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-controls@7.0.0-alpha.19, @storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": +"@storybook/addon-controls@7.0.0-alpha.20, @storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": version: 0.0.0-use.local resolution: "@storybook/addon-controls@workspace:addons/controls" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/blocks": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/blocks": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 lodash: ^4.17.21 ts-dedent: ^2.0.0 @@ -6876,7 +6876,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-docs@7.0.0-alpha.19, @storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": +"@storybook/addon-docs@7.0.0-alpha.20, @storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": version: 0.0.0-use.local resolution: "@storybook/addon-docs@workspace:addons/docs" dependencies: @@ -6885,23 +6885,23 @@ __metadata: "@babel/preset-env": ^7.12.11 "@jest/transform": ^26.6.2 "@mdx-js/react": ^1.6.22 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/blocks": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/blocks": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/csf-tools": 7.0.0-alpha.19 - "@storybook/docs-tools": 7.0.0-alpha.19 + "@storybook/csf-tools": 7.0.0-alpha.20 + "@storybook/docs-tools": 7.0.0-alpha.20 "@storybook/mdx1-csf": 0.0.5-canary.13.9ce928a.0 "@storybook/mdx2-csf": 0.0.4-canary.14.04ffbe8.0 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/postinstall": 7.0.0-alpha.19 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/source-loader": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/postinstall": 7.0.0-alpha.20 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/source-loader": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@types/util-deprecate": ^1.0.0 babel-loader: ^8.2.5 core-js: ^3.8.2 @@ -6927,25 +6927,25 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-essentials@7.0.0-alpha.19, @storybook/addon-essentials@workspace:*, @storybook/addon-essentials@workspace:addons/essentials": +"@storybook/addon-essentials@7.0.0-alpha.20, @storybook/addon-essentials@workspace:*, @storybook/addon-essentials@workspace:addons/essentials": version: 0.0.0-use.local resolution: "@storybook/addon-essentials@workspace:addons/essentials" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-measure": 7.0.0-alpha.19 - "@storybook/addon-outline": 7.0.0-alpha.19 - "@storybook/addon-toolbars": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/vue": 7.0.0-alpha.19 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-measure": 7.0.0-alpha.20 + "@storybook/addon-outline": 7.0.0-alpha.20 + "@storybook/addon-toolbars": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/vue": 7.0.0-alpha.20 "@types/jest": ^26.0.16 core-js: ^3.8.2 ts-dedent: ^2.0.0 @@ -6980,12 +6980,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-highlight@7.0.0-alpha.19, @storybook/addon-highlight@workspace:*, @storybook/addon-highlight@workspace:addons/highlight": +"@storybook/addon-highlight@7.0.0-alpha.20, @storybook/addon-highlight@workspace:*, @storybook/addon-highlight@workspace:addons/highlight": version: 0.0.0-use.local resolution: "@storybook/addon-highlight@workspace:addons/highlight" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -6993,22 +6993,22 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-interactions@7.0.0-alpha.19, @storybook/addon-interactions@workspace:*, @storybook/addon-interactions@workspace:addons/interactions": +"@storybook/addon-interactions@7.0.0-alpha.20, @storybook/addon-interactions@workspace:*, @storybook/addon-interactions@workspace:addons/interactions": version: 0.0.0-use.local resolution: "@storybook/addon-interactions@workspace:addons/interactions" dependencies: "@devtools-ds/object-inspector": ^1.1.2 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/instrumenter": 7.0.0-alpha.19 + "@storybook/instrumenter": 7.0.0-alpha.20 "@storybook/jest": ^0.0.10 "@storybook/testing-library": 0.0.14-next.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 formik: ^2.2.9 global: ^4.4.0 @@ -7027,16 +7027,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-jest@7.0.0-alpha.19, @storybook/addon-jest@workspace:*, @storybook/addon-jest@workspace:addons/jest": +"@storybook/addon-jest@7.0.0-alpha.20, @storybook/addon-jest@workspace:*, @storybook/addon-jest@workspace:addons/jest": version: 0.0.0-use.local resolution: "@storybook/addon-jest@workspace:addons/jest" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react-sizeme: ^3.0.1 @@ -7053,15 +7053,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-links@7.0.0-alpha.19, @storybook/addon-links@workspace:*, @storybook/addon-links@workspace:addons/links": +"@storybook/addon-links@7.0.0-alpha.20, @storybook/addon-links@workspace:*, @storybook/addon-links@workspace:addons/links": version: 0.0.0-use.local resolution: "@storybook/addon-links@workspace:addons/links" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/router": 7.0.0-alpha.19 + "@storybook/router": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 prop-types: ^15.7.2 @@ -7078,15 +7078,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-measure@7.0.0-alpha.19, @storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": +"@storybook/addon-measure@7.0.0-alpha.20, @storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": version: 0.0.0-use.local resolution: "@storybook/addon-measure@workspace:addons/measure" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 core-js: ^3.8.2 global: ^4.4.0 @@ -7102,15 +7102,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-outline@7.0.0-alpha.19, @storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": +"@storybook/addon-outline@7.0.0-alpha.20, @storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": version: 0.0.0-use.local resolution: "@storybook/addon-outline@workspace:addons/outline" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 core-js: ^3.8.2 global: ^4.4.0 @@ -7140,20 +7140,20 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-storyshots-puppeteer@7.0.0-alpha.19, @storybook/addon-storyshots-puppeteer@workspace:*, @storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer": +"@storybook/addon-storyshots-puppeteer@7.0.0-alpha.20, @storybook/addon-storyshots-puppeteer@workspace:*, @storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer": version: 0.0.0-use.local resolution: "@storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer" dependencies: "@axe-core/puppeteer": ^4.2.0 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 "@types/jest-image-snapshot": ^4.1.3 "@types/puppeteer": ^5.4.0 core-js: ^3.8.2 jest-image-snapshot: ^4.3.0 puppeteer: ^2.0.0 || ^3.0.0 peerDependencies: - "@storybook/addon-storyshots": 7.0.0-alpha.19 + "@storybook/addon-storyshots": 7.0.0-alpha.20 puppeteer: ">=2.0.0" peerDependenciesMeta: puppeteer: @@ -7161,7 +7161,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-storyshots@7.0.0-alpha.19, @storybook/addon-storyshots@workspace:*, @storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core": +"@storybook/addon-storyshots@7.0.0-alpha.20, @storybook/addon-storyshots@workspace:*, @storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core": version: 0.0.0-use.local resolution: "@storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core" dependencies: @@ -7169,18 +7169,18 @@ __metadata: "@angular/platform-browser-dynamic": ^13.3.6 "@emotion/jest": ^11.8.0 "@jest/transform": ^26.6.2 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/angular": 7.0.0-alpha.19 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/angular": 7.0.0-alpha.20 "@storybook/babel-plugin-require-context-hook": 1.0.1 - "@storybook/client-api": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-webpack": 7.0.0-alpha.19 + "@storybook/client-api": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-webpack": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/vue": 7.0.0-alpha.19 - "@storybook/vue3": 7.0.0-alpha.19 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/vue": 7.0.0-alpha.20 + "@storybook/vue3": 7.0.0-alpha.20 "@types/glob": ^7.1.3 "@types/jest": ^26.0.16 "@types/jest-specific-snapshot": ^0.5.3 @@ -7251,17 +7251,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-storysource@7.0.0-alpha.19, @storybook/addon-storysource@workspace:*, @storybook/addon-storysource@workspace:addons/storysource": +"@storybook/addon-storysource@7.0.0-alpha.20, @storybook/addon-storysource@workspace:*, @storybook/addon-storysource@workspace:addons/storysource": version: 0.0.0-use.local resolution: "@storybook/addon-storysource@workspace:addons/storysource" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/router": 7.0.0-alpha.19 - "@storybook/source-loader": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/router": 7.0.0-alpha.20 + "@storybook/source-loader": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@types/react": ^16.14.23 "@types/react-syntax-highlighter": 11.0.5 core-js: ^3.8.2 @@ -7280,15 +7280,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-toolbars@7.0.0-alpha.19, @storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": +"@storybook/addon-toolbars@7.0.0-alpha.20, @storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": version: 0.0.0-use.local resolution: "@storybook/addon-toolbars@workspace:addons/toolbars" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 typescript: ~4.6.3 peerDependencies: @@ -7302,16 +7302,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-viewport@7.0.0-alpha.19, @storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": +"@storybook/addon-viewport@7.0.0-alpha.20, @storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": version: 0.0.0-use.local resolution: "@storybook/addon-viewport@workspace:addons/viewport" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 memoizerific: ^1.11.3 @@ -7328,17 +7328,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addons@7.0.0-alpha.19, @storybook/addons@workspace:*, @storybook/addons@workspace:lib/addons": +"@storybook/addons@7.0.0-alpha.20, @storybook/addons@workspace:*, @storybook/addons@workspace:lib/addons": version: 0.0.0-use.local resolution: "@storybook/addons@workspace:lib/addons" dependencies: - "@storybook/api": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/router": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/router": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@types/webpack-env": ^1.16.4 core-js: ^3.8.2 global: ^4.4.0 @@ -7370,7 +7370,7 @@ __metadata: languageName: node linkType: hard -"@storybook/angular@7.0.0-alpha.19, @storybook/angular@workspace:*, @storybook/angular@workspace:frameworks/angular": +"@storybook/angular@7.0.0-alpha.20, @storybook/angular@workspace:*, @storybook/angular@workspace:frameworks/angular": version: 0.0.0-use.local resolution: "@storybook/angular@workspace:frameworks/angular" dependencies: @@ -7387,19 +7387,19 @@ __metadata: "@angular/platform-browser": ^13.3.6 "@angular/platform-browser-dynamic": ^13.3.6 "@nrwl/workspace": ^14.1.4 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 - "@storybook/core-server": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 + "@storybook/core-server": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 "@types/autoprefixer": ^9.7.2 "@types/node": ^14.14.20 || ^16.0.0 "@types/react": ^16.14.23 @@ -7456,17 +7456,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/api@7.0.0-alpha.19, @storybook/api@workspace:*, @storybook/api@workspace:lib/api": +"@storybook/api@7.0.0-alpha.20, @storybook/api@workspace:*, @storybook/api@workspace:lib/api": version: 0.0.0-use.local resolution: "@storybook/api@workspace:lib/api" dependencies: - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/router": 7.0.0-alpha.19 + "@storybook/router": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@types/lodash": ^4.14.167 "@types/qs": ^6 "@types/semver": ^7.3.4 @@ -7524,21 +7524,21 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@7.0.0-alpha.19, @storybook/blocks@workspace:*, @storybook/blocks@workspace:lib/blocks": +"@storybook/blocks@7.0.0-alpha.20, @storybook/blocks@workspace:*, @storybook/blocks@workspace:lib/blocks": version: 0.0.0-use.local resolution: "@storybook/blocks@workspace:lib/blocks" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 color-convert: ^2.0.1 core-js: ^3.8.2 dequal: ^2.0.2 @@ -7555,14 +7555,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-manager@7.0.0-alpha.19, @storybook/builder-manager@workspace:lib/builder-manager": +"@storybook/builder-manager@7.0.0-alpha.20, @storybook/builder-manager@workspace:lib/builder-manager": version: 0.0.0-use.local resolution: "@storybook/builder-manager@workspace:lib/builder-manager" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/ui": 7.0.0-alpha.19 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/ui": 7.0.0-alpha.20 "@types/ejs": ^3.1.1 "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 browser-assert: ^1.2.1 @@ -7577,28 +7577,28 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-webpack5@7.0.0-alpha.19, @storybook/builder-webpack5@workspace:lib/builder-webpack5": +"@storybook/builder-webpack5@7.0.0-alpha.20, @storybook/builder-webpack5@workspace:lib/builder-webpack5": version: 0.0.0-use.local resolution: "@storybook/builder-webpack5@workspace:lib/builder-webpack5" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/channel-postmessage": 7.0.0-alpha.19 - "@storybook/channel-websocket": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/router": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/channel-postmessage": 7.0.0-alpha.20 + "@storybook/channel-websocket": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/router": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@types/node": ^14.0.10 || ^16.0.0 "@types/terser-webpack-plugin": ^5.2.0 "@types/webpack-dev-middleware": ^5.3.0 @@ -7637,13 +7637,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/channel-postmessage@7.0.0-alpha.19, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:lib/channel-postmessage": +"@storybook/channel-postmessage@7.0.0-alpha.20, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:lib/channel-postmessage": version: 0.0.0-use.local resolution: "@storybook/channel-postmessage@workspace:lib/channel-postmessage" dependencies: - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 qs: ^6.10.0 @@ -7652,12 +7652,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/channel-websocket@7.0.0-alpha.19, @storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:lib/channel-websocket": +"@storybook/channel-websocket@7.0.0-alpha.20, @storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:lib/channel-websocket": version: 0.0.0-use.local resolution: "@storybook/channel-websocket@workspace:lib/channel-websocket" dependencies: - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 telejson: ^6.0.8 @@ -7665,7 +7665,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/channels@7.0.0-alpha.19, @storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": +"@storybook/channels@7.0.0-alpha.20, @storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": version: 0.0.0-use.local resolution: "@storybook/channels@workspace:lib/channels" dependencies: @@ -7687,20 +7687,20 @@ __metadata: languageName: node linkType: hard -"@storybook/cli@7.0.0-alpha.19, @storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": +"@storybook/cli@7.0.0-alpha.20, @storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": version: 0.0.0-use.local resolution: "@storybook/cli@workspace:lib/cli" dependencies: "@babel/core": ^7.12.10 "@babel/preset-env": ^7.12.11 - "@storybook/client-api": 7.0.0-alpha.19 - "@storybook/codemod": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-server": 7.0.0-alpha.19 - "@storybook/csf-tools": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/client-api": 7.0.0-alpha.20 + "@storybook/codemod": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-server": 7.0.0-alpha.20 + "@storybook/csf-tools": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/telemetry": 7.0.0-alpha.19 + "@storybook/telemetry": 7.0.0-alpha.20 "@types/cross-spawn": ^6.0.2 "@types/degit": ^2.8.3 "@types/prompts": ^2.0.9 @@ -7739,17 +7739,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/client-api@7.0.0-alpha.19, @storybook/client-api@workspace:*, @storybook/client-api@workspace:lib/client-api": +"@storybook/client-api@7.0.0-alpha.20, @storybook/client-api@workspace:*, @storybook/client-api@workspace:lib/client-api": version: 0.0.0-use.local resolution: "@storybook/client-api@workspace:lib/client-api" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/channel-postmessage": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/channel-postmessage": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 "@types/qs": ^6.9.5 "@types/webpack-env": ^1.16.4 core-js: ^3.8.2 @@ -7769,7 +7769,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/client-logger@7.0.0-alpha.19, @storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": +"@storybook/client-logger@7.0.0-alpha.20, @storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": version: 0.0.0-use.local resolution: "@storybook/client-logger@workspace:lib/client-logger" dependencies: @@ -7789,15 +7789,15 @@ __metadata: languageName: node linkType: hard -"@storybook/codemod@7.0.0-alpha.19, @storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": +"@storybook/codemod@7.0.0-alpha.20, @storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": version: 0.0.0-use.local resolution: "@storybook/codemod@workspace:lib/codemod" dependencies: "@babel/types": ^7.12.11 "@mdx-js/mdx": ^1.6.22 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/csf-tools": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/csf-tools": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 core-js: ^3.8.2 cross-spawn: ^7.0.3 globby: ^11.0.2 @@ -7811,14 +7811,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/components@7.0.0-alpha.19, @storybook/components@workspace:*, @storybook/components@workspace:lib/components": +"@storybook/components@7.0.0-alpha.20, @storybook/components@workspace:*, @storybook/components@workspace:lib/components": version: 0.0.0-use.local resolution: "@storybook/components@workspace:lib/components" dependencies: "@popperjs/core": ^2.6.0 - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/client-logger": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/jest-dom": ^5.16.4 "@types/color-convert": ^2.0.0 "@types/lodash": ^4.14.182 @@ -7853,20 +7853,20 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-client@7.0.0-alpha.19, @storybook/core-client@workspace:lib/core-client": +"@storybook/core-client@7.0.0-alpha.20, @storybook/core-client@workspace:lib/core-client": version: 0.0.0-use.local resolution: "@storybook/core-client@workspace:lib/core-client" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/channel-postmessage": 7.0.0-alpha.19 - "@storybook/channel-websocket": 7.0.0-alpha.19 - "@storybook/client-api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/channel-postmessage": 7.0.0-alpha.20 + "@storybook/channel-websocket": 7.0.0-alpha.20 + "@storybook/client-api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/ui": 7.0.0-alpha.19 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/ui": 7.0.0-alpha.20 ansi-to-html: ^0.6.11 core-js: ^3.8.2 global: ^4.4.0 @@ -7882,7 +7882,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-common@7.0.0-alpha.19, @storybook/core-common@workspace:lib/core-common": +"@storybook/core-common@7.0.0-alpha.20, @storybook/core-common@workspace:lib/core-common": version: 0.0.0-use.local resolution: "@storybook/core-common@workspace:lib/core-common" dependencies: @@ -7909,7 +7909,7 @@ __metadata: "@babel/preset-typescript": ^7.12.7 "@babel/register": ^7.12.1 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 "@types/babel__core": ^7.0.0 "@types/compression": ^1.7.0 @@ -7953,7 +7953,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-events@7.0.0-alpha.19, @storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": +"@storybook/core-events@7.0.0-alpha.20, @storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": version: 0.0.0-use.local resolution: "@storybook/core-events@workspace:lib/core-events" dependencies: @@ -7971,24 +7971,24 @@ __metadata: languageName: node linkType: hard -"@storybook/core-server@7.0.0-alpha.19, @storybook/core-server@workspace:lib/core-server": +"@storybook/core-server@7.0.0-alpha.20, @storybook/core-server@workspace:lib/core-server": version: 0.0.0-use.local resolution: "@storybook/core-server@workspace:lib/core-server" dependencies: "@aw-web-design/x-default-browser": 1.4.88 "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.0.0-alpha.19 - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/builder-manager": 7.0.0-alpha.20 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/csf-tools": 7.0.0-alpha.19 + "@storybook/csf-tools": 7.0.0-alpha.20 "@storybook/docs-mdx": 0.0.1-canary.12433cf.0 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/store": 7.0.0-alpha.19 - "@storybook/telemetry": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 + "@storybook/telemetry": 7.0.0-alpha.20 "@types/compression": ^1.7.0 "@types/ip": ^1.1.0 "@types/node": ^14.0.10 || ^16.0.0 @@ -8036,12 +8036,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-webpack@7.0.0-alpha.19, @storybook/core-webpack@workspace:*, @storybook/core-webpack@workspace:lib/core-webpack": +"@storybook/core-webpack@7.0.0-alpha.20, @storybook/core-webpack@workspace:*, @storybook/core-webpack@workspace:lib/core-webpack": version: 0.0.0-use.local resolution: "@storybook/core-webpack@workspace:lib/core-webpack" dependencies: - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 "@types/node": ^14.0.10 || ^16.0.0 core-js: ^3.8.2 ts-dedent: ^2.0.0 @@ -8049,7 +8049,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/csf-tools@7.0.0-alpha.19, @storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": +"@storybook/csf-tools@7.0.0-alpha.20, @storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": version: 0.0.0-use.local resolution: "@storybook/csf-tools@workspace:lib/csf-tools" dependencies: @@ -8134,13 +8134,13 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@7.0.0-alpha.19, @storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": +"@storybook/docs-tools@7.0.0-alpha.20, @storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": version: 0.0.0-use.local resolution: "@storybook/docs-tools@workspace:lib/docs-tools" dependencies: "@babel/core": ^7.12.10 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 doctrine: ^3.0.0 jest-specific-snapshot: ^4.0.0 @@ -8162,15 +8162,15 @@ __metadata: languageName: node linkType: hard -"@storybook/ember@7.0.0-alpha.19, @storybook/ember@workspace:*, @storybook/ember@workspace:frameworks/ember": +"@storybook/ember@7.0.0-alpha.20, @storybook/ember@workspace:*, @storybook/ember@workspace:frameworks/ember": version: 0.0.0-use.local resolution: "@storybook/ember@workspace:frameworks/ember" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -8203,14 +8203,14 @@ __metadata: "@babel/preset-env": ^7.12.11 "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 - "@storybook/addon-essentials": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/cli": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addon-essentials": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/cli": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@types/babel__preset-env": ^7 "@types/react": ^16.14.23 "@types/react-dom": ^16.9.14 @@ -8218,7 +8218,7 @@ __metadata: lodash: ^4.17.21 react: 16.14.0 react-dom: 16.14.0 - sb: 7.0.0-alpha.19 + sb: 7.0.0-alpha.20 typescript: ~4.6.3 webpack: 5 languageName: unknown @@ -8231,15 +8231,15 @@ __metadata: "@babel/preset-env": ^7.12.11 "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 - "@storybook/addon-essentials": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/cli": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/addon-essentials": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/cli": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/dom": ^7.31.2 "@testing-library/react": 12.1.2 "@testing-library/user-event": ^13.1.9 @@ -8252,7 +8252,7 @@ __metadata: prop-types: 15.7.2 react: 16.14.0 react-dom: 16.14.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 typescript: ~4.6.3 webpack: 5 languageName: unknown @@ -8272,15 +8272,15 @@ __metadata: resolution: "@storybook/external-docs@workspace:examples/external-docs" dependencies: "@babel/preset-env": ^7.17.10 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-essentials": 7.0.0-alpha.19 - "@storybook/blocks": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-essentials": 7.0.0-alpha.20 + "@storybook/blocks": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/dom": ^7.31.2 "@testing-library/user-event": ^13.1.9 "@types/babel__preset-env": ^7 @@ -8296,20 +8296,20 @@ __metadata: prop-types: ^15.8.1 react: 16.14.0 react-dom: 16.14.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 typescript: ~4.6.3 webpack: 5 languageName: unknown linkType: soft -"@storybook/html-webpack5@7.0.0-alpha.19, @storybook/html-webpack5@workspace:*, @storybook/html-webpack5@workspace:frameworks/html-webpack5": +"@storybook/html-webpack5@7.0.0-alpha.20, @storybook/html-webpack5@workspace:*, @storybook/html-webpack5@workspace:frameworks/html-webpack5": version: 0.0.0-use.local resolution: "@storybook/html-webpack5@workspace:frameworks/html-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/html": 7.0.0-alpha.19 - "@storybook/preset-html-webpack": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/html": 7.0.0-alpha.20 + "@storybook/preset-html-webpack": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 global: ^4.4.0 @@ -8321,16 +8321,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/html@7.0.0-alpha.19, @storybook/html@workspace:*, @storybook/html@workspace:renderers/html": +"@storybook/html@7.0.0-alpha.20, @storybook/html@workspace:*, @storybook/html@workspace:renderers/html": version: 0.0.0-use.local resolution: "@storybook/html@workspace:renderers/html" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -8342,13 +8342,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/instrumenter@7.0.0-alpha.19, @storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": +"@storybook/instrumenter@7.0.0-alpha.20, @storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": version: 0.0.0-use.local resolution: "@storybook/instrumenter@workspace:lib/instrumenter" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 typescript: ~4.6.3 @@ -8460,7 +8460,7 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@7.0.0-alpha.19, @storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": +"@storybook/node-logger@7.0.0-alpha.20, @storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": version: 0.0.0-use.local resolution: "@storybook/node-logger@workspace:lib/node-logger" dependencies: @@ -8487,7 +8487,7 @@ __metadata: languageName: node linkType: hard -"@storybook/postinstall@7.0.0-alpha.19, @storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": +"@storybook/postinstall@7.0.0-alpha.20, @storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": version: 0.0.0-use.local resolution: "@storybook/postinstall@workspace:lib/postinstall" dependencies: @@ -8499,14 +8499,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preact-webpack5@7.0.0-alpha.19, @storybook/preact-webpack5@workspace:*, @storybook/preact-webpack5@workspace:frameworks/preact-webpack5": +"@storybook/preact-webpack5@7.0.0-alpha.20, @storybook/preact-webpack5@workspace:*, @storybook/preact-webpack5@workspace:frameworks/preact-webpack5": version: 0.0.0-use.local resolution: "@storybook/preact-webpack5@workspace:frameworks/preact-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preact": 7.0.0-alpha.19 - "@storybook/preset-preact-webpack": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preact": 7.0.0-alpha.20 + "@storybook/preset-preact-webpack": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 preact: ^10.5.13 @@ -8519,14 +8519,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preact@7.0.0-alpha.19, @storybook/preact@workspace:*, @storybook/preact@workspace:renderers/preact": +"@storybook/preact@7.0.0-alpha.20, @storybook/preact@workspace:*, @storybook/preact@workspace:renderers/preact": version: 0.0.0-use.local resolution: "@storybook/preact@workspace:renderers/preact" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 preact: ^10.5.13 @@ -8558,11 +8558,11 @@ __metadata: languageName: node linkType: hard -"@storybook/preset-html-webpack@7.0.0-alpha.19, @storybook/preset-html-webpack@workspace:*, @storybook/preset-html-webpack@workspace:presets/html-webpack": +"@storybook/preset-html-webpack@7.0.0-alpha.20, @storybook/preset-html-webpack@workspace:*, @storybook/preset-html-webpack@workspace:presets/html-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-html-webpack@workspace:presets/html-webpack" dependencies: - "@storybook/core-webpack": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 html-loader: ^3.1.0 @@ -8575,12 +8575,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-preact-webpack@7.0.0-alpha.19, @storybook/preset-preact-webpack@workspace:*, @storybook/preset-preact-webpack@workspace:presets/preact-webpack": +"@storybook/preset-preact-webpack@7.0.0-alpha.20, @storybook/preset-preact-webpack@workspace:*, @storybook/preset-preact-webpack@workspace:presets/preact-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-preact-webpack@workspace:presets/preact-webpack" dependencies: "@babel/plugin-transform-react-jsx": ^7.12.12 - "@storybook/core-webpack": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 preact: ^10.5.13 @@ -8593,17 +8593,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-react-webpack@7.0.0-alpha.19, @storybook/preset-react-webpack@workspace:*, @storybook/preset-react-webpack@workspace:presets/react-webpack": +"@storybook/preset-react-webpack@7.0.0-alpha.20, @storybook/preset-react-webpack@workspace:*, @storybook/preset-react-webpack@workspace:presets/react-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-react-webpack@workspace:presets/react-webpack" dependencies: "@babel/preset-flow": ^7.12.1 "@babel/preset-react": ^7.12.10 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 "@storybook/semver": ^7.3.2 "@types/node": ^14.14.20 || ^16.0.0 @@ -8640,13 +8640,13 @@ __metadata: languageName: node linkType: hard -"@storybook/preset-server-webpack@7.0.0-alpha.19, @storybook/preset-server-webpack@workspace:*, @storybook/preset-server-webpack@workspace:presets/server-webpack": +"@storybook/preset-server-webpack@7.0.0-alpha.20, @storybook/preset-server-webpack@workspace:*, @storybook/preset-server-webpack@workspace:presets/server-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-server-webpack@workspace:presets/server-webpack" dependencies: - "@storybook/core-server": 7.0.0-alpha.19 - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/server": 7.0.0-alpha.19 + "@storybook/core-server": 7.0.0-alpha.20 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/server": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 fs-extra: ^9.0.1 @@ -8662,12 +8662,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-svelte-webpack@7.0.0-alpha.19, @storybook/preset-svelte-webpack@workspace:*, @storybook/preset-svelte-webpack@workspace:presets/svelte-webpack": +"@storybook/preset-svelte-webpack@7.0.0-alpha.20, @storybook/preset-svelte-webpack@workspace:*, @storybook/preset-svelte-webpack@workspace:presets/svelte-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-svelte-webpack@workspace:presets/svelte-webpack" dependencies: - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 core-js: ^3.8.2 react: 16.14.0 react-dom: 16.14.0 @@ -8683,12 +8683,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-vue-webpack@7.0.0-alpha.19, @storybook/preset-vue-webpack@workspace:*, @storybook/preset-vue-webpack@workspace:presets/vue-webpack": +"@storybook/preset-vue-webpack@7.0.0-alpha.20, @storybook/preset-vue-webpack@workspace:*, @storybook/preset-vue-webpack@workspace:presets/vue-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-vue-webpack@workspace:presets/vue-webpack" dependencies: - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/docs-tools": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/docs-tools": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 react: 16.14.0 @@ -8711,12 +8711,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-vue3-webpack@7.0.0-alpha.19, @storybook/preset-vue3-webpack@workspace:*, @storybook/preset-vue3-webpack@workspace:presets/vue3-webpack": +"@storybook/preset-vue3-webpack@7.0.0-alpha.20, @storybook/preset-vue3-webpack@workspace:*, @storybook/preset-vue3-webpack@workspace:presets/vue3-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-vue3-webpack@workspace:presets/vue3-webpack" dependencies: - "@storybook/core-webpack": 7.0.0-alpha.19 - "@storybook/docs-tools": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 + "@storybook/docs-tools": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 "@vue/compiler-sfc": ^3.2.33 core-js: ^3.8.2 @@ -8737,14 +8737,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preset-web-components-webpack@7.0.0-alpha.19, @storybook/preset-web-components-webpack@workspace:*, @storybook/preset-web-components-webpack@workspace:presets/web-components-webpack": +"@storybook/preset-web-components-webpack@7.0.0-alpha.20, @storybook/preset-web-components-webpack@workspace:*, @storybook/preset-web-components-webpack@workspace:presets/web-components-webpack": version: 0.0.0-use.local resolution: "@storybook/preset-web-components-webpack@workspace:presets/web-components-webpack" dependencies: "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/preset-env": ^7.12.11 - "@storybook/core-webpack": 7.0.0-alpha.19 + "@storybook/core-webpack": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 babel-loader: ^7.0.0 || ^8.0.0 babel-plugin-bundled-import-meta: ^0.3.1 @@ -8758,17 +8758,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preview-web@7.0.0-alpha.19, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": +"@storybook/preview-web@7.0.0-alpha.20, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": version: 0.0.0-use.local resolution: "@storybook/preview-web@workspace:lib/preview-web" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/channel-postmessage": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/channel-postmessage": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/store": 7.0.0-alpha.20 ansi-to-html: ^0.6.11 core-js: ^3.8.2 global: ^4.4.0 @@ -8799,13 +8799,13 @@ __metadata: languageName: node linkType: hard -"@storybook/react-webpack5@7.0.0-alpha.19, @storybook/react-webpack5@workspace:*, @storybook/react-webpack5@workspace:frameworks/react-webpack5": +"@storybook/react-webpack5@7.0.0-alpha.20, @storybook/react-webpack5@workspace:*, @storybook/react-webpack5@workspace:frameworks/react-webpack5": version: 0.0.0-use.local resolution: "@storybook/react-webpack5@workspace:frameworks/react-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/preset-react-webpack": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/preset-react-webpack": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 jest-specific-snapshot: ^4.0.0 @@ -8822,17 +8822,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/react@7.0.0-alpha.19, @storybook/react@workspace:*, @storybook/react@workspace:renderers/react": +"@storybook/react@7.0.0-alpha.20, @storybook/react@workspace:*, @storybook/react@workspace:renderers/react": version: 0.0.0-use.local resolution: "@storybook/react@workspace:renderers/react" dependencies: "@babel/core": ^7.11.5 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 "@types/estree": ^0.0.51 "@types/node": ^14.14.20 || ^16.0.0 "@types/util-deprecate": ^1.0.0 @@ -9135,11 +9135,11 @@ __metadata: languageName: unknown linkType: soft -"@storybook/router@7.0.0-alpha.19, @storybook/router@workspace:*, @storybook/router@workspace:lib/router": +"@storybook/router@7.0.0-alpha.20, @storybook/router@workspace:*, @storybook/router@workspace:lib/router": version: 0.0.0-use.local resolution: "@storybook/router@workspace:lib/router" dependencies: - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/client-logger": 7.0.0-alpha.20 core-js: ^3.8.2 dequal: ^2.0.2 global: ^4.4.0 @@ -9186,14 +9186,14 @@ __metadata: languageName: node linkType: hard -"@storybook/server-webpack5@7.0.0-alpha.19, @storybook/server-webpack5@workspace:*, @storybook/server-webpack5@workspace:frameworks/server-webpack5": +"@storybook/server-webpack5@7.0.0-alpha.20, @storybook/server-webpack5@workspace:*, @storybook/server-webpack5@workspace:frameworks/server-webpack5": version: 0.0.0-use.local resolution: "@storybook/server-webpack5@workspace:frameworks/server-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preset-server-webpack": 7.0.0-alpha.19 - "@storybook/server": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preset-server-webpack": 7.0.0-alpha.20 + "@storybook/server": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 react: 16.14.0 @@ -9202,15 +9202,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/server@7.0.0-alpha.19, @storybook/server@workspace:*, @storybook/server@workspace:renderers/server": +"@storybook/server@7.0.0-alpha.20, @storybook/server@workspace:*, @storybook/server@workspace:renderers/server": version: 0.0.0-use.local resolution: "@storybook/server@workspace:renderers/server" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -9220,12 +9220,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/source-loader@7.0.0-alpha.19, @storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": +"@storybook/source-loader@7.0.0-alpha.20, @storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": version: 0.0.0-use.local resolution: "@storybook/source-loader@workspace:lib/source-loader" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 core-js: ^3.8.2 estraverse: ^5.2.0 @@ -9239,13 +9239,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/store@7.0.0-alpha.19, @storybook/store@workspace:*, @storybook/store@workspace:lib/store": +"@storybook/store@7.0.0-alpha.20, @storybook/store@workspace:*, @storybook/store@workspace:lib/store": version: 0.0.0-use.local resolution: "@storybook/store@workspace:lib/store" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 core-js: ^3.8.2 dequal: ^2.0.2 @@ -9264,14 +9264,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/svelte-webpack5@7.0.0-alpha.19, @storybook/svelte-webpack5@workspace:*, @storybook/svelte-webpack5@workspace:frameworks/svelte-webpack5": +"@storybook/svelte-webpack5@7.0.0-alpha.20, @storybook/svelte-webpack5@workspace:*, @storybook/svelte-webpack5@workspace:frameworks/svelte-webpack5": version: 0.0.0-use.local resolution: "@storybook/svelte-webpack5@workspace:frameworks/svelte-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preset-svelte-webpack": 7.0.0-alpha.19 - "@storybook/svelte": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preset-svelte-webpack": 7.0.0-alpha.20 + "@storybook/svelte": 7.0.0-alpha.20 core-js: ^3.8.2 react: 16.14.0 react-dom: 16.14.0 @@ -9285,16 +9285,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/svelte@7.0.0-alpha.19, @storybook/svelte@workspace:*, @storybook/svelte@workspace:renderers/svelte": +"@storybook/svelte@7.0.0-alpha.20, @storybook/svelte@workspace:*, @storybook/svelte@workspace:renderers/svelte": version: 0.0.0-use.local resolution: "@storybook/svelte@workspace:renderers/svelte" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -9308,12 +9308,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/telemetry@7.0.0-alpha.19, @storybook/telemetry@workspace:*, @storybook/telemetry@workspace:lib/telemetry": +"@storybook/telemetry@7.0.0-alpha.20, @storybook/telemetry@workspace:*, @storybook/telemetry@workspace:lib/telemetry": version: 0.0.0-use.local resolution: "@storybook/telemetry@workspace:lib/telemetry" dependencies: - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 chalk: ^4.1.0 core-js: ^3.8.2 detect-package-manager: ^2.0.1 @@ -9353,7 +9353,7 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@7.0.0-alpha.19, @storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": +"@storybook/theming@7.0.0-alpha.20, @storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": version: 0.0.0-use.local resolution: "@storybook/theming@workspace:lib/theming" dependencies: @@ -9361,7 +9361,7 @@ __metadata: "@emotion/is-prop-valid": ^1.1.2 "@emotion/react": ^11.8.1 "@emotion/styled": ^11.8.1 - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/client-logger": 7.0.0-alpha.20 "@types/fs-extra": ^9.0.6 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 @@ -9394,24 +9394,24 @@ __metadata: languageName: node linkType: hard -"@storybook/ui@7.0.0-alpha.19, @storybook/ui@workspace:*, @storybook/ui@workspace:lib/ui": +"@storybook/ui@7.0.0-alpha.20, @storybook/ui@workspace:*, @storybook/ui@workspace:lib/ui": version: 0.0.0-use.local resolution: "@storybook/ui@workspace:lib/ui" dependencies: "@babel/core": ^7.12.10 "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/channel-postmessage": 7.0.0-alpha.19 - "@storybook/channel-websocket": 7.0.0-alpha.19 - "@storybook/channels": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/channel-postmessage": 7.0.0-alpha.20 + "@storybook/channel-websocket": 7.0.0-alpha.20 + "@storybook/channels": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/router": 7.0.0-alpha.19 + "@storybook/router": 7.0.0-alpha.20 "@storybook/semver": ^7.3.2 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/react": ^11.2.2 copy-to-clipboard: ^3.3.1 core-js: ^3.8.2 @@ -9441,14 +9441,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue-webpack5@7.0.0-alpha.19, @storybook/vue-webpack5@workspace:*, @storybook/vue-webpack5@workspace:frameworks/vue-webpack5": +"@storybook/vue-webpack5@7.0.0-alpha.20, @storybook/vue-webpack5@workspace:*, @storybook/vue-webpack5@workspace:frameworks/vue-webpack5": version: 0.0.0-use.local resolution: "@storybook/vue-webpack5@workspace:frameworks/vue-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preset-vue-webpack": 7.0.0-alpha.19 - "@storybook/vue": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preset-vue-webpack": 7.0.0-alpha.20 + "@storybook/vue": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 react: 16.14.0 @@ -9467,14 +9467,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue3-webpack5@7.0.0-alpha.19, @storybook/vue3-webpack5@workspace:*, @storybook/vue3-webpack5@workspace:frameworks/vue3-webpack5": +"@storybook/vue3-webpack5@7.0.0-alpha.20, @storybook/vue3-webpack5@workspace:*, @storybook/vue3-webpack5@workspace:frameworks/vue3-webpack5": version: 0.0.0-use.local resolution: "@storybook/vue3-webpack5@workspace:frameworks/vue3-webpack5" dependencies: - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preset-vue3-webpack": 7.0.0-alpha.19 - "@storybook/vue3": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preset-vue3-webpack": 7.0.0-alpha.20 + "@storybook/vue3": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 "@vue/compiler-sfc": 3.0.0 core-js: ^3.8.2 @@ -9490,16 +9490,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue3@7.0.0-alpha.19, @storybook/vue3@workspace:*, @storybook/vue3@workspace:renderers/vue3": +"@storybook/vue3@7.0.0-alpha.20, @storybook/vue3@workspace:*, @storybook/vue3@workspace:renderers/vue3": version: 0.0.0-use.local resolution: "@storybook/vue3@workspace:renderers/vue3" dependencies: "@digitak/esrun": ^3.2.2 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -9514,16 +9514,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue@7.0.0-alpha.19, @storybook/vue@workspace:*, @storybook/vue@workspace:renderers/vue": +"@storybook/vue@7.0.0-alpha.20, @storybook/vue@workspace:*, @storybook/vue@workspace:renderers/vue": version: 0.0.0-use.local resolution: "@storybook/vue@workspace:renderers/vue" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -9544,10 +9544,10 @@ __metadata: resolution: "@storybook/web-components-webpack5@workspace:frameworks/web-components-webpack5" dependencies: "@babel/preset-env": ^7.12.11 - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/core-common": 7.0.0-alpha.19 - "@storybook/preset-web-components-webpack": 7.0.0-alpha.19 - "@storybook/web-components": 7.0.0-alpha.19 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/core-common": 7.0.0-alpha.20 + "@storybook/preset-web-components-webpack": 7.0.0-alpha.20 + "@storybook/web-components": 7.0.0-alpha.20 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 lit-html: 2.0.2 @@ -9559,18 +9559,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/web-components@7.0.0-alpha.19, @storybook/web-components@workspace:*, @storybook/web-components@workspace:renderers/web-components": +"@storybook/web-components@7.0.0-alpha.20, @storybook/web-components@workspace:*, @storybook/web-components@workspace:renderers/web-components": version: 0.0.0-use.local resolution: "@storybook/web-components@workspace:renderers/web-components" dependencies: - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/api": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 - "@storybook/core-client": 7.0.0-alpha.19 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/api": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 + "@storybook/core-client": 7.0.0-alpha.20 "@storybook/csf": 0.0.2--canary.0899bb7.0 - "@storybook/docs-tools": 7.0.0-alpha.19 - "@storybook/preview-web": 7.0.0-alpha.19 - "@storybook/store": 7.0.0-alpha.19 + "@storybook/docs-tools": 7.0.0-alpha.20 + "@storybook/preview-web": 7.0.0-alpha.20 + "@storybook/store": 7.0.0-alpha.20 core-js: ^3.8.2 global: ^4.4.0 lit-html: 2.0.2 @@ -12699,22 +12699,22 @@ __metadata: "@angular/platform-browser-dynamic": ^13.3.6 "@compodoc/compodoc": ^1.1.18 "@ngrx/store": ^13.2.0 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-interactions": 7.0.0-alpha.19 - "@storybook/addon-jest": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/angular": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-interactions": 7.0.0-alpha.20 + "@storybook/addon-jest": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/angular": 7.0.0-alpha.20 "@storybook/babel-plugin-require-context-hook": 1.0.1 "@storybook/jest": ^0.0.10 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/source-loader": 7.0.0-alpha.20 "@storybook/testing-library": 0.0.14-next.0 "@types/core-js": ^2.5.4 "@types/jest": ^26.0.16 @@ -12730,7 +12730,7 @@ __metadata: protractor: ~7.0.0 rxjs: ^6.6.7 sass: ^1.43.4 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 storybook-addon-angular-ivy: ^0.0.1 telejson: ^6.0.8 ts-jest: ^26.4.4 @@ -17280,28 +17280,28 @@ __metadata: resolution: "cra-kitchen-sink@workspace:examples/cra-kitchen-sink" dependencies: "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-jest": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/client-logger": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-jest": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/client-logger": 7.0.0-alpha.20 "@storybook/preset-create-react-app": ^4.1.0 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 + "@storybook/theming": 7.0.0-alpha.20 global: ^4.4.0 prop-types: ^15.7.2 react: 16.14.0 react-dom: 16.14.0 react-lifecycles-compat: ^3.0.4 react-scripts: ^5.0.1 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 webpack: 5 languageName: unknown linkType: soft @@ -17310,15 +17310,15 @@ __metadata: version: 0.0.0-use.local resolution: "cra-ts-essentials@workspace:examples/cra-ts-essentials" dependencies: - "@storybook/addon-essentials": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/builder-webpack5": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 + "@storybook/addon-essentials": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/builder-webpack5": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 "@storybook/preset-create-react-app": ^4.1.0 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 "@storybook/testing-library": ^0.0.9 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@types/jest": ^26.0.16 "@types/node": ^14.14.20 || ^16.0.0 "@types/react": ^16.14.23 @@ -17328,7 +17328,7 @@ __metadata: react: 16.14.0 react-dom: 16.14.0 react-scripts: ^5.0.1 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 ts-node: ^10.4.0 typescript: ~4.6.3 webpack: 5 @@ -17339,16 +17339,16 @@ __metadata: version: 0.0.0-use.local resolution: "cra-ts-kitchen-sink@workspace:examples/cra-ts-kitchen-sink" dependencies: - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/builder-webpack5": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/builder-webpack5": 7.0.0-alpha.20 "@storybook/preset-create-react-app": ^4.1.0 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 "@types/enzyme": ^3.10.8 "@types/jest": 25.2.3 "@types/node": ^14.14.20 || ^16.0.0 @@ -17363,7 +17363,7 @@ __metadata: react-dom: 16.14.0 react-moment-proptypes: ^1.7.0 react-scripts: ^5.0.1 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 ts-node: ^10.4.0 typescript: ~4.6.3 webpack: 5 @@ -19706,19 +19706,19 @@ __metadata: dependencies: "@babel/core": ^7.12.10 "@ember/optional-features": ^2.0.0 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/ember": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/ember": 7.0.0-alpha.20 "@storybook/ember-cli-storybook": ^0.2.1 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/source-loader": 7.0.0-alpha.20 babel-loader: ^8.2.5 broccoli-asset-rev: ^3.0.0 browserify-zlib: ^0.2.0 @@ -19740,7 +19740,7 @@ __metadata: loader.js: ^4.7.0 os-browserify: ^0.3.0 shx: ^0.3.2 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 stream-browserify: ^3.0.0 vm-browserify: ^1.1.2 webpack: 5 @@ -24558,31 +24558,31 @@ __metadata: version: 0.0.0-use.local resolution: "html-kitchen-sink@workspace:examples/html-kitchen-sink" dependencies: - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-jest": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-jest": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 "@storybook/addon-postcss": ^2.0.0 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/client-api": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 - "@storybook/html": 7.0.0-alpha.19 - "@storybook/html-webpack5": 7.0.0-alpha.19 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/client-api": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 + "@storybook/html": 7.0.0-alpha.20 + "@storybook/html-webpack5": 7.0.0-alpha.20 + "@storybook/source-loader": 7.0.0-alpha.20 autoprefixer: ^10.0.1 eventemitter3: ^4.0.7 format-json: ^1.0.3 global: ^4.4.0 postcss: ^8.2.4 postcss-color-rebeccapurple: ^6.0.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 languageName: unknown linkType: soft @@ -33254,33 +33254,33 @@ __metadata: dependencies: "@emotion/jest": ^11.8.0 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.5 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-interactions": 7.0.0-alpha.19 - "@storybook/addon-jest": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storyshots-puppeteer": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-toolbars": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/cli": 7.0.0-alpha.19 - "@storybook/components": 7.0.0-alpha.19 - "@storybook/core-events": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-interactions": 7.0.0-alpha.20 + "@storybook/addon-jest": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storyshots-puppeteer": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-toolbars": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/cli": 7.0.0-alpha.20 + "@storybook/components": 7.0.0-alpha.20 + "@storybook/core-events": 7.0.0-alpha.20 "@storybook/design-system": ^5.4.7 "@storybook/jest": ^0.0.10 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 - "@storybook/router": 7.0.0-alpha.19 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 + "@storybook/router": 7.0.0-alpha.20 + "@storybook/source-loader": 7.0.0-alpha.20 "@storybook/testing-library": 0.0.14-next.0 - "@storybook/theming": 7.0.0-alpha.19 + "@storybook/theming": 7.0.0-alpha.20 "@testing-library/dom": ^7.31.2 "@testing-library/user-event": ^13.1.9 chromatic: ^6.0.2 @@ -33296,7 +33296,7 @@ __metadata: prop-types: ^15.7.2 react: 16.14.0 react-dom: 16.14.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 terser-webpack-plugin: ^5.3.1 uuid-browser: ^3.1.0 webpack: 5 @@ -35662,18 +35662,18 @@ __metadata: resolution: "preact-example@workspace:examples/preact-kitchen-sink" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 - "@storybook/preact": 7.0.0-alpha.19 - "@storybook/preact-webpack5": 7.0.0-alpha.19 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 + "@storybook/preact": 7.0.0-alpha.20 + "@storybook/preact-webpack5": 7.0.0-alpha.20 + "@storybook/source-loader": 7.0.0-alpha.20 "@types/prop-types": ^15.7.3 "@types/react": ^17 "@types/react-dom": ^17 @@ -35688,7 +35688,7 @@ __metadata: raw-loader: ^4.0.2 react: ^17.0.2 react-dom: ^17.0.2 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 svg-url-loader: ^7.1.1 webpack: 5 webpack-dev-server: ^4.8.1 @@ -39340,11 +39340,11 @@ __metadata: languageName: node linkType: hard -"sb@7.0.0-alpha.19, sb@workspace:lib/cli-sb": +"sb@7.0.0-alpha.20, sb@workspace:lib/cli-sb": version: 0.0.0-use.local resolution: "sb@workspace:lib/cli-sb" dependencies: - "@storybook/cli": 7.0.0-alpha.19 + "@storybook/cli": 7.0.0-alpha.20 typescript: ~4.6.3 bin: sb: ./index.js @@ -39718,15 +39718,15 @@ __metadata: version: 0.0.0-use.local resolution: "server-kitchen-sink@workspace:examples/server-kitchen-sink" dependencies: - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/node-logger": 7.0.0-alpha.19 - "@storybook/server": 7.0.0-alpha.19 - "@storybook/server-webpack5": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/node-logger": 7.0.0-alpha.20 + "@storybook/server": 7.0.0-alpha.20 + "@storybook/server-webpack5": 7.0.0-alpha.20 concurrently: ^5.3.0 cors: ^2.8.5 express: ~4.17.1 @@ -39734,7 +39734,7 @@ __metadata: nodemon: ^2.0.7 pug: ^3.0.0 safe-identifier: ^0.4.1 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 languageName: unknown linkType: soft @@ -40643,15 +40643,15 @@ __metadata: version: 0.0.0-use.local resolution: "standalone-preview@workspace:examples/standalone-preview" dependencies: - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/cli": 7.0.0-alpha.19 - "@storybook/react": 7.0.0-alpha.19 - "@storybook/react-webpack5": 7.0.0-alpha.19 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/cli": 7.0.0-alpha.20 + "@storybook/react": 7.0.0-alpha.20 + "@storybook/react-webpack5": 7.0.0-alpha.20 cross-env: ^7.0.3 parcel: 2.0.1 react: 16.14.0 react-dom: 16.14.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 languageName: unknown linkType: soft @@ -40747,11 +40747,11 @@ __metadata: languageName: node linkType: hard -"storybook@7.0.0-alpha.19, storybook@workspace:lib/cli-storybook": +"storybook@7.0.0-alpha.20, storybook@workspace:lib/cli-storybook": version: 0.0.0-use.local resolution: "storybook@workspace:lib/cli-storybook" dependencies: - "@storybook/cli": 7.0.0-alpha.19 + "@storybook/cli": 7.0.0-alpha.20 typescript: ~4.6.3 bin: sb: ./index.js @@ -41499,25 +41499,25 @@ __metadata: version: 0.0.0-use.local resolution: "svelte-example@workspace:examples/svelte-kitchen-sink" dependencies: - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-interactions": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-interactions": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 "@storybook/jest": ^0.0.10 - "@storybook/source-loader": 7.0.0-alpha.19 - "@storybook/svelte": 7.0.0-alpha.19 - "@storybook/svelte-webpack5": 7.0.0-alpha.19 + "@storybook/source-loader": 7.0.0-alpha.20 + "@storybook/svelte": 7.0.0-alpha.20 + "@storybook/svelte-webpack5": 7.0.0-alpha.20 "@storybook/testing-library": 0.0.14-next.0 global: ^4.4.0 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 svelte-jester: ^2.3.2 svelte-preprocess: ^4.10.6 languageName: unknown @@ -44363,22 +44363,22 @@ __metadata: resolution: "vue-3-cli-example@workspace:examples/vue-3-cli" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-essentials": 7.0.0-alpha.19 - "@storybook/addon-interactions": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-essentials": 7.0.0-alpha.20 + "@storybook/addon-interactions": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 "@storybook/jest": ^0.0.10 "@storybook/testing-library": 0.0.14-next.0 - "@storybook/vue3": 7.0.0-alpha.19 - "@storybook/vue3-webpack5": 7.0.0-alpha.19 + "@storybook/vue3": 7.0.0-alpha.20 + "@storybook/vue3-webpack5": 7.0.0-alpha.20 "@vue/cli-plugin-babel": ^5.0.4 "@vue/cli-plugin-typescript": ^5.0.4 "@vue/cli-service": ^5.0.4 "@vue/compiler-sfc": ^3.2.36 babel-loader: ^8.2.5 core-js: ^3.8.2 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 typescript: ~4.6.3 vue: ^3.0.0 vue-jest: ^5.0.0-alpha.8 @@ -44399,17 +44399,17 @@ __metadata: version: 0.0.0-use.local resolution: "vue-cli-example@workspace:examples/vue-cli" dependencies: - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-essentials": 7.0.0-alpha.19 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-essentials": 7.0.0-alpha.20 "@storybook/preset-scss": ^1.0.3 - "@storybook/source-loader": 7.0.0-alpha.19 - "@storybook/vue": 7.0.0-alpha.19 - "@storybook/vue-webpack5": 7.0.0-alpha.19 + "@storybook/source-loader": 7.0.0-alpha.20 + "@storybook/vue": 7.0.0-alpha.20 + "@storybook/vue-webpack5": 7.0.0-alpha.20 "@vue/cli-plugin-babel": ^5.0.4 "@vue/cli-plugin-typescript": ^5.0.4 "@vue/cli-service": ^5.0.4 core-js: ^3.8.2 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 typescript: ~4.6.3 vue: ^2.6.12 vue-class-component: ^7.2.6 @@ -44457,29 +44457,29 @@ __metadata: resolution: "vue-example@workspace:examples/vue-kitchen-sink" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-a11y": 7.0.0-alpha.19 - "@storybook/addon-actions": 7.0.0-alpha.19 - "@storybook/addon-backgrounds": 7.0.0-alpha.19 - "@storybook/addon-controls": 7.0.0-alpha.19 - "@storybook/addon-docs": 7.0.0-alpha.19 - "@storybook/addon-highlight": 7.0.0-alpha.19 - "@storybook/addon-interactions": 7.0.0-alpha.19 - "@storybook/addon-links": 7.0.0-alpha.19 - "@storybook/addon-storyshots": 7.0.0-alpha.19 - "@storybook/addon-storysource": 7.0.0-alpha.19 - "@storybook/addon-viewport": 7.0.0-alpha.19 - "@storybook/addons": 7.0.0-alpha.19 + "@storybook/addon-a11y": 7.0.0-alpha.20 + "@storybook/addon-actions": 7.0.0-alpha.20 + "@storybook/addon-backgrounds": 7.0.0-alpha.20 + "@storybook/addon-controls": 7.0.0-alpha.20 + "@storybook/addon-docs": 7.0.0-alpha.20 + "@storybook/addon-highlight": 7.0.0-alpha.20 + "@storybook/addon-interactions": 7.0.0-alpha.20 + "@storybook/addon-links": 7.0.0-alpha.20 + "@storybook/addon-storyshots": 7.0.0-alpha.20 + "@storybook/addon-storysource": 7.0.0-alpha.20 + "@storybook/addon-viewport": 7.0.0-alpha.20 + "@storybook/addons": 7.0.0-alpha.20 "@storybook/jest": ^0.0.10 - "@storybook/source-loader": 7.0.0-alpha.19 + "@storybook/source-loader": 7.0.0-alpha.20 "@storybook/testing-library": 0.0.14-next.0 - "@storybook/vue": 7.0.0-alpha.19 - "@storybook/vue-webpack5": 7.0.0-alpha.19 + "@storybook/vue": 7.0.0-alpha.20 + "@storybook/vue-webpack5": 7.0.0-alpha.20 "@vue/babel-preset-jsx": ^1.2.4 babel-loader: ^8.2.5 cross-env: ^7.0.3 file-loader: ^6.2.0 prop-types: ^15.7.2 - storybook: 7.0.0-alpha.19 + storybook: 7.0.0-alpha.20 svg-url-loader: ^7.1.1 vue: ^2.6.12 vue-loader: ^15.9.6 From 77bf6136749a7572855108707466d9952eafd536 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 16 Aug 2022 10:36:46 +0200 Subject: [PATCH 210/266] refactor: move write/read package json into JsPackageManager --- .../cli/src/automigrate/fixes/builder-vite.ts | 4 +-- code/lib/cli/src/detect.test.ts | 17 +++++----- code/lib/cli/src/detect.ts | 27 ++++------------ code/lib/cli/src/generators/RAX/index.ts | 3 +- code/lib/cli/src/initiate.ts | 11 +++++-- .../js-package-manager/JsPackageManager.ts | 32 +++++++++++++++---- .../src/js-package-manager/NPMProxy.test.ts | 3 +- .../js-package-manager/PackageJsonHelper.ts | 20 ------------ .../src/js-package-manager/Yarn1Proxy.test.ts | 3 +- .../src/js-package-manager/Yarn2Proxy.test.ts | 3 +- code/lib/cli/src/js-package-manager/index.ts | 1 - 11 files changed, 56 insertions(+), 68 deletions(-) delete mode 100644 code/lib/cli/src/js-package-manager/PackageJsonHelper.ts diff --git a/code/lib/cli/src/automigrate/fixes/builder-vite.ts b/code/lib/cli/src/automigrate/fixes/builder-vite.ts index df264724180e..05d15aa1a36f 100644 --- a/code/lib/cli/src/automigrate/fixes/builder-vite.ts +++ b/code/lib/cli/src/automigrate/fixes/builder-vite.ts @@ -5,7 +5,7 @@ import { ConfigFile, readConfig, writeConfig } from '@storybook/csf-tools'; import { getStorybookInfo } from '@storybook/core-common'; import { Fix } from '../types'; -import { PackageJson, writePackageJson } from '../../js-package-manager'; +import { PackageJson } from '../../js-package-manager'; const logger = console; @@ -70,7 +70,7 @@ export const builderVite: Fix = { if (!dryRun) { delete dependencies['storybook-builder-vite']; delete devDependencies['storybook-builder-vite']; - writePackageJson(packageJson); + packageManager.writePackageJson(packageJson); } logger.info(`Adding '@storybook/builder-vite' as dev dependency`); diff --git a/code/lib/cli/src/detect.test.ts b/code/lib/cli/src/detect.test.ts index 9d83e30be6bb..6caf23f682e3 100644 --- a/code/lib/cli/src/detect.test.ts +++ b/code/lib/cli/src/detect.test.ts @@ -275,22 +275,23 @@ const MOCK_FRAMEWORK_FILES: { describe('Detect', () => { it(`should return type HTML if html option is passed`, () => { (readPackageJson as jest.Mock).mockImplementation(() => true); - expect(detect({ html: true })).toBe(ProjectType.HTML); + expect(detect({ dependencies: {} }, { html: true })).toBe(ProjectType.HTML); }); it(`should return type UNDETECTED if neither packageJson or bowerJson exist`, () => { (readPackageJson as jest.Mock).mockImplementation(() => false); (getBowerJson as jest.Mock).mockImplementation(() => false); - expect(detect()).toBe(ProjectType.UNDETECTED); + expect(detect(undefined)).toBe(ProjectType.UNDETECTED); }); it(`should return language typescript if the dependency is present`, () => { - (readPackageJson as jest.Mock).mockImplementation(() => ({ - dependencies: { - typescript: '1.0.0', - }, - })); - expect(detectLanguage()).toBe(SupportedLanguage.TYPESCRIPT); + expect( + detectLanguage({ + dependencies: { + typescript: '1.0.0', + }, + }) + ).toBe(SupportedLanguage.TYPESCRIPT); }); it(`should return language javascript by default`, () => { diff --git a/code/lib/cli/src/detect.ts b/code/lib/cli/src/detect.ts index d6b5269db697..cf207cc08130 100644 --- a/code/lib/cli/src/detect.ts +++ b/code/lib/cli/src/detect.ts @@ -13,12 +13,7 @@ import { CoreBuilder, } from './project_types'; import { getBowerJson, paddedLog } from './helpers'; -import { - PackageJson, - readPackageJson, - JsPackageManager, - PackageJsonWithMaybeDeps, -} from './js-package-manager'; +import { PackageJson, JsPackageManager, PackageJsonWithMaybeDeps } from './js-package-manager'; import { detectNextJS } from './detect-nextjs'; const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs']; @@ -153,14 +148,9 @@ export function isStorybookInstalled( return false; } -export function detectLanguage() { +export function detectLanguage(packageJson?: PackageJson) { let language = SupportedLanguage.JAVASCRIPT; - let packageJson; - try { - packageJson = readPackageJson(); - } catch (err) { - // - } + const bowerJson = getBowerJson(); if (!packageJson && !bowerJson) { return language; @@ -173,13 +163,10 @@ export function detectLanguage() { return language; } -export function detect(options: { force?: boolean; html?: boolean } = {}) { - let packageJson; - try { - packageJson = readPackageJson(); - } catch (err) { - // - } +export function detect( + packageJson: PackageJson, + options: { force?: boolean; html?: boolean } = {} +) { const bowerJson = getBowerJson(); if (!packageJson && !bowerJson) { diff --git a/code/lib/cli/src/generators/RAX/index.ts b/code/lib/cli/src/generators/RAX/index.ts index 82230e673a20..02ce74816455 100644 --- a/code/lib/cli/src/generators/RAX/index.ts +++ b/code/lib/cli/src/generators/RAX/index.ts @@ -1,6 +1,5 @@ import { baseGenerator } from '../baseGenerator'; import { Generator } from '../types'; -import { writePackageJson } from '../../js-package-manager'; const generator: Generator = async (packageManager, npmOptions, options) => { const [latestRaxVersion] = await packageManager.getVersions('rax'); @@ -17,7 +16,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { packageJson.dependencies['rax-text'] = packageJson.dependencies['rax-text'] || raxVersion; packageJson.dependencies['rax-view'] = packageJson.dependencies['rax-view'] || raxVersion; - writePackageJson(packageJson); + packageManager.writePackageJson(packageJson); await baseGenerator(packageManager, npmOptions, options, 'rax', { extraPackages: ['rax'], diff --git a/code/lib/cli/src/initiate.ts b/code/lib/cli/src/initiate.ts index 7887e91d879e..c3c60308856e 100644 --- a/code/lib/cli/src/initiate.ts +++ b/code/lib/cli/src/initiate.ts @@ -42,7 +42,14 @@ const installStorybook = ( skipInstall: options.skipInstall, }; - const language = detectLanguage(); + let packageJson; + try { + packageJson = packageManager.readPackageJson(); + } catch (err) { + // + } + + const language = detectLanguage(packageJson); const generatorOptions = { language, @@ -283,7 +290,7 @@ export async function initiate(options: CommandOptions, pkg: Package): Promise) { const packageJson = this.retrievePackageJson(); - writePackageJson({ + this.writePackageJson({ ...packageJson, scripts: { ...packageJson.scripts, diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts index 789e1f6ee53e..e04fea08cc69 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts @@ -1,5 +1,4 @@ import { NPMProxy } from './NPMProxy'; -import * as PackageJsonHelper from './PackageJsonHelper'; describe('NPM Proxy', () => { let npmProxy: NPMProxy; @@ -107,7 +106,7 @@ describe('NPM Proxy', () => { it('should only change package.json without running install', () => { const executeCommandSpy = jest.spyOn(npmProxy, 'executeCommand').mockReturnValue('7.0.0'); const writePackageSpy = jest - .spyOn(PackageJsonHelper, 'writePackageJson') + .spyOn(npmProxy, 'writePackageJson') .mockImplementation(jest.fn); npmProxy.removeDependencies( diff --git a/code/lib/cli/src/js-package-manager/PackageJsonHelper.ts b/code/lib/cli/src/js-package-manager/PackageJsonHelper.ts deleted file mode 100644 index e013783745e4..000000000000 --- a/code/lib/cli/src/js-package-manager/PackageJsonHelper.ts +++ /dev/null @@ -1,20 +0,0 @@ -import path from 'path'; -import fs from 'fs'; -import type { PackageJson } from '@storybook/core-common'; - -export function readPackageJson(): PackageJson { - const packageJsonPath = path.resolve('package.json'); - if (!fs.existsSync(packageJsonPath)) { - throw new Error(`Could not read package.json file at ${packageJsonPath}`); - } - - const jsonContent = fs.readFileSync(packageJsonPath, 'utf8'); - return JSON.parse(jsonContent); -} - -export function writePackageJson(packageJson: PackageJson) { - const content = `${JSON.stringify(packageJson, null, 2)}\n`; - const packageJsonPath = path.resolve('package.json'); - - fs.writeFileSync(packageJsonPath, content, 'utf8'); -} diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts index c6655cd597bb..a95f74e1ed13 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts @@ -1,5 +1,4 @@ import { Yarn1Proxy } from './Yarn1Proxy'; -import * as PackageJsonHelper from './PackageJsonHelper'; describe('Yarn 1 Proxy', () => { let yarn1Proxy: Yarn1Proxy; @@ -62,7 +61,7 @@ describe('Yarn 1 Proxy', () => { it('skipInstall should only change package.json without running install', () => { const executeCommandSpy = jest.spyOn(yarn1Proxy, 'executeCommand').mockReturnValue('7.0.0'); const writePackageSpy = jest - .spyOn(PackageJsonHelper, 'writePackageJson') + .spyOn(yarn1Proxy, 'writePackageJson') .mockImplementation(jest.fn); yarn1Proxy.removeDependencies( diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts index 30c90f9be32b..09798191699f 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts @@ -1,5 +1,4 @@ import { Yarn2Proxy } from './Yarn2Proxy'; -import * as PackageJsonHelper from './PackageJsonHelper'; describe('Yarn 2 Proxy', () => { let yarn2Proxy: Yarn2Proxy; @@ -62,7 +61,7 @@ describe('Yarn 2 Proxy', () => { it('skipInstall should only change package.json without running install', () => { const executeCommandSpy = jest.spyOn(yarn2Proxy, 'executeCommand').mockReturnValue('7.0.0'); const writePackageSpy = jest - .spyOn(PackageJsonHelper, 'writePackageJson') + .spyOn(yarn2Proxy, 'writePackageJson') .mockImplementation(jest.fn); yarn2Proxy.removeDependencies( diff --git a/code/lib/cli/src/js-package-manager/index.ts b/code/lib/cli/src/js-package-manager/index.ts index 13cc52f4ed04..3a2b877d5030 100644 --- a/code/lib/cli/src/js-package-manager/index.ts +++ b/code/lib/cli/src/js-package-manager/index.ts @@ -1,4 +1,3 @@ export * from './JsPackageManagerFactory'; export * from './JsPackageManager'; export * from './PackageJson'; -export * from './PackageJsonHelper'; From e3a7dbfb973bc0356773fab2bff23fab30af81ce Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 16 Aug 2022 11:02:31 +0200 Subject: [PATCH 211/266] add package resolutions command to jspackagemanager --- .../js-package-manager/JsPackageManager.ts | 11 ++++++++ .../src/js-package-manager/NPMProxy.test.ts | 26 +++++++++++++++++ .../cli/src/js-package-manager/NPMProxy.ts | 10 +++++++ .../src/js-package-manager/Yarn1Proxy.test.ts | 28 +++++++++++++++++++ .../cli/src/js-package-manager/Yarn1Proxy.ts | 10 +++++++ .../src/js-package-manager/Yarn2Proxy.test.ts | 28 +++++++++++++++++++ .../cli/src/js-package-manager/Yarn2Proxy.ts | 10 +++++++ 7 files changed, 123 insertions(+) diff --git a/code/lib/cli/src/js-package-manager/JsPackageManager.ts b/code/lib/cli/src/js-package-manager/JsPackageManager.ts index 3090983aee39..442d26998766 100644 --- a/code/lib/cli/src/js-package-manager/JsPackageManager.ts +++ b/code/lib/cli/src/js-package-manager/JsPackageManager.ts @@ -326,12 +326,23 @@ export abstract class JsPackageManager { }); } + public addPackageResolutions(versions: Record) { + const packageJson = this.retrievePackageJson(); + const resolutions = this.getResolutions(packageJson, versions); + this.writePackageJson({ ...packageJson, ...resolutions }); + } + protected abstract runInstall(): void; protected abstract runAddDeps(dependencies: string[], installAsDevDependencies: boolean): void; protected abstract runRemoveDeps(dependencies: string[]): void; + protected abstract getResolutions( + packageJson: PackageJson, + versions: Record + ): Record; + /** * Get the latest or all versions of the input package available on npmjs.com * diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts index e04fea08cc69..49cc2bf1aea1 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts @@ -204,4 +204,30 @@ describe('NPM Proxy', () => { expect(version).toEqual(`^${packageVersion}`); }); }); + + describe('addPackageResolutions', () => { + it('adds resolutions to package.json and account for existing resolutions', () => { + const writePackageSpy = jest.spyOn(npmProxy, 'writePackageJson').mockImplementation(jest.fn); + + jest.spyOn(npmProxy, 'retrievePackageJson').mockImplementation( + jest.fn(() => ({ + overrides: { + bar: 'x.x.x', + }, + })) + ); + + const versions = { + foo: 'x.x.x', + }; + npmProxy.addPackageResolutions(versions); + + expect(writePackageSpy).toHaveBeenCalledWith({ + overrides: { + ...versions, + bar: 'x.x.x', + }, + }); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.ts b/code/lib/cli/src/js-package-manager/NPMProxy.ts index 5c9f76aaae5d..d89726f9d7dc 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.ts @@ -1,5 +1,6 @@ import semver from '@storybook/semver'; import { JsPackageManager } from './JsPackageManager'; +import type { PackageJson } from './PackageJson'; export class NPMProxy extends JsPackageManager { readonly type = 'npm'; @@ -60,6 +61,15 @@ export class NPMProxy extends JsPackageManager { return this.uninstallArgs; } + protected getResolutions(packageJson: PackageJson, versions: Record) { + return { + overrides: { + ...packageJson.overrides, + ...versions, + }, + }; + } + protected runInstall(): void { this.executeCommand('npm', this.getInstallArgs(), 'inherit'); } diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts index a95f74e1ed13..9afa55a4dc16 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts @@ -125,4 +125,32 @@ describe('Yarn 1 Proxy', () => { await expect(yarn1Proxy.latestVersion('@storybook/addons')).rejects.toThrow(); }); }); + + describe('addPackageResolutions', () => { + it('adds resolutions to package.json and account for existing resolutions', () => { + const writePackageSpy = jest + .spyOn(yarn1Proxy, 'writePackageJson') + .mockImplementation(jest.fn); + + jest.spyOn(yarn1Proxy, 'retrievePackageJson').mockImplementation( + jest.fn(() => ({ + resolutions: { + bar: 'x.x.x', + }, + })) + ); + + const versions = { + foo: 'x.x.x', + }; + yarn1Proxy.addPackageResolutions(versions); + + expect(writePackageSpy).toHaveBeenCalledWith({ + resolutions: { + ...versions, + bar: 'x.x.x', + }, + }); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts index 88368e3f0ea6..789499084c85 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts @@ -1,4 +1,5 @@ import { JsPackageManager } from './JsPackageManager'; +import type { PackageJson } from './PackageJson'; export class Yarn1Proxy extends JsPackageManager { readonly type = 'yarn1'; @@ -15,6 +16,15 @@ export class Yarn1Proxy extends JsPackageManager { return `yarn ${command}`; } + protected getResolutions(packageJson: PackageJson, versions: Record) { + return { + resolutions: { + ...packageJson.resolutions, + ...versions, + }, + }; + } + protected runInstall(): void { this.executeCommand('yarn', [], 'inherit'); } diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts index 09798191699f..11f8749ab726 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts @@ -131,4 +131,32 @@ describe('Yarn 2 Proxy', () => { await expect(yarn2Proxy.latestVersion('@storybook/addons')).rejects.toThrow(); }); }); + + describe('addPackageResolutions', () => { + it('adds resolutions to package.json and account for existing resolutions', () => { + const writePackageSpy = jest + .spyOn(yarn2Proxy, 'writePackageJson') + .mockImplementation(jest.fn); + + jest.spyOn(yarn2Proxy, 'retrievePackageJson').mockImplementation( + jest.fn(() => ({ + resolutions: { + bar: 'x.x.x', + }, + })) + ); + + const versions = { + foo: 'x.x.x', + }; + yarn2Proxy.addPackageResolutions(versions); + + expect(writePackageSpy).toHaveBeenCalledWith({ + resolutions: { + ...versions, + bar: 'x.x.x', + }, + }); + }); + }); }); diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts index 133c384e00b7..63736283424f 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts @@ -1,4 +1,5 @@ import { JsPackageManager } from './JsPackageManager'; +import type { PackageJson } from './PackageJson'; export class Yarn2Proxy extends JsPackageManager { readonly type = 'yarn2'; @@ -15,6 +16,15 @@ export class Yarn2Proxy extends JsPackageManager { return `yarn ${command}`; } + protected getResolutions(packageJson: PackageJson, versions: Record) { + return { + resolutions: { + ...packageJson.resolutions, + ...versions, + }, + }; + } + protected runInstall(): void { this.executeCommand('yarn', [], 'inherit'); } From 18dea52f534078d05b4328bc0c73d23fa2695150 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 16 Aug 2022 11:44:53 +0200 Subject: [PATCH 212/266] Fix interactions count with collapsed items --- code/addons/interactions/src/Panel.tsx | 10 +++++----- .../addons/interactions/src/components/Interaction.tsx | 4 ++++ .../interactions/src/components/InteractionsPanel.tsx | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index 8c5152fee16e..ce114dc9b05c 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -16,6 +16,7 @@ import { TabIcon, TabStatus } from './components/TabStatus'; interface Interaction extends Call { status: Call['status']; childCallIds: Call['id'][]; + isVisible: boolean; isCollapsed: boolean; toggleCollapsed: () => void; } @@ -43,15 +44,14 @@ export const getInteractions = ({ const callsById = new Map(); const childCallMap = new Map(); return log - .filter(({ callId, ancestors }) => { - let visible = true; + .map(({ callId, ancestors, status }) => { + let isVisible = true; ancestors.forEach((ancestor) => { - if (collapsed.has(ancestor)) visible = false; + if (collapsed.has(ancestor)) isVisible = false; childCallMap.set(ancestor, (childCallMap.get(ancestor) || []).concat(callId)); }); - return visible; + return { ...calls.get(callId), status, isVisible }; }) - .map(({ callId, status }) => ({ ...calls.get(callId), status } as Call)) .map((call) => { const status = call.status === CallStates.ERROR && diff --git a/code/addons/interactions/src/components/Interaction.tsx b/code/addons/interactions/src/components/Interaction.tsx index 7ad25af69a32..72f2f39c77d8 100644 --- a/code/addons/interactions/src/components/Interaction.tsx +++ b/code/addons/interactions/src/components/Interaction.tsx @@ -130,6 +130,7 @@ export const Interaction = ({ controls, controlStates, childCallIds, + isVisible, isCollapsed, toggleCollapsed, pausedAt, @@ -139,6 +140,7 @@ export const Interaction = ({ controls: Controls; controlStates: ControlStates; childCallIds?: Call['id'][]; + isVisible: boolean; isCollapsed: boolean; toggleCollapsed: () => void; pausedAt?: Call['id']; @@ -146,6 +148,8 @@ export const Interaction = ({ const [isHovered, setIsHovered] = React.useState(false); const isInteractive = !controlStates.goto || !call.interceptable || !!call.ancestors.length; + if (!isVisible) return null; + return ( diff --git a/code/addons/interactions/src/components/InteractionsPanel.tsx b/code/addons/interactions/src/components/InteractionsPanel.tsx index dee82be36ef4..f4f0e61f3299 100644 --- a/code/addons/interactions/src/components/InteractionsPanel.tsx +++ b/code/addons/interactions/src/components/InteractionsPanel.tsx @@ -23,6 +23,7 @@ interface InteractionsPanelProps { interactions: (Call & { status?: CallStates; childCallIds: Call['id'][]; + isVisible: boolean; isCollapsed: boolean; toggleCollapsed: () => void; })[]; @@ -118,6 +119,7 @@ export const InteractionsPanel: React.FC = React.memo( controls={controls} controlStates={controlStates} childCallIds={call.childCallIds} + isVisible={call.isVisible} isCollapsed={call.isCollapsed} toggleCollapsed={call.toggleCollapsed} pausedAt={pausedAt} From b3585b9043b585219e66c769fd40e1a87fc6ad56 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 16 Aug 2022 11:45:02 +0200 Subject: [PATCH 213/266] Remove log statement --- code/addons/interactions/src/Panel.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index ce114dc9b05c..b93bc0f2d9cb 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -129,7 +129,6 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { setErrored(true); }, [PLAY_FUNCTION_THREW_EXCEPTION]: (e) => { - console.log('PLAY_FUNCTION_THREW_EXCEPTION'); if (e?.message !== IGNORED_EXCEPTION.message) setCaughtException(e); else setCaughtException(undefined); }, From a13f330517202a26eb768cbf37eb9722f91ab6ed Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 16 Aug 2022 12:15:55 +0200 Subject: [PATCH 214/266] add setRegistryURL to jspackagemanager --- .../src/js-package-manager/JsPackageManager.ts | 2 ++ .../cli/src/js-package-manager/NPMProxy.test.ts | 15 +++++++++++++++ code/lib/cli/src/js-package-manager/NPMProxy.ts | 5 +++++ .../cli/src/js-package-manager/Yarn1Proxy.test.ts | 15 +++++++++++++++ code/lib/cli/src/js-package-manager/Yarn1Proxy.ts | 5 +++++ .../cli/src/js-package-manager/Yarn2Proxy.test.ts | 15 +++++++++++++++ code/lib/cli/src/js-package-manager/Yarn2Proxy.ts | 5 +++++ 7 files changed, 62 insertions(+) diff --git a/code/lib/cli/src/js-package-manager/JsPackageManager.ts b/code/lib/cli/src/js-package-manager/JsPackageManager.ts index 442d26998766..7ee879b75f56 100644 --- a/code/lib/cli/src/js-package-manager/JsPackageManager.ts +++ b/code/lib/cli/src/js-package-manager/JsPackageManager.ts @@ -36,6 +36,8 @@ export abstract class JsPackageManager { public abstract getRunCommand(command: string): string; + public abstract setRegistryURL(url: string): void; + /** * Install dependencies listed in `package.json` */ diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts index 49cc2bf1aea1..9350b0eae96c 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.test.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.test.ts @@ -21,6 +21,21 @@ describe('NPM Proxy', () => { }); }); + describe('setRegistryUrl', () => { + it('should run `npm config set registry https://foo.bar`', () => { + const executeCommandSpy = jest.spyOn(npmProxy, 'executeCommand').mockReturnValue(''); + + npmProxy.setRegistryURL('https://foo.bar'); + + expect(executeCommandSpy).toHaveBeenCalledWith('npm', [ + 'config', + 'set', + 'registry', + 'https://foo.bar', + ]); + }); + }); + describe('installDependencies', () => { describe('npm6', () => { it('should run `npm install`', () => { diff --git a/code/lib/cli/src/js-package-manager/NPMProxy.ts b/code/lib/cli/src/js-package-manager/NPMProxy.ts index d89726f9d7dc..6728901a5d8f 100644 --- a/code/lib/cli/src/js-package-manager/NPMProxy.ts +++ b/code/lib/cli/src/js-package-manager/NPMProxy.ts @@ -61,6 +61,11 @@ export class NPMProxy extends JsPackageManager { return this.uninstallArgs; } + setRegistryURL(url: string) { + const args = ['config', 'set', 'registry', url]; + this.executeCommand('npm', args); + } + protected getResolutions(packageJson: PackageJson, versions: Record) { return { overrides: { diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts index 9afa55a4dc16..90a7df8b9b8c 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.test.ts @@ -21,6 +21,21 @@ describe('Yarn 1 Proxy', () => { }); }); + describe('setRegistryUrl', () => { + it('should run `yarn config set npmRegistryServer https://foo.bar`', () => { + const executeCommandSpy = jest.spyOn(yarn1Proxy, 'executeCommand').mockReturnValue(''); + + yarn1Proxy.setRegistryURL('https://foo.bar'); + + expect(executeCommandSpy).toHaveBeenCalledWith('yarn', [ + 'config', + 'set', + 'npmRegistryServer', + 'https://foo.bar', + ]); + }); + }); + describe('installDependencies', () => { it('should run `yarn`', () => { const executeCommandSpy = jest.spyOn(yarn1Proxy, 'executeCommand').mockReturnValue(''); diff --git a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts index 789499084c85..2cb60e27578e 100644 --- a/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn1Proxy.ts @@ -16,6 +16,11 @@ export class Yarn1Proxy extends JsPackageManager { return `yarn ${command}`; } + setRegistryURL(url: string) { + const args = ['config', 'set', 'npmRegistryServer', url]; + this.executeCommand('yarn', args); + } + protected getResolutions(packageJson: PackageJson, versions: Record) { return { resolutions: { diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts index 11f8749ab726..93faad9aa82e 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.test.ts @@ -31,6 +31,21 @@ describe('Yarn 2 Proxy', () => { }); }); + describe('setRegistryUrl', () => { + it('should run `yarn config set npmRegistryServer https://foo.bar`', () => { + const executeCommandSpy = jest.spyOn(yarn2Proxy, 'executeCommand').mockReturnValue(''); + + yarn2Proxy.setRegistryURL('https://foo.bar'); + + expect(executeCommandSpy).toHaveBeenCalledWith('yarn', [ + 'config', + 'set', + 'npmRegistryServer', + 'https://foo.bar', + ]); + }); + }); + describe('addDependencies', () => { it('with devDep it should run `yarn install -D @storybook/addons`', () => { const executeCommandSpy = jest.spyOn(yarn2Proxy, 'executeCommand').mockReturnValue(''); diff --git a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts index 63736283424f..fffc7fa773aa 100644 --- a/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts +++ b/code/lib/cli/src/js-package-manager/Yarn2Proxy.ts @@ -16,6 +16,11 @@ export class Yarn2Proxy extends JsPackageManager { return `yarn ${command}`; } + setRegistryURL(url: string) { + const args = ['config', 'set', 'npmRegistryServer', url]; + this.executeCommand('yarn', args); + } + protected getResolutions(packageJson: PackageJson, versions: Record) { return { resolutions: { From 4a74219ead065b84f5b645ee9dacd2056ab6696b Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 16 Aug 2022 12:16:39 +0200 Subject: [PATCH 215/266] WIP: add filter and local registry options to generate-repros --- .../next-repro-generators/generate-repros.ts | 60 +++++++++++++++---- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/scripts/next-repro-generators/generate-repros.ts b/scripts/next-repro-generators/generate-repros.ts index 5d2f66dfff22..3c696a92818c 100755 --- a/scripts/next-repro-generators/generate-repros.ts +++ b/scripts/next-repro-generators/generate-repros.ts @@ -1,12 +1,14 @@ /* eslint-disable no-console */ import { join, relative } from 'path'; -import program from 'commander'; import { command } from 'execa'; import type { Options as ExecaOptions } from 'execa'; import pLimit from 'p-limit'; import prettyTime from 'pretty-hrtime'; import { copy, emptyDir, ensureDir, rename, writeFile } from 'fs-extra'; +import { program } from 'commander'; import reproTemplates from '../../code/lib/cli/src/repro-templates'; +import storybookVersions from '../../code/lib/cli/src/versions'; +import { JsPackageManagerFactory } from '../../code/lib/cli/src/js-package-manager/JsPackageManagerFactory'; // @ts-ignore import { maxConcurrentTasks } from '../utils/concurrency'; @@ -68,7 +70,10 @@ const addDocumentation = async ( await writeFile(join(afterDir, 'README.md'), contents); }; -const runGenerators = async (generators: (GeneratorConfig & { dirName: string })[]) => { +const runGenerators = async ( + generators: (GeneratorConfig & { dirName: string })[], + localRegistry = true +) => { console.log(`🤹‍♂️ Generating repros with a concurrency of ${maxConcurrentTasks}`); const limit = pLimit(maxConcurrentTasks); @@ -87,10 +92,21 @@ const runGenerators = async (generators: (GeneratorConfig & { dirName: string }) await setupYarn({ cwd: baseDir }); + const packageManager = JsPackageManagerFactory.getPackageManager(); + await runCommand(script, { cwd: beforeDir }); await localizeYarnConfigFiles(baseDir, beforeDir); + if (localRegistry) { + // TODO: find a good way to have all this run in the correct cwd (beforeDir) + console.log(`📦 Configuring local registry`); + packageManager.addPackageResolutions(storybookVersions); + packageManager.setRegistryURL('https://foo.bar'); + // TODO: remove this after we make sure the cwd is correct + process.exit(0); + } + await addStorybook(baseDir); await addDocumentation(baseDir, { name, dirName }); @@ -106,19 +122,37 @@ const runGenerators = async (generators: (GeneratorConfig & { dirName: string }) ); }; -const generate = async () => { - runGenerators( - Object.entries(reproTemplates).map(([dirName, configuration]) => ({ +const generate = async ({ + template, + localRegistry, +}: { + template?: string; + localRegistry?: boolean; +}) => { + const generatorConfigs = Object.entries(reproTemplates) + .map(([dirName, configuration]) => ({ dirName, ...configuration, })) - ); -}; + .filter(({ dirName }) => { + if (template) { + return dirName === template; + } + + return true; + }); -program.description('Create a reproduction from a set of possible templates'); -program.parse(process.argv); + runGenerators(generatorConfigs, localRegistry); +}; -generate().catch((e) => { - console.trace(e); - process.exit(1); -}); +program + .description('Create a reproduction from a set of possible templates') + .option('--template