From e5ad678635d4c9ffc742b5853d8f48d2f95936ef Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 3 Jul 2023 21:47:12 +0200 Subject: [PATCH 001/135] make tabs component more type correct, allow for FC as title --- code/lib/types/src/modules/addons.ts | 58 +++++++-- code/lib/types/src/modules/api.ts | 8 +- code/ui/components/src/tabs/tabs.helpers.tsx | 46 ++++--- code/ui/components/src/tabs/tabs.hooks.tsx | 10 +- code/ui/components/src/tabs/tabs.stories.tsx | 35 +++--- code/ui/components/src/tabs/tabs.tsx | 28 +++-- .../src/components/panel/panel.stories.tsx | 117 +++++++++++++++++- .../ui/manager/src/components/panel/panel.tsx | 22 ++-- 8 files changed, 246 insertions(+), 78 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index f4085d06d170..613c8080ccd4 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import type { ReactElement, ReactNode, ValidationMap, WeakValidationMap } from 'react'; import type { RenderData as RouterData } from '../../../router/src/types'; import type { ThemeVars } from '../../../theming/src/types'; import type { @@ -20,7 +21,7 @@ import type { } from './csf'; import type { IndexEntry } from './storyIndex'; -export type Addon_Types = Addon_TypesEnum | string; +export type Addon_Types = Exclude; export interface Addon_ArgType extends InputType { defaultValue?: TArg; @@ -122,9 +123,10 @@ export interface Addon_AddStoryArgs { parameters: Parameters; } -export interface Addon_ClientApiAddon extends Addon_Type { +export type Addon_ClientApiAddon = Addon_Type & { apply: (a: Addon_StoryApi, b: any[]) => any; -} +}; + export interface Addon_ClientApiAddons { [key: string]: Addon_ClientApiAddon; } @@ -301,15 +303,19 @@ export interface Addon_RenderOptions { key?: string; } +/** + * @deprecated This type is deprecated and will be removed in 8.0. + */ export type ReactJSXElement = { type: any; props: any; key: any; }; -export interface Addon_Type { - title: (() => string) | string | ReactJSXElement; - type?: Addon_Types; +export type Addon_Type = Addon_BaseType; +export interface Addon_BaseType { + title: MyFC | string | ReactElement | ReactNode; + type: Addon_Types; id?: string; route?: (routeOptions: RouterData) => string; match?: (matchOptions: RouterData) => boolean; @@ -319,13 +325,23 @@ export interface Addon_Type { hidden?: boolean; } +// This is a copy of FC from react/index.d.ts, but has the PropsWithChildren type removed +// this is correct and more type strict, and future compatible with React.FC in React 18+ +interface MyFC

{ + (props: P, context?: any): ReactElement | null; + propTypes?: WeakValidationMap

| undefined; + contextTypes?: ValidationMap | undefined; + defaultProps?: Partial

| undefined; + displayName?: string | undefined; +} + export type Addon_Loader = (api: API) => void; export interface Addon_Loaders { [key: string]: Addon_Loader; } -export interface Addon_Collection { - [key: string]: Addon_Type; +export interface Addon_Collection { + [key: string]: T; } export interface Addon_Elements { [key: string]: Addon_Collection; @@ -342,10 +358,36 @@ export interface Addon_Config { } export enum Addon_TypesEnum { + /** + * This API is used to create a tab the toolbar above the canvas, This API might be removed in the future. + * @unstable + */ TAB = 'tab', + /** + * This adds panels to the addons side panel. + */ PANEL = 'panel', + /** + * This adds items in the toolbar above the canvas - on the right side. + */ TOOL = 'tool', + /** + * This adds items in the toolbar above the canvas - on the right side. + */ TOOLEXTRA = 'toolextra', + /** + * This adds wrapper components around the canvas/iframe component storybook renders. + * @unstable + */ PREVIEW = 'preview', + /** + * This adds pages that render instead of the canvas. + * DO NOT USE + */ + experimental_PAGE = 'main', + + /** + * @deprecated This property does nothing, and will be removed in Storybook 8.0. + */ NOTES_ELEMENT = 'notes-element', } diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index b20e3d0e120e..985e0e551bf1 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -7,7 +7,7 @@ import type { ViewMode } from './csf'; import type { DocsOptions } from './core-common'; import type { API_HashEntry, API_IndexHash } from './api-stories'; import type { SetStoriesStory, SetStoriesStoryData } from './channelApi'; -import type { Addon_Type } from './addons'; +import type { Addon_Collection, Addon_Type } from './addons'; import type { StoryIndex } from './storyIndex'; export type API_ViewMode = 'story' | 'info' | 'settings' | 'page' | undefined | string; @@ -32,11 +32,9 @@ export interface API_MatchOptions { export type API_Addon = Addon_Type; -export interface API_Collection { - [key: string]: T; -} +export type API_Collection = Addon_Collection; -export type API_Panels = API_Collection; +export type API_Panels = Addon_Collection; export type API_StateMerger = (input: S) => S; diff --git a/code/ui/components/src/tabs/tabs.helpers.tsx b/code/ui/components/src/tabs/tabs.helpers.tsx index b92d38733077..024765fd5cf3 100644 --- a/code/ui/components/src/tabs/tabs.helpers.tsx +++ b/code/ui/components/src/tabs/tabs.helpers.tsx @@ -1,6 +1,8 @@ import { styled } from '@storybook/theming'; -import type { ReactElement } from 'react'; +import type { FC, ReactChild, ReactElement, ReactNode } from 'react'; import React, { Children } from 'react'; +import type { Addon_RenderOptions } from '@storybook/types'; +import type { TabsProps } from './tabs'; export interface VisuallyHiddenProps { active?: boolean; @@ -10,25 +12,41 @@ export const VisuallyHidden = styled.div(({ active }) => active ? { display: 'block' } : { display: 'none' } ); -export const childrenToList = (children: any, selected: string) => +export const childrenToList = (children: TabsProps['children']) => Children.toArray(children).map( - ({ props: { title, id, color, children: childrenOfChild } }: ReactElement, index) => { - const content = Array.isArray(childrenOfChild) ? childrenOfChild[0] : childrenOfChild; + ({ + props: { title, id, color, children: childrenOfChild }, + }: ReactElement<{ + children: FC | ReactChild | null; + title: ReactChild | null | FC; + id: string; + color?: string; + }>) => { + const content: FC | ReactNode = Array.isArray(childrenOfChild) + ? childrenOfChild[0] + : childrenOfChild; + + const render: FC = ( + typeof content === 'function' + ? content + : ({ active, key }: any) => ( + + {content} + + ) + ) as FC; return { - active: selected ? id === selected : index === 0, title, id, - color, - render: - typeof content === 'function' - ? content - : ({ active, key }: any) => ( - - {content} - - ), + ...(color ? { color } : {}), + render, }; } ); export type ChildrenList = ReturnType; +export type ChildrenListComplete = Array< + ReturnType[0] & { + active: boolean; + } +>; diff --git a/code/ui/components/src/tabs/tabs.hooks.tsx b/code/ui/components/src/tabs/tabs.hooks.tsx index 41df6e93f44f..0afb81ea9186 100644 --- a/code/ui/components/src/tabs/tabs.hooks.tsx +++ b/code/ui/components/src/tabs/tabs.hooks.tsx @@ -5,7 +5,7 @@ import useResizeObserver from 'use-resize-observer'; import { TabButton } from '../bar/button'; import { TooltipLinkList } from '../tooltip/TooltipLinkList'; import { WithTooltip } from '../tooltip/WithTooltip'; -import type { ChildrenList } from './tabs.helpers'; +import type { ChildrenListComplete } from './tabs.helpers'; import type { Link } from '../tooltip/TooltipLinkList'; const CollapseIcon = styled.span<{ isActive: boolean }>(({ theme, isActive }) => ({ @@ -32,7 +32,7 @@ const AddonButton = styled(TabButton)<{ preActive: boolean }>(({ active, theme, `; }); -export function useList(list: ChildrenList) { +export function useList(list: ChildrenListComplete) { const tabBarRef = useRef(); const addonsRef = useRef(); const tabRefs = useRef(new Map()); @@ -41,8 +41,8 @@ export function useList(list: ChildrenList) { }); const [visibleList, setVisibleList] = useState(list); - const [invisibleList, setInvisibleList] = useState([]); - const previousList = useRef(list); + const [invisibleList, setInvisibleList] = useState([]); + const previousList = useRef(list); const AddonTab = useCallback( ({ @@ -134,7 +134,7 @@ export function useList(list: ChildrenList) { const { width: widthAddonsTab } = addonsRef.current.getBoundingClientRect(); const rightBorder = invisibleList.length ? x + width - widthAddonsTab : x + width; - const newVisibleList: ChildrenList = []; + const newVisibleList: ChildrenListComplete = []; let widthSum = 0; diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/tabs/tabs.stories.tsx index 7a9abdb24130..6d6973befcf6 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/tabs/tabs.stories.tsx @@ -1,5 +1,4 @@ import { expect } from '@storybook/jest'; -import type { Key } from 'react'; import React, { Fragment } from 'react'; import { action } from '@storybook/addon-actions'; import { logger } from '@storybook/client-logger'; @@ -9,10 +8,11 @@ import { fireEvent, waitFor, screen, - getByText, userEvent, + findByText, } from '@storybook/testing-library'; import { Tabs, TabsState, TabWrapper } from './tabs'; +import type { ChildrenList } from './tabs.helpers'; const colours = Array.from(new Array(15), (val, index) => index).map((i) => Math.floor((1 / 15) * i * 16777215) @@ -41,13 +41,7 @@ function fibonacci(num: number, memo?: FibonacciMap): number { /* eslint-enable no-param-reassign */ } -interface Panels { - [key: string]: { - title: string; - color?: string; - render: ({ active, key }: { active: boolean; key: Key }) => JSX.Element; - }; -} +type Panels = Record>; const panels: Panels = { test1: { @@ -121,7 +115,7 @@ const panels: Panels = { const onSelect = action('onSelect'); const content = Object.entries(panels).map(([k, v]) => ( -

+
{v.render}
)); @@ -224,9 +218,8 @@ export const StatefulDynamicWithOpenTooltip = { await expect(canvas.getByRole('tab', { name: /Addons/ })).toBeInTheDocument(); }); - const addonsTab = await canvas.findByRole('tab', { name: /Addons/ }); - await waitFor(async () => { + const addonsTab = await canvas.findByRole('tab', { name: /Addons/ }); const tooltip = await screen.queryByTestId('tooltip'); if (!tooltip) { @@ -236,14 +229,14 @@ export const StatefulDynamicWithOpenTooltip = { if (!tooltip) { throw new Error('Tooltip not found'); } - }); - expect(screen.queryByTestId('tooltip')).toBeInTheDocument(); + await expect(screen.queryByTestId('tooltip')).toBeInTheDocument(); + }); }, render: (args) => ( {Object.entries(panels).map(([k, v]) => ( -
+
{v.render}
))} @@ -262,10 +255,12 @@ export const StatefulDynamicWithSelectedAddon = { play: async (context) => { await StatefulDynamicWithOpenTooltip.play(context); - const popperContainer = screen.getByTestId('tooltip'); - const tab4 = getByText(popperContainer, 'Tab title #4', {}); - fireEvent(tab4, new MouseEvent('click', { bubbles: true })); - await waitFor(() => screen.getByText('CONTENT 4')); + await waitFor(async () => { + const popperContainer = await screen.findByTestId('tooltip'); + const tab4 = await findByText(popperContainer, 'Tab title #4', {}); + fireEvent(tab4, new MouseEvent('click', { bubbles: true })); + await waitFor(() => screen.findByText('CONTENT 4')); + }); // reopen the tooltip await StatefulDynamicWithOpenTooltip.play(context); @@ -273,7 +268,7 @@ export const StatefulDynamicWithSelectedAddon = { render: (args) => ( {Object.entries(panels).map(([k, v]) => ( -
+
{v.render}
))} diff --git a/code/ui/components/src/tabs/tabs.tsx b/code/ui/components/src/tabs/tabs.tsx index 454a92376d83..b5bfe93e8894 100644 --- a/code/ui/components/src/tabs/tabs.tsx +++ b/code/ui/components/src/tabs/tabs.tsx @@ -1,8 +1,9 @@ -import type { FC, MouseEvent, ReactNode } from 'react'; +import type { FC, MouseEvent, ReactElement, ReactNode } from 'react'; import React, { useMemo, Component, Fragment, memo } from 'react'; import { styled } from '@storybook/theming'; import { sanitize } from '@storybook/csf'; +import type { Addon_RenderOptions } from '@storybook/types'; import { Placeholder } from '../placeholder/placeholder'; import { TabButton } from '../bar/button'; import { FlexBar } from '../bar/bar'; @@ -113,7 +114,10 @@ export const TabWrapper: FC = ({ active, render, children }) => export const panelProps = {}; export interface TabsProps { - children?: FuncChildren[] | ReactNode; + children?: ReactElement<{ + children: FC; + title: ReactNode | FC; + }>[]; id?: string; tools?: ReactNode; selected?: string; @@ -138,9 +142,13 @@ export const Tabs: FC = memo( id: htmlId, menuName, }) => { - const list = useMemo( - () => childrenToList(children, selected), - [children, selected] + const idList = childrenToList(children).map((i) => i.id); + const primeList = useMemo(() => childrenToList(children), [...idList]); + + const list = useMemo( + () => + primeList.map((i, index) => ({ ...i, active: selected ? i.id === selected : index === 0 })), + [selected, primeList] ); const { visibleList, tabBarRef, tabRefs, AddonTab } = useList(list); @@ -169,7 +177,7 @@ export const Tabs: FC = memo( }} role="tab" > - {title} + {typeof title === 'function' ? : title} </TabButton> ); })} @@ -178,7 +186,9 @@ export const Tabs: FC<TabsProps> = memo( {tools} </FlexBar> <Content id="panel-tab-content" bordered={bordered} absolute={absolute}> - {list.map(({ id, active, render }) => render({ key: id, active }))} + {list.map(({ id, active, render }) => { + return React.createElement(render, { key: id, active }, null); + })} </Content> </Wrapper> ) : ( @@ -199,10 +209,8 @@ Tabs.defaultProps = { menuName: 'Tabs', }; -type FuncChildren = ({ active }: { active: boolean }) => JSX.Element; - export interface TabsStateProps { - children: FuncChildren[] | ReactNode; + children: TabsProps['children']; initial: string; absolute: boolean; bordered: boolean; diff --git a/code/ui/manager/src/components/panel/panel.stories.tsx b/code/ui/manager/src/components/panel/panel.stories.tsx index 75a66c60942d..1b31eacd21e7 100644 --- a/code/ui/manager/src/components/panel/panel.stories.tsx +++ b/code/ui/manager/src/components/panel/panel.stories.tsx @@ -1,5 +1,7 @@ -import React, { useState } from 'react'; +import React, { useCallback, useRef, useState } from 'react'; import { action } from '@storybook/addon-actions'; +import { Badge, Icons, Spaced } from '@storybook/components'; +import { Addon_TypesEnum } from '@storybook/types'; import Panel from './panel'; import { panels, shortcuts } from '../layout/app.mockdata'; @@ -25,6 +27,119 @@ export const Default = () => { ); }; +export const JSXTitles = () => { + const [selectedPanel, setSelectedPanel] = useState('function-string'); + return ( + <Panel + absolute={false} + panels={{ + 'function-string': { + type: Addon_TypesEnum.PANEL, + title: () => 'Test 1', + render: ({ active, key }) => + active ? ( + <div id="test1" key={key}> + TEST as string + </div> + ) : null, + }, + 'function-jsx': { + type: Addon_TypesEnum.PANEL, + title: () => ( + <div> + <Spaced col={1}> + <div style={{ display: 'inline-block', verticalAlign: 'middle' }}>Test 1</div> + <Badge status="critical">4</Badge> + </Spaced> + </div> + ), + render: ({ active, key }) => + active ? ( + <div id="test1" key={key}> + TEST with label + </div> + ) : null, + }, + 'function-jsx-icon': { + type: Addon_TypesEnum.PANEL, + title: () => ( + <div> + <Spaced col={1}> + <div style={{ display: 'inline-block', verticalAlign: 'middle' }}>Alert!</div> + <Icons icon="bell" /> + </Spaced> + </div> + ), + render: ({ active, key }) => + active ? ( + <div id="test1" key={key}> + TEST with label + </div> + ) : null, + }, + 'function-jsx-state': { + type: Addon_TypesEnum.PANEL, + title: () => { + const MAX = 10; + const [count, setCount] = useState(0); + const timer = useRef(null); + + const startTimer = useCallback((event) => { + event.stopPropagation(); + if (timer.current) { + return; + } + timer.current = setInterval(() => { + setCount((c) => { + if (c === MAX) { + clearInterval(timer.current); + timer.current = null; + return c; + } + return c + 1; + }); + }, 1000); + }, []); + const stopTimer = useCallback((event) => { + event.stopPropagation(); + if (timer.current) { + clearInterval(timer.current); + timer.current = null; + } + }, []); + + return ( + <div + onMouseEnter={startTimer} + onMouseLeave={stopTimer} + onBlur={stopTimer} + tabIndex={-1} + > + <Spaced col={1}> + <div style={{ display: 'inline-block' }}>Hover over me!</div> + {count ? ( + <Badge status={count > 8 ? 'critical' : 'warning'}>{count}</Badge> + ) : null} + </Spaced> + </div> + ); + }, + render: ({ active, key }) => { + return active ? ( + <div id="test1" key={key}> + TEST with timer + </div> + ) : null; + }, + }, + }} + actions={{ onSelect: setSelectedPanel, toggleVisibility, togglePosition }} + selectedPanel={selectedPanel} + shortcuts={shortcuts} + /> + ); +}; + export const NoPanels = () => ( <Panel panels={{}} diff --git a/code/ui/manager/src/components/panel/panel.tsx b/code/ui/manager/src/components/panel/panel.tsx index 6519ee9d9219..90496e38b7a6 100644 --- a/code/ui/manager/src/components/panel/panel.tsx +++ b/code/ui/manager/src/components/panel/panel.tsx @@ -1,20 +1,16 @@ -import type { ReactElement } from 'react'; import React, { Component, Fragment } from 'react'; import { Tabs, Icons, IconButton } from '@storybook/components'; import type { State } from '@storybook/manager-api'; import { shortcutToHumanString } from '@storybook/manager-api'; +import type { Addon_Type } from '@storybook/types'; import useMediaQuery from '../hooks/useMedia'; export interface SafeTabProps { - title: (() => string) | string; + title: Addon_Type['title']; id: string; - children: ReactElement; + children: Addon_Type['render']; } -const SafeTabContent = React.memo<SafeTabProps>(function SafeTabContent({ children }) { - return children; -}); - class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { constructor(props: SafeTabProps) { super(props); @@ -29,22 +25,18 @@ class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { render() { const { hasError } = this.state; - const { children, title, id } = this.props; + const { children } = this.props; if (hasError) { return <h1>Something went wrong.</h1>; } - return ( - <SafeTabContent id={id} title={title}> - {children} - </SafeTabContent> - ); + return children; } } const AddonPanel = React.memo<{ selectedPanel?: string; actions: { onSelect: (id: string) => void } & Record<string, any>; - panels: Record<string, any>; + panels: Record<string, Addon_Type>; shortcuts: State['shortcuts']; panelPosition?: 'bottom' | 'right'; absolute?: boolean; @@ -89,7 +81,7 @@ const AddonPanel = React.memo<{ id="storybook-panel-root" > {Object.entries(panels).map(([k, v]) => ( - <SafeTab key={k} id={k} title={typeof v.title === 'function' ? v.title() : v.title}> + <SafeTab key={k} id={k} title={typeof v.title === 'function' ? <v.title /> : v.title}> {v.render} </SafeTab> ))} From 7cafd2fe7b386453ea7277cd3ae1b5780649efd1 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 21:59:48 +0200 Subject: [PATCH 002/135] introduce Addon_BaseType continue adding type property to addons --- .../components/preview/preview.mockdata.tsx | 39 ++++++++++--------- .../src/components/preview/preview.tsx | 25 +++++------- .../src/components/preview/toolbar.tsx | 38 +++++++++++------- .../src/components/preview/tools/addons.tsx | 8 ++-- .../src/components/preview/tools/copy.tsx | 8 ++-- .../src/components/preview/tools/eject.tsx | 8 ++-- .../src/components/preview/tools/menu.tsx | 8 ++-- .../src/components/preview/tools/remount.tsx | 8 ++-- .../src/components/preview/tools/zoom.tsx | 6 ++- 9 files changed, 82 insertions(+), 66 deletions(-) diff --git a/code/ui/manager/src/components/preview/preview.mockdata.tsx b/code/ui/manager/src/components/preview/preview.mockdata.tsx index f466b170deec..3129c92bbc72 100644 --- a/code/ui/manager/src/components/preview/preview.mockdata.tsx +++ b/code/ui/manager/src/components/preview/preview.mockdata.tsx @@ -1,28 +1,29 @@ import { types } from '@storybook/manager-api'; -import type { API, State, Addon } from '@storybook/manager-api'; +import type { API, State } from '@storybook/manager-api'; +import type { Addon_BaseType, Addon_Collection } from '@storybook/types'; import type { PreviewProps } from './utils/types'; +const addonNotes: Addon_BaseType = { + id: 'notes', + type: types.TAB, + title: 'Notes', + route: ({ storyId }) => `/info/${storyId}`, + match: ({ viewMode }) => viewMode === 'info', + render: () => null, +}; + +const mockAPI: Partial<API> = { + on: (a, b) => () => {}, + emit: () => {}, + off: () => {}, + getElements: (type) => + type === types.TAB ? ({ notes: addonNotes } as Addon_Collection<any>) : {}, +}; + export const previewProps: PreviewProps = { id: 'string', storyId: 'story--id', - api: { - on: () => {}, - emit: () => {}, - off: () => {}, - getElements: ((type) => - type === types.TAB - ? [ - { - id: 'notes', - type: types.TAB, - title: 'Notes', - route: ({ storyId }) => `/info/${storyId}`, - match: ({ viewMode }) => viewMode === 'info', - render: () => null, - } as Addon, - ] - : []) as API['getElements'], - } as any as API, + api: mockAPI as API, entry: { tags: [], type: 'story', diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index 9d01ed28eaf5..ad4c0b634fed 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -2,15 +2,8 @@ import React, { Fragment, useMemo, useEffect, useRef, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { global } from '@storybook/global'; -import { - type API, - Consumer, - type Combo, - merge, - addons, - types, - type Addon, -} from '@storybook/manager-api'; +import { type API, Consumer, type Combo, merge, addons, types } from '@storybook/manager-api'; +import { type Addon_BaseType } from '@storybook/types'; import { PREVIEW_BUILDER_PROGRESS, SET_CURRENT_STORY } from '@storybook/core-events'; import { Loader } from '@storybook/components'; @@ -26,8 +19,9 @@ import type { PreviewProps } from './utils/types'; const { FEATURES } = global; -const getWrappers = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.PREVIEW)); -const getTabs = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.TAB)); +const getWrappers = (getFn: API['getElements']) => + Object.values(getFn<Addon_BaseType>(types.PREVIEW)); +const getTabs = (getFn: API['getElements']) => Object.values(getFn<Addon_BaseType>(types.TAB)); const canvasMapper = ({ state, api }: Combo) => ({ storyId: state.storyId, @@ -42,8 +36,9 @@ const canvasMapper = ({ state, api }: Combo) => ({ active: !!(state.viewMode && state.viewMode.match(/^(story|docs)$/)), }); -const createCanvas = (id: string, baseUrl = 'iframe.html', withLoader = true): Addon => ({ +const createCanvas = (id: string, baseUrl = 'iframe.html', withLoader = true): Addon_BaseType => ({ id: 'canvas', + type: types.PREVIEW, title: 'Canvas', route: ({ storyId, refId }) => (refId ? `/story/${refId}_${storyId}` : `/story/${storyId}`), match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), @@ -228,7 +223,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { export { Preview }; -function filterTabs(panels: Addon[], parameters: Record<string, any>) { +function filterTabs(panels: Addon_BaseType[], parameters: Record<string, any>) { const { previewTabs } = addons.getConfig(); const parametersTabs = parameters ? parameters.previewTabs : undefined; @@ -245,7 +240,7 @@ function filterTabs(panels: Addon[], parameters: Record<string, any>) { const t = arrTabs.find((tab) => tab.id === panel.id); return t === undefined || t.id === 'canvas' || !t.hidden; }) - .map((panel, index) => ({ ...panel, index } as Addon)) + .map((panel, index) => ({ ...panel, index } as Addon_BaseType)) .sort((p1, p2) => { /* eslint-disable @typescript-eslint/naming-convention */ const tab_1 = arrTabs.find((tab) => tab.id === p1.id); @@ -265,7 +260,7 @@ function filterTabs(panels: Addon[], parameters: Record<string, any>) { title: t.title || panel.title, disabled: t.disabled, hidden: t.hidden, - } as Addon; + } as Addon_BaseType; } return panel; }); diff --git a/code/ui/manager/src/components/preview/toolbar.tsx b/code/ui/manager/src/components/preview/toolbar.tsx index 454ee5d1f4f0..c4425bcc982c 100644 --- a/code/ui/manager/src/components/preview/toolbar.tsx +++ b/code/ui/manager/src/components/preview/toolbar.tsx @@ -13,11 +13,11 @@ import { merge, type LeafEntry, addons, - type Addon, types, } from '@storybook/manager-api'; import { Location, type RenderData } from '@storybook/router'; +import type { Addon_BaseType } from '@storybook/types'; import { zoomTool } from './tools/zoom'; import * as S from './utils/components'; @@ -29,10 +29,11 @@ import { menuTool } from './tools/menu'; import { addonsTool } from './tools/addons'; import { remountTool } from './tools/remount'; -export const getTools = (getFn: API['getElements']) => Object.values(getFn<Addon>(types.TOOL)); +export const getTools = (getFn: API['getElements']) => + Object.values(getFn<Addon_BaseType>(types.TOOL)); export const getToolsExtra = (getFn: API['getElements']) => - Object.values(getFn<Addon>(types.TOOLEXTRA)); + Object.values(getFn<Addon_BaseType>(types.TOOLEXTRA)); const Bar: FunctionComponent<{ shown: boolean } & Record<string, any>> = ({ shown, ...props }) => ( <FlexBar {...props} /> @@ -59,9 +60,10 @@ const fullScreenMapper = ({ api, state }: Combo) => ({ singleStory: state.singleStory, }); -export const fullScreenTool: Addon = { +export const fullScreenTool: Addon_BaseType = { title: 'fullscreen', id: 'fullscreen', + type: types.TOOL, match: (p) => ['story', 'docs'].includes(p.viewMode), render: () => ( <Consumer filter={fullScreenMapper}> @@ -88,9 +90,10 @@ const tabsMapper = ({ state }: Combo) => ({ refId: state.refId, }); -export const createTabsTool = (tabs: Addon[]): Addon => ({ +export const createTabsTool = (tabs: Addon_BaseType[]): Addon_BaseType => ({ title: 'title', id: 'title', + type: types.TOOL, render: () => ( <Consumer filter={tabsMapper}> {(rp) => ( @@ -117,12 +120,17 @@ export const createTabsTool = (tabs: Addon[]): Addon => ({ ), }); -export const defaultTools: Addon[] = [remountTool, zoomTool]; -export const defaultToolsExtra: Addon[] = [addonsTool, fullScreenTool, ejectTool, copyTool]; +export const defaultTools: Addon_BaseType[] = [remountTool, zoomTool]; +export const defaultToolsExtra: Addon_BaseType[] = [ + addonsTool, + fullScreenTool, + ejectTool, + copyTool, +]; const useTools = ( getElements: API['getElements'], - tabs: Addon[], + tabs: Addon_BaseType[], viewMode: PreviewProps['viewMode'], entry: PreviewProps['entry'], location: PreviewProps['location'], @@ -154,7 +162,7 @@ const useTools = ( export interface ToolData { isShown: boolean; - tabs: Addon[]; + tabs: Addon_BaseType[]; api: API; entry: LeafEntry; } @@ -180,7 +188,7 @@ export const ToolbarComp = React.memo<ToolData>(function ToolbarComp(props) { ); }); -export const Tools = React.memo<{ list: Addon[] }>(function Tools({ list }) { +export const Tools = React.memo<{ list: Addon_BaseType[] }>(function Tools({ list }) { return ( <> {list.filter(Boolean).map(({ render: Render, id, ...t }, index) => ( @@ -191,7 +199,7 @@ export const Tools = React.memo<{ list: Addon[] }>(function Tools({ list }) { ); }); -function toolbarItemHasBeenExcluded(item: Partial<Addon>, entry: LeafEntry) { +function toolbarItemHasBeenExcluded(item: Partial<Addon_BaseType>, entry: LeafEntry) { const parameters = entry.type === 'story' && entry.prepared ? entry.parameters : {}; const toolbarItemsFromStoryParameters = 'toolbar' in parameters ? parameters.toolbar : undefined; const { toolbar: toolbarItemsFromAddonsConfig } = addons.getConfig(); @@ -202,9 +210,9 @@ function toolbarItemHasBeenExcluded(item: Partial<Addon>, entry: LeafEntry) { } export function filterTools( - tools: Addon[], - toolsExtra: Addon[], - tabs: Addon[], + tools: Addon_BaseType[], + toolsExtra: Addon_BaseType[], + tabs: Addon_BaseType[], { viewMode, entry, @@ -224,7 +232,7 @@ export function filterTools( ]; const toolsRight = [...toolsExtra]; - const filter = (item: Partial<Addon>) => + const filter = (item: Partial<Addon_BaseType>) => item && (!item.match || item.match({ diff --git a/code/ui/manager/src/components/preview/tools/addons.tsx b/code/ui/manager/src/components/preview/tools/addons.tsx index 9fc35f6de659..53fe821ae4af 100644 --- a/code/ui/manager/src/components/preview/tools/addons.tsx +++ b/code/ui/manager/src/components/preview/tools/addons.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const menuMapper = ({ api, state }: Combo) => ({ isVisible: state.layout.showPanel, @@ -10,9 +11,10 @@ const menuMapper = ({ api, state }: Combo) => ({ toggle: () => api.togglePanel(), }); -export const addonsTool: Addon = { +export const addonsTool: Addon_BaseType = { title: 'addons', id: 'addons', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/copy.tsx b/code/ui/manager/src/components/preview/tools/copy.tsx index 857f8a82761e..0b0084aae857 100644 --- a/code/ui/manager/src/components/preview/tools/copy.tsx +++ b/code/ui/manager/src/components/preview/tools/copy.tsx @@ -2,8 +2,9 @@ import { global } from '@storybook/global'; import React from 'react'; import copy from 'copy-to-clipboard'; import { getStoryHref, IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const { PREVIEW_URL, document } = global; @@ -22,9 +23,10 @@ const copyMapper = ({ state }: Combo) => { }; }; -export const copyTool: Addon = { +export const copyTool: Addon_BaseType = { title: 'copy', id: 'copy', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={copyMapper}> diff --git a/code/ui/manager/src/components/preview/tools/eject.tsx b/code/ui/manager/src/components/preview/tools/eject.tsx index 6a08419f3077..65688038b859 100644 --- a/code/ui/manager/src/components/preview/tools/eject.tsx +++ b/code/ui/manager/src/components/preview/tools/eject.tsx @@ -1,8 +1,9 @@ import { global } from '@storybook/global'; import React from 'react'; import { getStoryHref, IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const { PREVIEW_URL } = global; @@ -18,9 +19,10 @@ const ejectMapper = ({ state }: Combo) => { }; }; -export const ejectTool: Addon = { +export const ejectTool: Addon_BaseType = { title: 'eject', id: 'eject', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={ejectMapper}> diff --git a/code/ui/manager/src/components/preview/tools/menu.tsx b/code/ui/manager/src/components/preview/tools/menu.tsx index 6edb1366f77d..8512e9e16abc 100644 --- a/code/ui/manager/src/components/preview/tools/menu.tsx +++ b/code/ui/manager/src/components/preview/tools/menu.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { IconButton, Icons, Separator } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; const menuMapper = ({ api, state }: Combo) => ({ isVisible: state.layout.showNav, @@ -9,9 +10,10 @@ const menuMapper = ({ api, state }: Combo) => ({ toggle: () => api.toggleNav(), }); -export const menuTool: Addon = { +export const menuTool: Addon_BaseType = { title: 'menu', id: 'menu', + type: types.TOOL, match: ({ viewMode }) => ['story', 'docs'].includes(viewMode), render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/remount.tsx b/code/ui/manager/src/components/preview/tools/remount.tsx index b095c6f431c1..6bf4c1f7553e 100644 --- a/code/ui/manager/src/components/preview/tools/remount.tsx +++ b/code/ui/manager/src/components/preview/tools/remount.tsx @@ -1,10 +1,11 @@ import type { ComponentProps } from 'react'; import React, { useState } from 'react'; import { IconButton, Icons } from '@storybook/components'; -import { Consumer } from '@storybook/manager-api'; -import type { Addon, Combo } from '@storybook/manager-api'; +import { Consumer, types } from '@storybook/manager-api'; +import type { Combo } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { FORCE_REMOUNT } from '@storybook/core-events'; +import type { Addon_BaseType } from '@storybook/types'; interface AnimatedButtonProps { animating?: boolean; @@ -28,9 +29,10 @@ const menuMapper = ({ api, state }: Combo) => { }; }; -export const remountTool: Addon = { +export const remountTool: Addon_BaseType = { title: 'remount', id: 'remount', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => ( <Consumer filter={menuMapper}> diff --git a/code/ui/manager/src/components/preview/tools/zoom.tsx b/code/ui/manager/src/components/preview/tools/zoom.tsx index fe6530b96d17..84e0f72bafae 100644 --- a/code/ui/manager/src/components/preview/tools/zoom.tsx +++ b/code/ui/manager/src/components/preview/tools/zoom.tsx @@ -2,7 +2,8 @@ import type { SyntheticEvent, MouseEventHandler } from 'react'; import React, { Component, useCallback } from 'react'; import { Icons, IconButton, Separator } from '@storybook/components'; -import type { Addon } from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; +import { types } from '@storybook/manager-api'; const initialZoom = 1 as const; @@ -78,9 +79,10 @@ const ZoomWrapper = React.memo<{ set: (zoomLevel: number) => void; value: number } ); -export const zoomTool: Addon = { +export const zoomTool: Addon_BaseType = { title: 'zoom', id: 'zoom', + type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: React.memo(function ZoomToolRenderer() { return ( From e46838b1da71a808c943afa34e41a16822aa249d Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 22:46:57 +0200 Subject: [PATCH 003/135] fix mockdata by adding the type property --- code/ui/manager/src/components/layout/app.mockdata.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/ui/manager/src/components/layout/app.mockdata.tsx b/code/ui/manager/src/components/layout/app.mockdata.tsx index 48e2696d3306..40f85f51cd37 100644 --- a/code/ui/manager/src/components/layout/app.mockdata.tsx +++ b/code/ui/manager/src/components/layout/app.mockdata.tsx @@ -4,6 +4,7 @@ import React, { Component } from 'react'; import { styled } from '@storybook/theming'; import type { Addon_Collection } from '@storybook/types'; import type { State } from '@storybook/manager-api'; +import { types } from '@storybook/manager-api'; import type { SidebarProps } from '../sidebar/Sidebar'; import { Sidebar } from '../sidebar/Sidebar'; import Panel from '../panel/panel'; @@ -39,6 +40,7 @@ export const shortcuts: State['shortcuts'] = { export const panels: Addon_Collection = { test1: { + type: types.PANEL, title: 'Test 1', render: ({ active, key }) => active ? ( @@ -48,6 +50,7 @@ export const panels: Addon_Collection = { ) : null, }, test2: { + type: types.PANEL, title: 'Test 2', render: ({ active, key }) => active ? ( From 3e1637a93357e80ec67ab3cf49fdf7be4f3d0662 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 23:10:18 +0200 Subject: [PATCH 004/135] revert unintended change (bit of a sneak peak, I guess) --- code/lib/types/src/modules/addons.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 613c8080ccd4..8190a6a04a62 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -21,7 +21,7 @@ import type { } from './csf'; import type { IndexEntry } from './storyIndex'; -export type Addon_Types = Exclude<Addon_TypesEnum, Addon_TypesEnum.experimental_PAGE>; +export type Addon_Types = Addon_TypesEnum; export interface Addon_ArgType<TArg = unknown> extends InputType { defaultValue?: TArg; @@ -380,11 +380,6 @@ export enum Addon_TypesEnum { * @unstable */ PREVIEW = 'preview', - /** - * This adds pages that render instead of the canvas. - * DO NOT USE - */ - experimental_PAGE = 'main', /** * @deprecated This property does nothing, and will be removed in Storybook 8.0. From 581e422d4aba124389217a5d460845ffc16d6d5e Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 23:12:39 +0200 Subject: [PATCH 005/135] change to jsdoc over normal code-comment --- code/lib/types/src/modules/addons.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 8190a6a04a62..4d1221a66e3f 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -314,7 +314,7 @@ export type ReactJSXElement = { export type Addon_Type = Addon_BaseType; export interface Addon_BaseType { - title: MyFC | string | ReactElement | ReactNode; + title: FCWithoutChildren | string | ReactElement | ReactNode; type: Addon_Types; id?: string; route?: (routeOptions: RouterData) => string; @@ -325,9 +325,13 @@ export interface Addon_BaseType { hidden?: boolean; } -// This is a copy of FC from react/index.d.ts, but has the PropsWithChildren type removed -// this is correct and more type strict, and future compatible with React.FC in React 18+ -interface MyFC<P = {}> { +/** + * This is a copy of FC from react/index.d.ts, but has the PropsWithChildren type removed + * this is correct and more type strict, and future compatible with React.FC in React 18+ + * + * @deprecated This type is deprecated and will be removed in 8.0. (assuming the manager uses React 18 is out by then) + */ +interface FCWithoutChildren<P = {}> { (props: P, context?: any): ReactElement<any, any> | null; propTypes?: WeakValidationMap<P> | undefined; contextTypes?: ValidationMap<any> | undefined; From a45faea703d2d582f32461183ffc8e1a8e275017 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 23:40:16 +0200 Subject: [PATCH 006/135] improve types of manager api add & addPanel --- code/lib/manager-api/src/lib/addons.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index aa508b535ec1..9ec462e1eb6c 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -93,17 +93,17 @@ export class AddonStore { return this.elements[type]; }; - addPanel = (name: string, options: Addon_Type): void => { - this.add(name, { + addPanel = (id: string, options: Omit<Addon_Type, 'type' | 'id'>): void => { + this.add(id, { type: Addon_TypesEnum.PANEL, ...options, }); }; - add = (name: string, addon: Addon_Type) => { + add = (id: string, addon: Omit<Addon_Type, 'id'>) => { const { type } = addon; const collection = this.getElements(type); - collection[name] = { id: name, ...addon }; + collection[id] = { id, ...addon }; }; setConfig = (value: Addon_Config) => { From 89726497a99cb9f5ed43adf2ca6329eec8969c3b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 3 Jul 2023 23:51:42 +0200 Subject: [PATCH 007/135] improve api for manager addon registration, deprecate the extra `id` property, remove use in monorepo --- code/addons/a11y/src/manager.tsx | 1 - code/addons/actions/src/manager.tsx | 1 - code/addons/backgrounds/src/manager.tsx | 1 - code/addons/controls/src/manager.tsx | 1 - code/addons/jest/src/manager.tsx | 1 - code/addons/measure/src/manager.tsx | 1 - code/addons/outline/src/manager.tsx | 1 - code/addons/storysource/src/manager.tsx | 1 - code/addons/toolbars/src/manager.tsx | 1 - code/addons/viewport/src/manager.tsx | 1 - code/lib/manager-api/src/lib/addons.ts | 14 ++++++++++++-- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index 910e3d10050b..718766ab07b8 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -22,7 +22,6 @@ addons.register(ADDON_ID, (api) => { const totalNb = violationsNb + incompleteNb; return totalNb !== 0 ? `Accessibility (${totalNb})` : 'Accessibility'; }, - id: 'accessibility', type: types.PANEL, render: ({ active = true, key }) => ( <A11yContextProvider key={key} active={active}> diff --git a/code/addons/actions/src/manager.tsx b/code/addons/actions/src/manager.tsx index 38e69e4b11ac..e7b81047231b 100644 --- a/code/addons/actions/src/manager.tsx +++ b/code/addons/actions/src/manager.tsx @@ -42,7 +42,6 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: <Title count={countRef} />, - id: 'actions', type: types.PANEL, render: ({ active, key }) => <ActionLogger key={key} api={api} active={!!active} />, paramKey: PARAM_KEY, diff --git a/code/addons/backgrounds/src/manager.tsx b/code/addons/backgrounds/src/manager.tsx index 4cabc6011c84..ecd36b0bb618 100644 --- a/code/addons/backgrounds/src/manager.tsx +++ b/code/addons/backgrounds/src/manager.tsx @@ -8,7 +8,6 @@ import { GridSelector } from './containers/GridSelector'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'Backgrounds', - id: 'backgrounds', type: types.TOOL, match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), render: () => ( diff --git a/code/addons/controls/src/manager.tsx b/code/addons/controls/src/manager.tsx index 6558aa6eda0f..eee2ac03e7c5 100644 --- a/code/addons/controls/src/manager.tsx +++ b/code/addons/controls/src/manager.tsx @@ -17,7 +17,6 @@ function Title() { addons.register(ADDON_ID, (api) => { addons.add(ADDON_ID, { title: <Title />, - id: 'controls', type: types.PANEL, paramKey: PARAM_KEY, render: ({ key, active }) => { diff --git a/code/addons/jest/src/manager.tsx b/code/addons/jest/src/manager.tsx index 82bcee71dc4f..2c774b739b88 100644 --- a/code/addons/jest/src/manager.tsx +++ b/code/addons/jest/src/manager.tsx @@ -8,7 +8,6 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: 'Tests', type: types.PANEL, - id: 'tests', render: ({ active, key }) => <Panel key={key} api={api} active={active} />, paramKey: PARAM_KEY, }); diff --git a/code/addons/measure/src/manager.tsx b/code/addons/measure/src/manager.tsx index f65075617ef3..53bca4d0b716 100644 --- a/code/addons/measure/src/manager.tsx +++ b/code/addons/measure/src/manager.tsx @@ -7,7 +7,6 @@ import { Tool } from './Tool'; addons.register(ADDON_ID, () => { addons.add(TOOL_ID, { type: types.TOOL, - id: 'measure', title: 'Measure', match: ({ viewMode }) => viewMode === 'story', render: () => <Tool />, diff --git a/code/addons/outline/src/manager.tsx b/code/addons/outline/src/manager.tsx index d1852360356e..384ea24c07c6 100644 --- a/code/addons/outline/src/manager.tsx +++ b/code/addons/outline/src/manager.tsx @@ -7,7 +7,6 @@ import { OutlineSelector } from './OutlineSelector'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'Outline', - id: 'outline', type: types.TOOL, match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), render: () => <OutlineSelector />, diff --git a/code/addons/storysource/src/manager.tsx b/code/addons/storysource/src/manager.tsx index 8663612d68f2..0322de32d8d5 100644 --- a/code/addons/storysource/src/manager.tsx +++ b/code/addons/storysource/src/manager.tsx @@ -8,7 +8,6 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { type: types.PANEL, title: 'Code', - id: 'code', render: ({ active, key }) => (active ? <StoryPanel key={key} api={api} /> : null), paramKey: 'storysource', }); diff --git a/code/addons/toolbars/src/manager.tsx b/code/addons/toolbars/src/manager.tsx index adfc9956bd7a..c87d3fbf2d80 100644 --- a/code/addons/toolbars/src/manager.tsx +++ b/code/addons/toolbars/src/manager.tsx @@ -6,7 +6,6 @@ import { ADDON_ID } from './constants'; addons.register(ADDON_ID, () => addons.add(ADDON_ID, { title: ADDON_ID, - id: 'toolbar', type: types.TOOL, match: () => true, render: () => <ToolbarManager />, diff --git a/code/addons/viewport/src/manager.tsx b/code/addons/viewport/src/manager.tsx index 602cd708a4ea..e42e3fba40e1 100644 --- a/code/addons/viewport/src/manager.tsx +++ b/code/addons/viewport/src/manager.tsx @@ -8,7 +8,6 @@ import { ViewportTool } from './Tool'; addons.register(ADDON_ID, () => { addons.add(ADDON_ID, { title: 'viewport / media-queries', - id: 'viewport', type: types.TOOL, match: ({ viewMode }) => viewMode === 'story', render: () => <ViewportTool />, diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index 9ec462e1eb6c..647cbdb19dd7 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -21,6 +21,13 @@ export function isSupportedType(type: Addon_Types): boolean { return !!Object.values(Addon_TypesEnum).find((typeVal) => typeVal === type); } +interface DeprecatedAddonWithId { + /** + * @deprecated will be removed in 8.0, when registering addons, please use the addon id as the first argument + */ + id?: string; +} + export class AddonStore { constructor() { this.promise = new Promise((res) => { @@ -93,14 +100,17 @@ export class AddonStore { return this.elements[type]; }; - addPanel = (id: string, options: Omit<Addon_Type, 'type' | 'id'>): void => { + addPanel = ( + id: string, + options: Omit<Addon_Type, 'type' | 'id'> & DeprecatedAddonWithId + ): void => { this.add(id, { type: Addon_TypesEnum.PANEL, ...options, }); }; - add = (id: string, addon: Omit<Addon_Type, 'id'>) => { + add = (id: string, addon: Omit<Addon_Type, 'id'> & DeprecatedAddonWithId) => { const { type } = addon; const collection = this.getElements(type); collection[id] = { id, ...addon }; From ad6103a3c054ed55ad986816406ac6cf582f0efd Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 09:31:33 +0200 Subject: [PATCH 008/135] make router more powerful by supporting regex in the Route component, split into separate types & use overloads for improved type-safety --- code/lib/router/src/router.tsx | 94 +++++++++++++++++++++++++--------- code/lib/router/src/utils.ts | 5 +- 2 files changed, 73 insertions(+), 26 deletions(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 4005dc4b7804..ee1e8def198d 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -1,6 +1,6 @@ import { global } from '@storybook/global'; import React, { useCallback } from 'react'; -import type { ReactNode } from 'react'; +import type { ReactNode, ReactElement } from 'react'; import * as R from 'react-router-dom'; import { ToggleVisibility } from './visibility'; @@ -16,18 +16,37 @@ interface MatchingData { interface LocationProps { children: (renderData: RenderData) => any; } -interface MatchProps { + +interface MatchPropsStartsWith { path: string; - startsWith: boolean; + startsWith: true; + children: (matchingData: MatchingData) => ReactNode; +} +interface MatchPropsDefault { + path: string | RegExp; + startsWith: false; children: (matchingData: MatchingData) => ReactNode; } -interface RouteProps { + +interface RoutePropsStartsWith { path: string; - startsWith?: boolean; + startsWith: true; + hideOnly?: boolean; + children: ReactNode; +} +interface RoutePropsDefault { + path: string | RegExp; + startsWith?: false; hideOnly?: boolean; children: ReactNode; } +const isRoutePropsDefault = ( + props: RoutePropsDefault | RoutePropsStartsWith +): props is RoutePropsDefault => { + return !props.startsWith; +}; + const getBase = () => `${document.location.pathname}?`; // const queryNavigate: NavigateFn = (to: string | number, options?: NavigateOptions<{}>) => @@ -86,30 +105,55 @@ Location.displayName = 'QueryLocation'; // A render-prop component for rendering when a certain path is hit. // It's immensely similar to `Location` but it receives an addition data property: `match`. // match has a truthy value when the path is hit. -export const Match = ({ children, path: targetPath, startsWith = false }: MatchProps) => ( - <Location> - {({ path: urlPath, ...rest }) => - children({ - match: getMatch(urlPath, targetPath, startsWith), - ...rest, - }) - } - </Location> -); +function Match(props: MatchPropsStartsWith): ReactElement; +function Match(props: MatchPropsDefault): ReactElement; +function Match({ + children, + path: targetPath, + startsWith = false, +}: MatchPropsStartsWith | MatchPropsDefault) { + return ( + <Location> + {({ path: urlPath, ...rest }) => + children({ + match: getMatch(urlPath, targetPath, startsWith), + ...rest, + }) + } + </Location> + ); +} Match.displayName = 'QueryMatch'; // A component to conditionally render children based on matching a target path -export const Route = ({ path, children, startsWith = false, hideOnly = false }: RouteProps) => ( - <Match path={path} startsWith={startsWith}> - {({ match }) => { - if (hideOnly) { - return <ToggleVisibility hidden={!match}>{children}</ToggleVisibility>; - } - return match ? children : null; - }} - </Match> -); +function Route(props: RoutePropsDefault): ReactElement; +function Route(props: RoutePropsStartsWith): ReactElement; +function Route(input: RoutePropsDefault | RoutePropsStartsWith) { + let propsA: RoutePropsStartsWith = input as RoutePropsStartsWith; + let propsB: RoutePropsDefault = input as RoutePropsDefault; + + if (isRoutePropsDefault(input)) { + propsB = { ...input }; + propsB.startsWith = false; + } else { + propsA = input; + } + + const { children, hideOnly = false } = propsA || propsB; + return ( + <Match {...(propsA || propsB)}> + {({ match }) => { + if (hideOnly) { + return <ToggleVisibility hidden={!match}>{children}</ToggleVisibility>; + } + return match ? children : null; + }} + </Match> + ); +} Route.displayName = 'Route'; +export { Route, Match }; + export const LocationProvider: typeof R.BrowserRouter = (...args) => R.BrowserRouter(...args); export const BaseLocationProvider: typeof R.Router = (...args) => R.Router(...args); diff --git a/code/lib/router/src/utils.ts b/code/lib/router/src/utils.ts index ab5941cab4ca..94d1d6860538 100644 --- a/code/lib/router/src/utils.ts +++ b/code/lib/router/src/utils.ts @@ -158,8 +158,11 @@ export const stringifyQuery = (query: Query) => type Match = { path: string }; export const getMatch = memoize(1000)( - (current: string, target: string, startsWith = true): Match | null => { + (current: string, target: string | RegExp, startsWith = true): Match | null => { if (startsWith) { + if (typeof target !== 'string') { + throw new Error('startsWith only works with string targets'); + } const startsWithTarget = current && current.startsWith(target); if (startsWithTarget) { return { path: current }; From 8f74991855dcf0c21959bcaeb73934ea580857ed Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 11:36:50 +0200 Subject: [PATCH 009/135] Improve code Co-authored-by: Valentin Palkovic <valentin@chromatic.com> --- code/lib/router/src/router.tsx | 57 ++++++++++++++++------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index ee1e8def198d..58a253a96eff 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -1,6 +1,6 @@ import { global } from '@storybook/global'; import React, { useCallback } from 'react'; -import type { ReactNode, ReactElement } from 'react'; +import type { ReactNode, ReactElement, ComponentProps } from 'react'; import * as R from 'react-router-dom'; import { ToggleVisibility } from './visibility'; @@ -19,39 +19,30 @@ interface LocationProps { interface MatchPropsStartsWith { path: string; - startsWith: true; + startsWith: boolean; children: (matchingData: MatchingData) => ReactNode; } interface MatchPropsDefault { - path: string | RegExp; + path: RegExp; startsWith: false; children: (matchingData: MatchingData) => ReactNode; } interface RoutePropsStartsWith { path: string; - startsWith: true; + startsWith: boolean; hideOnly?: boolean; children: ReactNode; } interface RoutePropsDefault { - path: string | RegExp; + path: RegExp; startsWith?: false; hideOnly?: boolean; children: ReactNode; } -const isRoutePropsDefault = ( - props: RoutePropsDefault | RoutePropsStartsWith -): props is RoutePropsDefault => { - return !props.startsWith; -}; - const getBase = () => `${document.location.pathname}?`; -// const queryNavigate: NavigateFn = (to: string | number, options?: NavigateOptions<{}>) => -// typeof to === 'number' ? navigate(to) : navigate(`${getBase()}path=${to}`, options); - export const useNavigate = () => { const navigate = R.useNavigate(); @@ -72,7 +63,9 @@ export const useNavigate = () => { }, []); }; -// A component that will navigate to a new location/path when clicked +/** + * A component that will navigate to a new location/path when clicked + */ export const Link = ({ to, children, ...rest }: LinkProps) => ( <R.Link to={`${getBase()}path=${to}`} {...rest}> {children} @@ -80,8 +73,10 @@ export const Link = ({ to, children, ...rest }: LinkProps) => ( ); Link.displayName = 'QueryLink'; -// A render-prop component where children is called with a location -// and will be called whenever it changes when it changes +/** + * A render-prop component where children is called with a location + * and will be called whenever it changes when it changes + */ export const Location = ({ children }: LocationProps) => { const location = R.useLocation(); const { path, singleStory } = queryFromString(location.search); @@ -102,9 +97,11 @@ export const Location = ({ children }: LocationProps) => { }; Location.displayName = 'QueryLocation'; -// A render-prop component for rendering when a certain path is hit. -// It's immensely similar to `Location` but it receives an addition data property: `match`. -// match has a truthy value when the path is hit. +/** + * A render-prop component for rendering when a certain path is hit. + * It's immensely similar to `Location` but it receives an addition data property: `match`. + * match has a truthy value when the path is hit. + */ function Match(props: MatchPropsStartsWith): ReactElement; function Match(props: MatchPropsDefault): ReactElement; function Match({ @@ -125,23 +122,21 @@ function Match({ } Match.displayName = 'QueryMatch'; -// A component to conditionally render children based on matching a target path +/** + * A component to conditionally render children based on matching a target path + */ function Route(props: RoutePropsDefault): ReactElement; function Route(props: RoutePropsStartsWith): ReactElement; function Route(input: RoutePropsDefault | RoutePropsStartsWith) { - let propsA: RoutePropsStartsWith = input as RoutePropsStartsWith; - let propsB: RoutePropsDefault = input as RoutePropsDefault; - - if (isRoutePropsDefault(input)) { - propsB = { ...input }; - propsB.startsWith = false; - } else { - propsA = input; + const { children, hideOnly, ...rest } = input; + if (rest.startsWith === undefined) { + rest.startsWith = false; } - const { children, hideOnly = false } = propsA || propsB; + const matchProps = rest as Omit<ComponentProps<typeof Match>, 'children'>; + return ( - <Match {...(propsA || propsB)}> + <Match {...matchProps}> {({ match }) => { if (hideOnly) { return <ToggleVisibility hidden={!match}>{children}</ToggleVisibility>; From 0a1e4717a3b7dcf232f07cab3fe438139bb3c473 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 11:48:42 +0200 Subject: [PATCH 010/135] improve interactions: make use of the title being a FC and share state via useAddonState --- code/addons/interactions/src/Panel.tsx | 181 +++++++++++------- .../src/components/InteractionsPanel.tsx | 120 ++++++------ .../interactions/src/components/Subnav.tsx | 13 +- code/addons/interactions/src/manager.tsx | 43 ++++- code/e2e-tests/addon-interactions.spec.ts | 8 +- 5 files changed, 211 insertions(+), 154 deletions(-) diff --git a/code/addons/interactions/src/Panel.tsx b/code/addons/interactions/src/Panel.tsx index a6cdcba755c2..0bf1111fca01 100644 --- a/code/addons/interactions/src/Panel.tsx +++ b/code/addons/interactions/src/Panel.tsx @@ -1,6 +1,7 @@ import { global } from '@storybook/global'; -import * as React from 'react'; -import { useChannel, useParameter } from '@storybook/manager-api'; +import type { Dispatch, SetStateAction } from 'react'; +import React, { Fragment, memo, useEffect, useMemo, useRef, useState } from 'react'; +import { useAddonState, useChannel, useParameter } from '@storybook/manager-api'; import { FORCE_REMOUNT, IGNORED_EXCEPTION, @@ -8,17 +9,10 @@ import { STORY_THREW_EXCEPTION, PLAY_FUNCTION_THREW_EXCEPTION, } from '@storybook/core-events'; -import { - EVENTS, - type Call, - CallStates, - type ControlStates, - type LogItem, -} from '@storybook/instrumenter'; - -import type { StoryId } from '@storybook/types'; +import { EVENTS, type Call, CallStates, type LogItem } from '@storybook/instrumenter'; + import { InteractionsPanel } from './components/InteractionsPanel'; -import { TabIcon, TabStatus } from './components/TabStatus'; +import { ADDON_ID } from './constants'; interface Interaction extends Call { status: Call['status']; @@ -45,15 +39,18 @@ export const getInteractions = ({ log: LogItem[]; calls: Map<Call['id'], Call>; collapsed: Set<Call['id']>; - setCollapsed: React.Dispatch<React.SetStateAction<Set<string>>>; + setCollapsed: Dispatch<SetStateAction<Set<string>>>; }) => { const callsById = new Map<Call['id'], Call>(); const childCallMap = new Map<Call['id'], Call['id'][]>(); + return log .map<Call & { isHidden: boolean }>(({ callId, ancestors, status }) => { let isHidden = false; ancestors.forEach((ancestor) => { - if (collapsed.has(ancestor)) isHidden = true; + if (collapsed.has(ancestor)) { + isHidden = true; + } childCallMap.set(ancestor, (childCallMap.get(ancestor) || []).concat(callId)); }); return { ...calls.get(callId), status, isHidden }; @@ -72,34 +69,50 @@ export const getInteractions = ({ isCollapsed: collapsed.has(call.id), toggleCollapsed: () => setCollapsed((ids) => { - if (ids.has(call.id)) ids.delete(call.id); - else ids.add(call.id); + if (ids.has(call.id)) { + ids.delete(call.id); + } else { + ids.add(call.id); + } return new Set(ids); }), }; }); }; -export const Panel: React.FC<{ active: boolean }> = (props) => { - const [storyId, setStoryId] = React.useState<StoryId>(); - const [controlStates, setControlStates] = React.useState<ControlStates>(INITIAL_CONTROL_STATES); - const [pausedAt, setPausedAt] = React.useState<Call['id']>(); - const [isErrored, setErrored] = React.useState(false); - const [isPlaying, setPlaying] = React.useState(false); - const [isRerunAnimating, setIsRerunAnimating] = React.useState(false); - const [scrollTarget, setScrollTarget] = React.useState<HTMLElement>(); - const [collapsed, setCollapsed] = React.useState<Set<Call['id']>>(new Set()); - const [caughtException, setCaughtException] = React.useState<Error>(); - const [interactions, setInteractions] = React.useState<Interaction[]>([]); - const [interactionsCount, setInteractionsCount] = React.useState<number>(); +export const Panel = memo<{ storyId: string }>(function PanelMemoized({ storyId }) { + // shared state + const [addonState, set] = useAddonState(ADDON_ID, { + controlStates: INITIAL_CONTROL_STATES, + isErrored: false, + pausedAt: undefined, + interactions: [], + isPlaying: false, + hasException: false, + caughtException: undefined, + interactionsCount: 0, + }); + + // local state + const [scrollTarget, setScrollTarget] = useState<HTMLElement | undefined>(undefined); + const [collapsed, setCollapsed] = useState<Set<Call['id']>>(new Set()); + + const { + controlStates = INITIAL_CONTROL_STATES, + isErrored = false, + pausedAt = undefined, + interactions = [], + isPlaying = false, + caughtException = undefined, + } = addonState; // Log and calls are tracked in a ref so we don't needlessly rerender. - const log = React.useRef<LogItem[]>([]); - const calls = React.useRef<Map<Call['id'], Omit<Call, 'status'>>>(new Map()); + const log = useRef<LogItem[]>([]); + const calls = useRef<Map<Call['id'], Omit<Call, 'status'>>>(new Map()); const setCall = ({ status, ...call }: Call) => calls.current.set(call.id, call); - const endRef = React.useRef(); - React.useEffect(() => { + const endRef = useRef(); + useEffect(() => { let observer: IntersectionObserver; if (global.IntersectionObserver) { observer = new global.IntersectionObserver( @@ -115,45 +128,84 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { { [EVENTS.CALL]: setCall, [EVENTS.SYNC]: (payload) => { - setControlStates(payload.controlStates); - setPausedAt(payload.pausedAt); - setInteractions( - getInteractions({ log: payload.logItems, calls: calls.current, collapsed, setCollapsed }) - ); + set((s) => { + const list = getInteractions({ + log: payload.logItems, + calls: calls.current, + collapsed, + setCollapsed, + }); + return { + ...s, + controlStates: payload.controlStates, + pausedAt: payload.pausedAt, + interactions: list, + interactionsCount: list.filter(({ method }) => method !== 'step').length, + }; + }); + log.current = payload.logItems; }, [STORY_RENDER_PHASE_CHANGED]: (event) => { - setStoryId(event.storyId); - setPlaying(event.newPhase === 'playing'); - setPausedAt(undefined); - if (event.newPhase === 'rendering') { - setErrored(false); - setCaughtException(undefined); + if (event.newPhase === 'preparing') { + set((s) => ({ + controlStates: INITIAL_CONTROL_STATES, + isErrored: false, + pausedAt: undefined, + interactions: [], + isPlaying: false, + isRerunAnimating: false, + scrollTarget, + collapsed: new Set() as Set<Call['id']>, + hasException: false, + caughtException: undefined, + interactionsCount: 0, + })); + return; } + set((s) => ({ + ...s, + isPlaying: event.newPhase === 'playing', + pausedAt: undefined, + ...(event.newPhase === 'rendering' + ? { + isErrored: false, + caughtException: undefined, + } + : {}), + })); }, [STORY_THREW_EXCEPTION]: () => { - setErrored(true); + set((s) => ({ ...s, isErrored: true })); }, [PLAY_FUNCTION_THREW_EXCEPTION]: (e) => { - if (e?.message !== IGNORED_EXCEPTION.message) setCaughtException(e); - else setCaughtException(undefined); + if (e?.message !== IGNORED_EXCEPTION.message) { + set((s) => ({ ...s, caughtException: e })); + } else { + set((s) => ({ ...s, caughtException: undefined })); + } }, }, [collapsed] ); - React.useEffect(() => { - setInteractions( - getInteractions({ log: log.current, calls: calls.current, collapsed, setCollapsed }) - ); + useEffect(() => { + set((s) => { + const list = getInteractions({ + log: log.current, + calls: calls.current, + collapsed, + setCollapsed, + }); + return { + ...s, + interactions: list, + interactionsCount: list.filter(({ method }) => method !== 'step').length, + }; + }); }, [collapsed]); - React.useEffect(() => { - if (isPlaying || isRerunAnimating) return; - setInteractionsCount(interactions.filter(({ method }) => method !== 'step').length); - }, [interactions, isPlaying, isRerunAnimating]); - - const controls = React.useMemo( + const controls = useMemo( () => ({ start: () => emit(EVENTS.START, { storyId }), back: () => emit(EVENTS.BACK, { storyId }), @@ -161,7 +213,6 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { next: () => emit(EVENTS.NEXT, { storyId }), end: () => emit(EVENTS.END, { storyId }), rerun: () => { - setIsRerunAnimating(true); emit(FORCE_REMOUNT, { storyId }); }, }), @@ -172,19 +223,14 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { const [fileName] = storyFilePath.toString().split('/').slice(-1); const scrollToTarget = () => scrollTarget?.scrollIntoView({ behavior: 'smooth', block: 'end' }); - const showStatus = interactionsCount > 0 || !!caughtException || isRerunAnimating; const hasException = !!caughtException || interactions.some((v) => v.status === CallStates.ERROR); if (isErrored) { - return <React.Fragment key="interactions" />; + return <Fragment key="interactions" />; } return ( - <React.Fragment key="interactions"> - <TabStatus> - {showStatus && - (hasException ? <TabIcon status={CallStates.ERROR} /> : ` (${interactionsCount})`)} - </TabStatus> + <Fragment key="interactions"> <InteractionsPanel calls={calls.current} controls={controls} @@ -197,10 +243,7 @@ export const Panel: React.FC<{ active: boolean }> = (props) => { pausedAt={pausedAt} endRef={endRef} onScrollToEnd={scrollTarget && scrollToTarget} - isRerunAnimating={isRerunAnimating} - setIsRerunAnimating={setIsRerunAnimating} - {...props} /> - </React.Fragment> + </Fragment> ); -}; +}); diff --git a/code/addons/interactions/src/components/InteractionsPanel.tsx b/code/addons/interactions/src/components/InteractionsPanel.tsx index e5bed004ded0..6fad03daaf48 100644 --- a/code/addons/interactions/src/components/InteractionsPanel.tsx +++ b/code/addons/interactions/src/components/InteractionsPanel.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { AddonPanel, Link, Placeholder } from '@storybook/components'; +import { Link, Placeholder } from '@storybook/components'; import { type Call, CallStates, type ControlStates } from '@storybook/instrumenter'; import { styled } from '@storybook/theming'; import { transparentize } from 'polished'; @@ -18,7 +18,6 @@ export interface Controls { } interface InteractionsPanelProps { - active: boolean; controls: Controls; controlStates: ControlStates; interactions: (Call & { @@ -36,8 +35,6 @@ interface InteractionsPanelProps { calls: Map<string, any>; endRef?: React.Ref<HTMLDivElement>; onScrollToEnd?: () => void; - isRerunAnimating: boolean; - setIsRerunAnimating: React.Dispatch<React.SetStateAction<boolean>>; } const Container = styled.div<{ withException: boolean }>(({ theme, withException }) => ({ @@ -91,72 +88,65 @@ export const InteractionsPanel: React.FC<InteractionsPanelProps> = React.memo( pausedAt, onScrollToEnd, endRef, - isRerunAnimating, - setIsRerunAnimating, - ...panelProps }) { return ( - <AddonPanel {...panelProps}> - <Container withException={!!caughtException}> - {(interactions.length > 0 || hasException || isRerunAnimating) && ( - <Subnav + <Container withException={!!caughtException}> + {(interactions.length > 0 || hasException) && ( + <Subnav + controls={controls} + controlStates={controlStates} + status={ + // eslint-disable-next-line no-nested-ternary + isPlaying ? CallStates.ACTIVE : hasException ? CallStates.ERROR : CallStates.DONE + } + storyFileName={fileName} + onScrollToEnd={onScrollToEnd} + /> + )} + <div aria-label="Interactions list"> + {interactions.map((call) => ( + <Interaction + key={call.id} + call={call} + callsById={calls} controls={controls} controlStates={controlStates} - status={ - // eslint-disable-next-line no-nested-ternary - isPlaying ? CallStates.ACTIVE : hasException ? CallStates.ERROR : CallStates.DONE - } - storyFileName={fileName} - onScrollToEnd={onScrollToEnd} - isRerunAnimating={isRerunAnimating} - setIsRerunAnimating={setIsRerunAnimating} + childCallIds={call.childCallIds} + isHidden={call.isHidden} + isCollapsed={call.isCollapsed} + toggleCollapsed={call.toggleCollapsed} + pausedAt={pausedAt} /> - )} - <div aria-label="Interactions list"> - {interactions.map((call) => ( - <Interaction - key={call.id} - call={call} - callsById={calls} - controls={controls} - controlStates={controlStates} - childCallIds={call.childCallIds} - isHidden={call.isHidden} - isCollapsed={call.isCollapsed} - toggleCollapsed={call.toggleCollapsed} - pausedAt={pausedAt} - /> - ))} - </div> - {caughtException && !caughtException.message?.startsWith('ignoredException') && ( - <CaughtException> - <CaughtExceptionTitle> - Caught exception in <CaughtExceptionCode>play</CaughtExceptionCode> function - </CaughtExceptionTitle> - <CaughtExceptionDescription> - This story threw an error after it finished rendering which means your interactions - couldn' t be run.Go to this story' s play function in {fileName} to fix. - </CaughtExceptionDescription> - <CaughtExceptionStack data-chromatic="ignore"> - {caughtException.stack || `${caughtException.name}: ${caughtException.message}`} - </CaughtExceptionStack> - </CaughtException> - )} - <div ref={endRef} /> - {!isPlaying && !caughtException && interactions.length === 0 && ( - <Placeholder> - No interactions found - <Link - href="https://storybook.js.org/docs/react/writing-stories/play-function" - target="_blank" - withArrow - > - Learn how to add interactions to your story - </Link> - </Placeholder> - )} - </Container> - </AddonPanel> + ))} + </div> + {caughtException && !caughtException.message?.startsWith('ignoredException') && ( + <CaughtException> + <CaughtExceptionTitle> + Caught exception in <CaughtExceptionCode>play</CaughtExceptionCode> function + </CaughtExceptionTitle> + <CaughtExceptionDescription> + This story threw an error after it finished rendering which means your interactions + couldn' t be run.Go to this story' s play function in {fileName} to fix. + </CaughtExceptionDescription> + <CaughtExceptionStack data-chromatic="ignore"> + {caughtException.stack || `${caughtException.name}: ${caughtException.message}`} + </CaughtExceptionStack> + </CaughtException> + )} + <div ref={endRef} /> + {!isPlaying && !caughtException && interactions.length === 0 && ( + <Placeholder> + No interactions found + <Link + href="https://storybook.js.org/docs/react/writing-stories/play-function" + target="_blank" + withArrow + > + Learn how to add interactions to your story + </Link> + </Placeholder> + )} + </Container> ); } ); diff --git a/code/addons/interactions/src/components/Subnav.tsx b/code/addons/interactions/src/components/Subnav.tsx index 2080f622dc37..3d2e5c41d1a3 100644 --- a/code/addons/interactions/src/components/Subnav.tsx +++ b/code/addons/interactions/src/components/Subnav.tsx @@ -40,8 +40,6 @@ export interface SubnavProps { status: Call['status']; storyFileName?: string; onScrollToEnd?: () => void; - isRerunAnimating: boolean; - setIsRerunAnimating: React.Dispatch<React.SetStateAction<boolean>>; } const StyledButton = styled(Button)(({ theme }) => ({ @@ -114,8 +112,6 @@ export const Subnav: React.FC<SubnavProps> = ({ status, storyFileName, onScrollToEnd, - isRerunAnimating, - setIsRerunAnimating, }) => { const buttonText = status === CallStates.ERROR ? 'Scroll to error' : 'Scroll to end'; @@ -177,14 +173,7 @@ export const Subnav: React.FC<SubnavProps> = ({ </WithTooltip> <WithTooltip trigger="hover" hasChrome={false} tooltip={<Note note="Rerun" />}> - <RerunButton - aria-label="Rerun" - containsIcon - onClick={controls.rerun} - onAnimationEnd={() => setIsRerunAnimating(false)} - animating={isRerunAnimating} - disabled={isRerunAnimating} - > + <RerunButton aria-label="Rerun" containsIcon onClick={controls.rerun}> <Icons icon="sync" /> </RerunButton> </WithTooltip> diff --git a/code/addons/interactions/src/manager.tsx b/code/addons/interactions/src/manager.tsx index 909eeb3b8e6d..1de79401b146 100644 --- a/code/addons/interactions/src/manager.tsx +++ b/code/addons/interactions/src/manager.tsx @@ -1,13 +1,46 @@ -import { addons, types } from '@storybook/manager-api'; - +import React, { useCallback } from 'react'; +import type { Combo } from '@storybook/manager-api'; +import { addons, Consumer, types, useAddonState } from '@storybook/manager-api'; +import { AddonPanel, Badge, Spaced } from '@storybook/components'; +import { CallStates } from '@storybook/instrumenter'; import { ADDON_ID, PANEL_ID } from './constants'; import { Panel } from './Panel'; +import { TabIcon } from './components/TabStatus'; + +function Title() { + const [addonState = {}] = useAddonState(ADDON_ID); + const { hasException, interactionsCount } = addonState as any; -addons.register(ADDON_ID, () => { + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Interactions</span> + {interactionsCount && !hasException ? ( + <Badge status="neutral">{interactionsCount}</Badge> + ) : null} + {hasException ? <TabIcon status={CallStates.ERROR} /> : null} + </Spaced> + </div> + ); +} + +addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { type: types.PANEL, - title: 'Interactions', + title: Title, match: ({ viewMode }) => viewMode === 'story', - render: Panel, + render: ({ key, active }) => { + const newLocal = useCallback(({ state }: Combo) => { + return { + storyId: state.storyId, + }; + }, []); + + return ( + <AddonPanel key={key} active={active}> + <Consumer filter={newLocal}>{({ storyId }) => <Panel storyId={storyId} />}</Consumer> + </AddonPanel> + ); + }, }); }); diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts index 063cfd14cefd..acaf2c7489cd 100644 --- a/code/e2e-tests/addon-interactions.spec.ts +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -60,7 +60,8 @@ test.describe('addon-interactions', () => { await expect(formInput).toHaveValue('final value'); const interactionsTab = await page.locator('#tabbutton-storybook-interactions-panel'); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); + await expect(interactionsTab).toBeVisible(); await expect(interactionsTab).toBeVisible(); const panel = sbPage.panelContent(); @@ -100,7 +101,7 @@ test.describe('addon-interactions', () => { await interactionsRow.first().isVisible(); await interactionsRow.nth(1).isVisible(); await interactionsRow.nth(2).isVisible(); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); await expect(interactionsTab).toBeVisible(); // Test remount state (from toolbar) - Interactions have rerun, count is correct and values are as expected @@ -109,7 +110,8 @@ test.describe('addon-interactions', () => { await interactionsRow.first().isVisible(); await interactionsRow.nth(1).isVisible(); await interactionsRow.nth(2).isVisible(); - await expect(interactionsTab).toContainText(/(3)/); + await expect(interactionsTab.getByText('3')).toBeVisible(); + await expect(interactionsTab).toBeVisible(); await expect(interactionsTab).toBeVisible(); await expect(formInput).toHaveValue('final value'); }); From f3f38c3f3b4e09427cea711b03f6dccb6dfe6c0e Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 11:54:08 +0200 Subject: [PATCH 011/135] improve --- code/lib/router/src/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 58a253a96eff..831e87532d2d 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -30,7 +30,7 @@ interface MatchPropsDefault { interface RoutePropsStartsWith { path: string; - startsWith: boolean; + startsWith?: boolean; hideOnly?: boolean; children: ReactNode; } From 104b68092de708c1f9c041a3e8cead917cbfba47 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 12:20:37 +0200 Subject: [PATCH 012/135] improve controls and actions --- code/addons/actions/src/manager.tsx | 41 ++++++++++++---------------- code/addons/controls/src/manager.tsx | 13 +++++++-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/code/addons/actions/src/manager.tsx b/code/addons/actions/src/manager.tsx index e7b81047231b..95473221160d 100644 --- a/code/addons/actions/src/manager.tsx +++ b/code/addons/actions/src/manager.tsx @@ -1,47 +1,40 @@ import React, { useState } from 'react'; import { addons, types, useChannel } from '@storybook/manager-api'; import { STORY_CHANGED } from '@storybook/core-events'; +import { Badge, Spaced } from '@storybook/components'; import ActionLogger from './containers/ActionLogger'; import { ADDON_ID, CLEAR_ID, EVENT_ID, PANEL_ID, PARAM_KEY } from './constants'; -function Title({ count }: { count: { current: number } }) { - // eslint-disable-next-line @typescript-eslint/naming-convention - const [_, setRerender] = useState(false); +function Title() { + const [count, setCount] = useState(0); - // Reactivity hack - force re-render on STORY_CHANGED, EVENT_ID and CLEAR_ID events useChannel({ [EVENT_ID]: () => { - setRerender((r) => !r); + setCount((c) => c + 1); }, [STORY_CHANGED]: () => { - setRerender((r) => !r); + setCount(0); }, [CLEAR_ID]: () => { - setRerender((r) => !r); + setCount(0); }, }); - const suffix = count.current === 0 ? '' : ` (${count.current})`; - return <>Actions{suffix}</>; + const suffix = count === 0 ? '' : <Badge status="neutral">{count}</Badge>; + + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Actions</span> + {suffix} + </Spaced> + </div> + ); } addons.register(ADDON_ID, (api) => { - const countRef = { current: 0 }; - - api.on(STORY_CHANGED, (id) => { - countRef.current = 0; - }); - - api.on(EVENT_ID, () => { - countRef.current += 1; - }); - - api.on(CLEAR_ID, () => { - countRef.current = 0; - }); - addons.add(PANEL_ID, { - title: <Title count={countRef} />, + title: Title, type: types.PANEL, render: ({ active, key }) => <ActionLogger key={key} api={api} active={!!active} />, paramKey: PARAM_KEY, diff --git a/code/addons/controls/src/manager.tsx b/code/addons/controls/src/manager.tsx index eee2ac03e7c5..28932be6fd02 100644 --- a/code/addons/controls/src/manager.tsx +++ b/code/addons/controls/src/manager.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { addons, types, useArgTypes } from '@storybook/manager-api'; -import { AddonPanel } from '@storybook/components'; +import { AddonPanel, Badge, Spaced } from '@storybook/components'; import { ControlsPanel } from './ControlsPanel'; import { ADDON_ID, PARAM_KEY } from './constants'; @@ -9,9 +9,16 @@ function Title() { const controlsCount = Object.values(rows).filter( (argType) => argType?.control && !argType?.table?.disable ).length; - const suffix = controlsCount === 0 ? '' : ` (${controlsCount})`; + const suffix = controlsCount === 0 ? '' : <Badge status="neutral">{controlsCount}</Badge>; - return <>Controls{suffix}</>; + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Controls</span> + {suffix} + </Spaced> + </div> + ); } addons.register(ADDON_ID, (api) => { From 2ee9393a0319b1c7a1d0fff14e53be7c661de2a6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 12:23:57 +0200 Subject: [PATCH 013/135] improve a11y --- code/addons/a11y/src/manager.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index 718766ab07b8..ae83c35871e1 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { addons, types } from '@storybook/manager-api'; +import { Badge, Spaced } from '@storybook/components'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; import { VisionSimulator } from './components/VisionSimulator'; import { A11YPanel } from './components/A11YPanel'; @@ -19,8 +20,18 @@ addons.register(ADDON_ID, (api) => { const addonState: Results = api?.getAddonState(ADDON_ID); const violationsNb = addonState?.violations?.length || 0; const incompleteNb = addonState?.incomplete?.length || 0; - const totalNb = violationsNb + incompleteNb; - return totalNb !== 0 ? `Accessibility (${totalNb})` : 'Accessibility'; + const count = violationsNb + incompleteNb; + + const suffix = count === 0 ? '' : <Badge status="neutral">{count}</Badge>; + + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Accessibility</span> + {suffix} + </Spaced> + </div> + ); }, type: types.PANEL, render: ({ active = true, key }) => ( From 65f3695bda0fd192b66e8efc2ecfc4d1443b0a02 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 12:37:39 +0200 Subject: [PATCH 014/135] cleanup --- code/addons/a11y/src/manager.tsx | 39 +++++++++++++++------------- code/addons/controls/src/manager.tsx | 2 +- code/addons/links/src/manager.ts | 4 +-- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index ae83c35871e1..096969c7f57c 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { addons, types } from '@storybook/manager-api'; +import { addons, types, useStorybookApi } from '@storybook/manager-api'; import { Badge, Spaced } from '@storybook/components'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; import { VisionSimulator } from './components/VisionSimulator'; @@ -7,6 +7,25 @@ import { A11YPanel } from './components/A11YPanel'; import type { Results } from './components/A11yContext'; import { A11yContextProvider } from './components/A11yContext'; +const Title = () => { + const api = useStorybookApi(); + const addonState: Results = api?.getAddonState(ADDON_ID); + const violationsNb = addonState?.violations?.length || 0; + const incompleteNb = addonState?.incomplete?.length || 0; + const count = violationsNb + incompleteNb; + + const suffix = count === 0 ? '' : <Badge status="neutral">{count}</Badge>; + + return ( + <div> + <Spaced col={1}> + <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Accessibility</span> + {suffix} + </Spaced> + </div> + ); +}; + addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: '', @@ -16,23 +35,7 @@ addons.register(ADDON_ID, (api) => { }); addons.add(PANEL_ID, { - title() { - const addonState: Results = api?.getAddonState(ADDON_ID); - const violationsNb = addonState?.violations?.length || 0; - const incompleteNb = addonState?.incomplete?.length || 0; - const count = violationsNb + incompleteNb; - - const suffix = count === 0 ? '' : <Badge status="neutral">{count}</Badge>; - - return ( - <div> - <Spaced col={1}> - <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>Accessibility</span> - {suffix} - </Spaced> - </div> - ); - }, + title: Title, type: types.PANEL, render: ({ active = true, key }) => ( <A11yContextProvider key={key} active={active}> diff --git a/code/addons/controls/src/manager.tsx b/code/addons/controls/src/manager.tsx index 28932be6fd02..de00635f7196 100644 --- a/code/addons/controls/src/manager.tsx +++ b/code/addons/controls/src/manager.tsx @@ -23,7 +23,7 @@ function Title() { addons.register(ADDON_ID, (api) => { addons.add(ADDON_ID, { - title: <Title />, + title: Title, type: types.PANEL, paramKey: PARAM_KEY, render: ({ key, active }) => { diff --git a/code/addons/links/src/manager.ts b/code/addons/links/src/manager.ts index 9107c8c61904..e0c7487f2be9 100644 --- a/code/addons/links/src/manager.ts +++ b/code/addons/links/src/manager.ts @@ -3,9 +3,7 @@ import { addons } from '@storybook/manager-api'; import EVENTS, { ADDON_ID } from './constants'; addons.register(ADDON_ID, (api) => { - const channel = addons.getChannel(); - - channel.on(EVENTS.REQUEST, ({ kind, name }) => { + api.on(EVENTS.REQUEST, ({ kind, name }) => { const id = api.storyId(kind, name); api.emit(EVENTS.RECEIVE, id); }); From 77213718e2e90dd2323024cb79a449e6499d8d17 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 12:42:22 +0200 Subject: [PATCH 015/135] make state persisted with useAddonState --- code/addons/actions/src/manager.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/addons/actions/src/manager.tsx b/code/addons/actions/src/manager.tsx index 95473221160d..434e214de30a 100644 --- a/code/addons/actions/src/manager.tsx +++ b/code/addons/actions/src/manager.tsx @@ -1,22 +1,22 @@ -import React, { useState } from 'react'; -import { addons, types, useChannel } from '@storybook/manager-api'; +import React from 'react'; +import { addons, types, useAddonState, useChannel } from '@storybook/manager-api'; import { STORY_CHANGED } from '@storybook/core-events'; import { Badge, Spaced } from '@storybook/components'; import ActionLogger from './containers/ActionLogger'; import { ADDON_ID, CLEAR_ID, EVENT_ID, PANEL_ID, PARAM_KEY } from './constants'; function Title() { - const [count, setCount] = useState(0); + const [{ count }, setCount] = useAddonState(ADDON_ID, { count: 0 }); useChannel({ [EVENT_ID]: () => { - setCount((c) => c + 1); + setCount((c) => ({ ...c, count: c.count + 1 })); }, [STORY_CHANGED]: () => { - setCount(0); + setCount((c) => ({ ...c, count: 0 })); }, [CLEAR_ID]: () => { - setCount(0); + setCount((c) => ({ ...c, count: 0 })); }, }); From 0effc6d2569d44e5f4660246447b16a5a7b27b9e Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 13:47:59 +0200 Subject: [PATCH 016/135] improve and fix test --- code/addons/a11y/src/manager.test.tsx | 55 ++++++++++++++++++++++++--- code/addons/a11y/src/manager.tsx | 5 +-- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/code/addons/a11y/src/manager.test.tsx b/code/addons/a11y/src/manager.test.tsx index 0372c567f209..95d1dddb78b9 100644 --- a/code/addons/a11y/src/manager.test.tsx +++ b/code/addons/a11y/src/manager.test.tsx @@ -4,7 +4,7 @@ import './manager'; jest.mock('@storybook/manager-api'); const mockedApi = api as unknown as jest.Mocked<api.API>; -mockedApi.getAddonState = jest.fn(); +mockedApi.useAddonState = jest.fn(); const mockedAddons = api.addons as jest.Mocked<typeof api.addons>; const registrationImpl = mockedAddons.register.mock.calls[0][1]; @@ -29,25 +29,70 @@ describe('A11yManager', () => { it('should compute title with no issues', () => { // given - mockedApi.getAddonState.mockImplementation(() => undefined); + mockedApi.useAddonState.mockImplementation(() => [undefined]); registrationImpl(api as unknown as api.API); const title = mockedAddons.add.mock.calls .map(([_, def]) => def) .find(({ type }) => type === api.types.PANEL)?.title as Function; // when / then - expect(title()).toBe('Accessibility'); + expect(title()).toMatchInlineSnapshot(` + <div> + <Spaced + col={1} + > + <span + style={ + Object { + "display": "inline-block", + "verticalAlign": "middle", + } + } + > + Accessibility + </span> + + </Spaced> + </div> + `); }); it('should compute title with issues', () => { // given - mockedApi.getAddonState.mockImplementation(() => ({ violations: [{}], incomplete: [{}, {}] })); + mockedApi.useAddonState.mockImplementation(() => [ + { + violations: [{}], + incomplete: [{}, {}], + }, + ]); registrationImpl(mockedApi); const title = mockedAddons.add.mock.calls .map(([_, def]) => def) .find(({ type }) => type === api.types.PANEL)?.title as Function; // when / then - expect(title()).toBe('Accessibility (3)'); + expect(title()).toMatchInlineSnapshot(` + <div> + <Spaced + col={1} + > + <span + style={ + Object { + "display": "inline-block", + "verticalAlign": "middle", + } + } + > + Accessibility + </span> + <Badge + status="neutral" + > + 3 + </Badge> + </Spaced> + </div> + `); }); }); diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index 096969c7f57c..927bdf2f3aba 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { addons, types, useStorybookApi } from '@storybook/manager-api'; +import { addons, types, useAddonState } from '@storybook/manager-api'; import { Badge, Spaced } from '@storybook/components'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; import { VisionSimulator } from './components/VisionSimulator'; @@ -8,8 +8,7 @@ import type { Results } from './components/A11yContext'; import { A11yContextProvider } from './components/A11yContext'; const Title = () => { - const api = useStorybookApi(); - const addonState: Results = api?.getAddonState(ADDON_ID); + const [addonState] = useAddonState<Results>(ADDON_ID); const violationsNb = addonState?.violations?.length || 0; const incompleteNb = addonState?.incomplete?.length || 0; const count = violationsNb + incompleteNb; From 683c480535f08992b42c17e69bd8a19f7745eae0 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 14:11:54 +0200 Subject: [PATCH 017/135] add a new addon type: Page, refactor manager layout to allow for pages --- code/lib/manager-api/src/index.tsx | 35 ++-- code/lib/manager-api/src/lib/addons.ts | 55 +++++- code/lib/manager-api/src/modules/addons.ts | 19 +- code/lib/manager-api/src/modules/settings.ts | 16 +- code/lib/manager-api/src/modules/stories.ts | 10 +- .../lib/manager-api/src/tests/stories.test.ts | 56 +++++- code/lib/types/src/modules/addons.ts | 48 ++++- code/ui/manager/src/app.stories.tsx | 63 ++++++- code/ui/manager/src/app.tsx | 22 +-- .../src/components/layout/app.mockdata.tsx | 11 +- .../src/components/layout/desktop.stories.tsx | 42 ++++- .../manager/src/components/layout/desktop.tsx | 32 ++-- .../src/components/layout/mobile.stories.tsx | 49 ++++- .../manager/src/components/layout/mobile.tsx | 176 ++++++++++-------- .../src/components/preview/iframe.stories.tsx | 2 +- .../manager/src/components/preview/iframe.tsx | 2 +- code/ui/manager/src/index.tsx | 21 ++- code/ui/manager/src/settings/index.tsx | 15 +- 18 files changed, 489 insertions(+), 185 deletions(-) diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index db27d916d75f..5ff49274d7dc 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -184,7 +184,7 @@ class ManagerProvider extends Component<ManagerProviderProps, State> { location, path, refId, - viewMode = props.docsOptions.docsMode ? 'docs' : 'story', + viewMode = props.docsOptions.docsMode ? 'docs' : props.viewMode, singleStory, storyId, docsOptions, @@ -419,36 +419,41 @@ const addonStateCache: { // shared state export function useSharedState<S>(stateId: string, defaultState?: S) { const api = useStorybookApi(); - const existingState = api.getAddonState<S>(stateId); + const existingState = api.getAddonState<S>(stateId) || addonStateCache[stateId]; const state = orDefault<S>( existingState, addonStateCache[stateId] ? addonStateCache[stateId] : defaultState ); - const setState = (s: S | API_StateMerger<S>, options?: Options) => { - // set only after the stories are loaded - if (addonStateCache[stateId]) { + + if (api.getAddonState(stateId) !== state) { + api.setAddonState<S>(stateId, state).then((s) => { addonStateCache[stateId] = s; - } - api.setAddonState<S>(stateId, s, options); + }); + } + + const setState = (s: S | API_StateMerger<S>, options?: Options) => { + const result = api.setAddonState<S>(stateId, s, options); + addonStateCache[stateId] = result; + return result; }; const allListeners = useMemo(() => { const stateChangeHandlers = { - [`${SHARED_STATE_CHANGED}-client-${stateId}`]: (s: S) => setState(s), - [`${SHARED_STATE_SET}-client-${stateId}`]: (s: S) => setState(s), + [`${SHARED_STATE_CHANGED}-client-${stateId}`]: setState, + [`${SHARED_STATE_SET}-client-${stateId}`]: setState, }; const stateInitializationHandlers = { - [SET_STORIES]: () => { + [SET_STORIES]: async () => { const currentState = api.getAddonState(stateId); if (currentState) { addonStateCache[stateId] = currentState; api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, currentState); } else if (addonStateCache[stateId]) { // this happens when HMR - setState(addonStateCache[stateId]); + await setState(addonStateCache[stateId]); api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, addonStateCache[stateId]); } else if (defaultState !== undefined) { // if not HMR, yet the defaults are from the manager - setState(defaultState); + await setState(defaultState); // initialize addonStateCache after first load, so its available for subsequent HMR addonStateCache[stateId] = defaultState; api.emit(`${SHARED_STATE_SET}-manager-${stateId}`, defaultState); @@ -472,9 +477,9 @@ export function useSharedState<S>(stateId: string, defaultState?: S) { const emit = useChannel(allListeners); return [ state, - (newStateOrMerger: S | API_StateMerger<S>, options?: Options) => { - setState(newStateOrMerger, options); - emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`, newStateOrMerger); + async (newStateOrMerger: S | API_StateMerger<S>, options?: Options) => { + const result = await setState(newStateOrMerger, options); + emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`, result); }, ] as [S, (newStateOrMerger: S | API_StateMerger<S>, options?: Options) => void]; } diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index 647cbdb19dd7..1819fbff7444 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -8,6 +8,8 @@ import type { Addon_Elements, Addon_Loaders, Addon_Type, + Addon_BaseType, + Addon_PageType, Addon_Types, } from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; @@ -93,16 +95,35 @@ export class AddonStore { this.serverChannel = channel; }; - getElements = (type: Addon_Types): Addon_Collection => { + getElements<T extends Addon_Types | Addon_TypesEnum.experimental_PAGE>( + type: T + ): T extends Addon_TypesEnum.experimental_PAGE + ? Addon_Collection<Addon_PageType> + : Addon_Collection<Addon_BaseType> { if (!this.elements[type]) { this.elements[type] = {}; } + // @ts-expect-error (Kaspar told me to do this) return this.elements[type]; - }; + } + /** + * Adds a panel to the addon store. + * @param {string} id - The id of the panel. + * @param {Addon_Type} options - The options for the panel. + * @returns {void} + * + * @deprecated Use the 'add' method instead. + * @example + * addons.add('My Panel', { + * title: 'My Title', + * type: types.PANEL, + * render: () => <div>My Content</div>, + * }); + */ addPanel = ( id: string, - options: Omit<Addon_Type, 'type' | 'id'> & DeprecatedAddonWithId + options: Omit<Addon_BaseType, 'type' | 'id'> & DeprecatedAddonWithId ): void => { this.add(id, { type: Addon_TypesEnum.PANEL, @@ -110,11 +131,20 @@ export class AddonStore { }); }; - add = (id: string, addon: Omit<Addon_Type, 'id'> & DeprecatedAddonWithId) => { + /** + * Adds an addon to the addon store. + * @param {string} id - The id of the addon. + * @param {Addon_Type} addon - The addon to add. + * @returns {void} + */ + add( + id: string, + addon: Addon_BaseType | (Omit<Addon_PageType, 'id'> & DeprecatedAddonWithId) + ): void { const { type } = addon; const collection = this.getElements(type); collection[id] = { id, ...addon }; - }; + } setConfig = (value: Addon_Config) => { Object.assign(this.config, value); @@ -129,11 +159,18 @@ export class AddonStore { getConfig = () => this.config; - register = (name: string, registerCallback: (api: API) => void): void => { - if (this.loaders[name]) { - logger.warn(`${name} was loaded twice, this could have bad side-effects`); + /** + * Registers an addon loader function. + * + * @param {string} id - The id of the addon loader. + * @param {(api: API) => void} callback - The function that will be called to register the addon. + * @returns {void} + */ + register = (id: string, callback: (api: API) => void): void => { + if (this.loaders[id]) { + logger.warn(`${id} was loaded twice, this could have bad side-effects`); } - this.loaders[name] = registerCallback; + this.loaders[id] = callback; }; loadAddons = (api: any) => { diff --git a/code/lib/manager-api/src/modules/addons.ts b/code/lib/manager-api/src/modules/addons.ts index fad78ddf8aa9..cfbed62e1b93 100644 --- a/code/lib/manager-api/src/modules/addons.ts +++ b/code/lib/manager-api/src/modules/addons.ts @@ -1,7 +1,8 @@ import type { - Addon_Type, + Addon_BaseType, + Addon_Collection, + Addon_PageType, Addon_Types, - API_Collection, API_Panels, API_StateMerger, } from '@storybook/types'; @@ -18,11 +19,19 @@ export interface SubAPI { /** * Returns a collection of elements of a specific type. * @protected This is used internally in storybook's manager. + * @template FAKE - The type of the elements in the collection. * @template T - The type of the elements in the collection. - * @param {Addon_Types} type - The type of the elements to retrieve. + * @param {Addon_Types | Addon_TypesEnum.experimental_PAGE} type - The type of the elements to retrieve. * @returns {API_Collection<T>} - A collection of elements of the specified type. */ - getElements: <T = Addon_Type>(type: Addon_Types) => API_Collection<T>; + getElements: < + FAKE = any, + T extends Addon_Types | Addon_TypesEnum.experimental_PAGE = Addon_Types + >( + type: T + ) => T extends Addon_TypesEnum.experimental_PAGE + ? Addon_Collection<Addon_PageType> + : Addon_Collection<Addon_BaseType>; /** * Returns a collection of all panels. * This is the same as calling getElements('panel') @@ -101,7 +110,7 @@ export const init: ModuleFn<SubAPI, SubState> = ({ provider, store, fullAPI }) = const { parameters } = story; - const filteredPanels: API_Collection = {}; + const filteredPanels: Addon_Collection<Addon_BaseType> = {}; Object.entries(allPanels).forEach(([id, panel]) => { const { paramKey } = panel; if (paramKey && parameters && parameters[paramKey] && parameters[paramKey].disable) { diff --git a/code/lib/manager-api/src/modules/settings.ts b/code/lib/manager-api/src/modules/settings.ts index 228640df9748..2439a5954bcc 100644 --- a/code/lib/manager-api/src/modules/settings.ts +++ b/code/lib/manager-api/src/modules/settings.ts @@ -1,7 +1,9 @@ -import type { API_Settings } from '@storybook/types'; +import type { API_Settings, StoryId } from '@storybook/types'; import type { ModuleFn } from '../index'; export interface SubAPI { + storeSelection: () => void; + retrieveSelection: () => StoryId; /** * Changes the active settings tab. * @param path - The path of the settings page to navigate to. The path NOT should include the `/settings` prefix. @@ -62,6 +64,18 @@ export const init: ModuleFn<SubAPI, SubState> = ({ store, navigate, fullAPI }) = navigate(path); }, + retrieveSelection() { + const { settings } = store.getState(); + + return settings.lastTrackedStoryId; + }, + storeSelection: async () => { + const { storyId, settings } = store.getState(); + + await store.setState({ + settings: { ...settings, lastTrackedStoryId: storyId }, + }); + }, }; return { state: { settings: { lastTrackedStoryId: null } }, api }; diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 0157425bcf6a..f8f9523b89af 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -600,11 +600,17 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ const { sourceType } = getEventMetadata(this, fullAPI); if (sourceType === 'local') { - if (fullAPI.isSettingsScreenActive()) return; + const state = store.getState(); + if ( + state.location?.pathname !== '/' && + state.viewMode !== 'story' && + state.viewMode !== 'docs' + ) { + return; + } // Special case -- if we are already at the story being specified (i.e. the user started at a given story), // we don't need to change URL. See https://github.com/storybookjs/storybook/issues/11677 - const state = store.getState(); if (state.storyId !== storyId || state.viewMode !== viewMode) { navigate(`/${viewMode}/${storyId}`); } diff --git a/code/lib/manager-api/src/tests/stories.test.ts b/code/lib/manager-api/src/tests/stories.test.ts index b92968fb44e8..5427226865e5 100644 --- a/code/lib/manager-api/src/tests/stories.test.ts +++ b/code/lib/manager-api/src/tests/stories.test.ts @@ -699,8 +699,14 @@ describe('stories API', () => { return false; }, }); - const store = createMockStore({}); - const { init, api } = initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const store = createMockStore({ viewMode: 'story' }); + const { init, api } = initStoriesAndSetState({ + store, + navigate, + provider, + fullAPI, + viewMode: 'story', + } as any); Object.assign(fullAPI, api); init(); @@ -717,7 +723,16 @@ describe('stories API', () => { }, }); const store = createMockStore({ viewMode: 'story', storyId: 'a--1' }); - initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const { api, init } = initStoriesAndSetState({ + store, + navigate, + provider, + fullAPI, + viewMode: 'story', + storyId: 'a--1', + } as any); + Object.assign(fullAPI, api); + init(); fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); @@ -732,7 +747,40 @@ describe('stories API', () => { }, }); const store = createMockStore({ viewMode: 'settings', storyId: 'about' }); - initStoriesAndSetState({ store, navigate, provider, fullAPI } as any); + const { api, init } = initStoriesAndSetState({ + store, + navigate, + provider, + fullAPI, + viewMode: 'settings', + storyId: 'about', + } as any); + Object.assign(fullAPI, api); + init(); + + fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); + + expect(navigate).not.toHaveBeenCalled(); + }); + + it('DOES not navigate if a custom page was selected', async () => { + const navigate = jest.fn(); + const fullAPI = Object.assign(new EventEmitter(), { + isSettingsScreenActive() { + return true; + }, + }); + const store = createMockStore({ viewMode: 'custom', storyId: undefined }); + const { api, init } = initStoriesAndSetState({ + store, + navigate, + provider, + fullAPI, + viewMode: 'custom', + storyId: undefined, + } as any); + Object.assign(fullAPI, api); + init(); fullAPI.emit(STORY_SPECIFIED, { storyId: 'a--1', viewMode: 'story' }); diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 4d1221a66e3f..dbf8eec1b5c4 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -21,7 +21,7 @@ import type { } from './csf'; import type { IndexEntry } from './storyIndex'; -export type Addon_Types = Addon_TypesEnum; +export type Addon_Types = Exclude<Addon_TypesEnum, Addon_TypesEnum.experimental_PAGE>; export interface Addon_ArgType<TArg = unknown> extends InputType { defaultValue?: TArg; @@ -312,7 +312,7 @@ export type ReactJSXElement = { key: any; }; -export type Addon_Type = Addon_BaseType; +export type Addon_Type = Addon_BaseType | Addon_PageType; export interface Addon_BaseType { title: FCWithoutChildren | string | ReactElement | ReactNode; type: Addon_Types; @@ -339,6 +339,39 @@ interface FCWithoutChildren<P = {}> { displayName?: string | undefined; } +export interface Addon_PageType { + type: Addon_TypesEnum.experimental_PAGE; + /** + * The unique id of the page. + */ + id: string; + /** + * The URL to navigate to when Storybook needs to navigate to this page. + */ + url: string; + /** + * The title is used in mobile mode to represent the page in the navigation. + */ + title: FCWithoutChildren | string | ReactElement | ReactNode; + /** + * The main content of the addon, a function component without any props. + * Storybook will render your component always. + * + * If you want to render your component only when the URL matches, use the `Route` component. + * @example + * import { Route } from '@storybook/router'; + * + * render: () => { + * return ( + * <Route path="/my-addon"> + * <MyAddonContent /> + * </Route> + * ); + * }; + */ + render: FCWithoutChildren; +} + export type Addon_Loader<API> = (api: API) => void; export interface Addon_Loaders<API> { @@ -384,9 +417,20 @@ export enum Addon_TypesEnum { * @unstable */ PREVIEW = 'preview', + /** + * This adds pages that render instead of the canvas. + * DO NOT USE + */ + experimental_PAGE = 'main', /** * @deprecated This property does nothing, and will be removed in Storybook 8.0. */ NOTES_ELEMENT = 'notes-element', } + +// type A = OrString<'bla' | 'foo'>; + +// type OrString<T extends string> = T | (string & {}); + +// const x: A = 'ffffff'; diff --git a/code/ui/manager/src/app.stories.tsx b/code/ui/manager/src/app.stories.tsx index c213f64faabe..760b33d2cd43 100644 --- a/code/ui/manager/src/app.stories.tsx +++ b/code/ui/manager/src/app.stories.tsx @@ -2,7 +2,7 @@ import React from 'react'; import type { API } from '@storybook/manager-api'; import { Consumer, Provider as ManagerProvider } from '@storybook/manager-api'; -import { LocationProvider } from '@storybook/router'; +import { BaseLocationProvider } from '@storybook/router'; import { HelmetProvider } from 'react-helmet-async'; import { styled } from '@storybook/theming'; import App from './app'; @@ -12,25 +12,41 @@ export default { component: App, parameters: { layout: 'fullscreen', + theme: 'light', + viewport: { + viewports: { + tablet: { + name: 'Tablet', + styles: { + height: '1112px', + width: '834px', + }, + type: 'tablet', + }, + }, + defaultViewport: 'tablet', + defaultOrientation: 'landscape', + }, + chromatic: { viewports: [1112] }, }, decorators: [ (StoryFn: any) => ( <HelmetProvider key="helmet.Provider"> - <LocationProvider> - <ThemeStack> + <BaseLocationProvider location="/?path=/story/my-id" navigator={{} as any}> + <Background> <StoryFn /> - </ThemeStack> - </LocationProvider> + </Background> + </BaseLocationProvider> </HelmetProvider> ), ], }; -const ThemeStack = styled.div( +const Background = styled.div( { position: 'relative', - minHeight: '50vh', - height: '100%', + minHeight: '100vh', + height: '100vw', }, ({ theme }) => ({ background: theme.background.app, @@ -50,6 +66,7 @@ export const Default = () => { key="manager" provider={provider} path="/story/ui-app--loading-state" + viewMode="story" storyId="ui-app--loading-state" location={{ search: '' }} navigate={() => {}} @@ -60,7 +77,7 @@ export const Default = () => { key="app" viewMode="story" layout={{ - initialActive: 'addons', + initialActive: 'sidebar', isFullscreen: false, showToolbar: true, panelPosition: 'right', @@ -68,6 +85,7 @@ export const Default = () => { showPanel: true, showTabs: true, }} + pages={[]} panelCount={0} /> </ManagerProvider> @@ -88,7 +106,7 @@ export const LoadingState = () => ( key="app" viewMode="story" layout={{ - initialActive: 'addons', + initialActive: 'sidebar', isFullscreen: false, showToolbar: true, panelPosition: 'right', @@ -96,7 +114,32 @@ export const LoadingState = () => ( showPanel: true, showTabs: true, }} + pages={[]} panelCount={0} /> </ManagerProvider> ); + +export const Dark = () => LoadingState(); +Dark.parameters = { + theme: 'dark', +}; +export const Mobile = () => LoadingState(); +Mobile.parameters = { + theme: 'light', + viewport: { + viewports: { + mobile1: { + name: 'Small mobile', + styles: { + height: '568px', + width: '320px', + }, + type: 'mobile', + }, + }, + defaultViewport: 'mobile1', + defaultOrientation: 'portrait', + }, + chromatic: { viewports: [320] }, +}; diff --git a/code/ui/manager/src/app.tsx b/code/ui/manager/src/app.tsx index 3935126f4674..607661b56a28 100644 --- a/code/ui/manager/src/app.tsx +++ b/code/ui/manager/src/app.tsx @@ -1,12 +1,11 @@ -import type { FC } from 'react'; import React, { useMemo } from 'react'; import { useResizeDetector } from 'react-resize-detector'; import { type State } from '@storybook/manager-api'; import { Symbols } from '@storybook/components'; -import { Route } from '@storybook/router'; import { Global, createGlobal, styled } from '@storybook/theming'; +import type { Addon_PageType } from '@storybook/types'; import { Mobile } from './components/layout/mobile'; import { Desktop } from './components/layout/desktop'; import Sidebar from './containers/sidebar'; @@ -14,8 +13,6 @@ import Preview from './containers/preview'; import Panel from './containers/panel'; import Notifications from './containers/notifications'; -import SettingsPages from './settings'; - const View = styled.div({ position: 'fixed', overflow: 'hidden', @@ -27,9 +24,10 @@ export interface AppProps { viewMode: State['viewMode']; layout: State['layout']; panelCount: number; + pages: Addon_PageType[]; } -const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { +const App: React.FC<AppProps> = ({ viewMode, layout, panelCount, pages }) => { const { width, height, ref } = useResizeDetector(); let content; @@ -39,17 +37,6 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { Preview, Panel, Notifications, - pages: [ - { - key: 'settings', - render: () => <SettingsPages />, - route: (({ children }) => ( - <Route path="/settings/" startsWith> - {children} - </Route> - )) as FC, - }, - ], }), [] ); @@ -57,7 +44,7 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { if (!width || !height) { content = <div />; } else if (width < 600) { - content = <Mobile {...props} viewMode={viewMode} options={layout} />; + content = <Mobile {...props} viewMode={viewMode} options={layout} pages={pages} />; } else { content = ( <Desktop @@ -67,6 +54,7 @@ const App: React.FC<AppProps> = ({ viewMode, layout, panelCount }) => { width={width} height={height} panelCount={panelCount} + pages={pages} /> ); } diff --git a/code/ui/manager/src/components/layout/app.mockdata.tsx b/code/ui/manager/src/components/layout/app.mockdata.tsx index 40f85f51cd37..6879781822c2 100644 --- a/code/ui/manager/src/components/layout/app.mockdata.tsx +++ b/code/ui/manager/src/components/layout/app.mockdata.tsx @@ -2,7 +2,8 @@ import { global } from '@storybook/global'; import type { FC } from 'react'; import React, { Component } from 'react'; import { styled } from '@storybook/theming'; -import type { Addon_Collection } from '@storybook/types'; +import type { Addon_BaseType, Addon_Collection } from '@storybook/types'; +import { Addon_TypesEnum } from '@storybook/types'; import type { State } from '@storybook/manager-api'; import { types } from '@storybook/manager-api'; import type { SidebarProps } from '../sidebar/Sidebar'; @@ -38,10 +39,11 @@ export const shortcuts: State['shortcuts'] = { remount: ['alt', 'R'], }; -export const panels: Addon_Collection = { +export const panels: Addon_Collection<Addon_BaseType> = { test1: { type: types.PANEL, title: 'Test 1', + type: Addon_TypesEnum.PANEL, render: ({ active, key }) => active ? ( <div id="test1" key={key}> @@ -52,6 +54,7 @@ export const panels: Addon_Collection = { test2: { type: types.PANEL, title: 'Test 2', + type: Addon_TypesEnum.PANEL, render: ({ active, key }) => active ? ( <div id="test2" key={key}> @@ -165,8 +168,8 @@ export const mockProps: DesktopProps = { }, viewMode: 'story', panelCount: 2, - width: 900, - height: 600, + width: 1112, + height: 834, }; export const realProps: DesktopProps = { diff --git a/code/ui/manager/src/components/layout/desktop.stories.tsx b/code/ui/manager/src/components/layout/desktop.stories.tsx index ae70cbc0da1a..780a844d6a31 100644 --- a/code/ui/manager/src/components/layout/desktop.stories.tsx +++ b/code/ui/manager/src/components/layout/desktop.stories.tsx @@ -1,8 +1,10 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import type { DecoratorFn } from '@storybook/react'; import isChromatic from 'chromatic/isChromatic'; +import { BaseLocationProvider } from '@storybook/router'; +import { types } from '@storybook/manager-api'; import type { DesktopProps } from './desktop'; import { Desktop } from './desktop'; @@ -12,7 +14,27 @@ import { mockProps, realProps, MockPage } from './app.mockdata'; export default { title: 'Layout/Desktop', component: Desktop, - parameters: { passArgsFirst: false }, + parameters: { + passArgsFirst: false, + path: 'story/my-id', + layout: 'fullscreen', + viewport: { + viewports: { + tablet: { + name: 'Tablet', + styles: { + height: '1112px', + width: '834px', + }, + type: 'tablet', + }, + }, + defaultViewport: 'tablet', + defaultOrientation: 'landscape', + }, + theme: 'light', + chromatic: { viewports: [1112] }, + }, decorators: [ ((StoryFn, c) => { const mocked = true; @@ -24,9 +46,11 @@ export default { const props = mocked ? mockProps : realProps; return ( - <div style={{ minHeight: 900, minWidth: 1200 }}> - <StoryFn props={props} {...c} />; - </div> + <BaseLocationProvider location={`/?path=/${c.parameters.path}`} navigator={{} as any}> + <div style={{ height: '100vh', width: '100vw', position: 'absolute', top: 0, left: 0 }}> + <StoryFn props={props} {...c} /> + </div> + </BaseLocationProvider> ); }) as DecoratorFn, ], @@ -56,11 +80,13 @@ export const Page = ({ props }: { props: DesktopProps }) => ( {...props} pages={[ { - key: 'settings', - route: ({ children }) => <Fragment>{children}</Fragment>, + id: '/settings/', + title: 'Settings', + url: '/settings/', + type: types.experimental_PAGE, render: () => <MockPage />, }, ]} - viewMode="settings" /> ); +Page.parameters = { path: '/settings/' }; diff --git a/code/ui/manager/src/components/layout/desktop.tsx b/code/ui/manager/src/components/layout/desktop.tsx index 2ff78c25d149..f4e0452d5d0c 100644 --- a/code/ui/manager/src/components/layout/desktop.tsx +++ b/code/ui/manager/src/components/layout/desktop.tsx @@ -1,7 +1,9 @@ -import type { ComponentType, FC } from 'react'; +import type { ComponentType } from 'react'; import React, { Fragment } from 'react'; import type { State } from '@storybook/manager-api'; +import { Route } from '@storybook/router'; +import type { Addon_PageType } from '@storybook/types'; import * as S from './container'; export interface DesktopProps { @@ -12,11 +14,7 @@ export interface DesktopProps { Preview: ComponentType<any>; Panel: ComponentType<any>; Notifications: ComponentType<any>; - pages: { - key: string; - route: FC; - render: ComponentType; - }[]; + pages: Addon_PageType[]; options: State['layout']; viewMode: string; } @@ -56,18 +54,22 @@ const Desktop = Object.assign( <Sidebar /> </S.Sidebar> <S.Main {...mainProps} isFullscreen={!!mainProps.isFullscreen}> - <S.Preview {...previewProps} hidden={viewMode === 'settings'}> - <Preview id="main" /> - </S.Preview> + <Route path={/^\/story|docs\//} hideOnly> + <S.Preview {...previewProps} hidden={false}> + <Preview id="main" /> + </S.Preview> - <S.Panel {...panelProps} hidden={viewMode !== 'story'}> - <Panel /> - </S.Panel> + <Route path="/story/" startsWith hideOnly> + <S.Panel {...panelProps} hidden={false}> + <Panel /> + </S.Panel> + </Route> + </Route> - {pages.map(({ key, route: Route, render: Content }) => ( - <Route key={key}> + {pages.map(({ id, render: Content }) => ( + <Fragment key={id}> <Content /> - </Route> + </Fragment> ))} </S.Main> </Fragment> diff --git a/code/ui/manager/src/components/layout/mobile.stories.tsx b/code/ui/manager/src/components/layout/mobile.stories.tsx index e1a1942a7c62..2e9966d6e8fc 100644 --- a/code/ui/manager/src/components/layout/mobile.stories.tsx +++ b/code/ui/manager/src/components/layout/mobile.stories.tsx @@ -1,7 +1,9 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import { ActiveTabs } from '@storybook/manager-api'; import type { DecoratorFn } from '@storybook/react'; +import { BaseLocationProvider } from '@storybook/router'; +import { Addon_TypesEnum } from '@storybook/types'; import type { MobileProps } from './mobile'; import { Mobile } from './mobile'; @@ -10,16 +12,40 @@ import { mockProps, realProps, MockPage } from './app.mockdata'; export default { title: 'Layout/Mobile', component: Mobile, - parameters: { passArgsFirst: false }, + parameters: { + passArgsFirst: false, + path: 'story/my-id', + layout: 'fullscreen', + viewport: { + viewports: { + mobile1: { + name: 'Small mobile', + styles: { + height: '568px', + width: '320px', + }, + type: 'mobile', + }, + }, + defaultViewport: 'mobile1', + defaultOrientation: 'portrait', + }, + theme: 'light', + chromatic: { viewports: [320] }, + }, decorators: [ - ((storyFn, c) => { + ((StoryFn, c) => { const mocked = true; - const props = { - ...(mocked ? mockProps : realProps), - }; + const props = mocked ? mockProps : realProps; - return storyFn({ props, ...c }); + return ( + <BaseLocationProvider location={`/?path=/${c.parameters.path}`} navigator={{} as any}> + <div style={{ height: '100vh', width: '100vw', position: 'absolute', top: 0, left: 0 }}> + <StoryFn props={props} {...c} /> + </div> + </BaseLocationProvider> + ); }) as DecoratorFn, ], }; @@ -50,11 +76,16 @@ export const Page = ({ props }: { props: MobileProps }) => ( options={{ ...props.options, initialActive: ActiveTabs.CANVAS }} pages={[ { - key: 'settings', - route: ({ children }) => <Fragment>{children}</Fragment>, + id: 'settings', + url: '/settings', + title: 'Settings', + type: Addon_TypesEnum.experimental_PAGE, render: () => <MockPage />, }, ]} viewMode="settings" /> ); +Page.parameters = { + path: '/settings/', +}; diff --git a/code/ui/manager/src/components/layout/mobile.tsx b/code/ui/manager/src/components/layout/mobile.tsx index 6b14ebad793b..2f2ef7d1e31c 100644 --- a/code/ui/manager/src/components/layout/mobile.tsx +++ b/code/ui/manager/src/components/layout/mobile.tsx @@ -1,9 +1,11 @@ import type { ComponentType, FC, ReactNode } from 'react'; -import React, { Component, Children } from 'react'; -import { type State, ActiveTabs } from '@storybook/manager-api'; +import React, { Fragment, Children, useCallback, useState } from 'react'; +import { type State, ActiveTabs, useStorybookApi } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { TabButton } from '@storybook/components'; +import { Location } from '@storybook/router'; +import type { Addon_PageType } from '@storybook/types'; import { Root } from './Root'; export type ActiveTabsType = 'sidebar' | 'canvas' | 'addons'; @@ -127,12 +129,6 @@ const Bar = styled.nav( }) ); -export interface Page { - key: string; - route: FC; - render: FC; -} - export interface MobileProps { options: Pick<State['layout'], 'isFullscreen' | 'showPanel' | 'initialActive' | 'showToolbar'>; Sidebar: ComponentType<any>; @@ -140,79 +136,107 @@ export interface MobileProps { Panel: ComponentType<any>; Notifications: ComponentType<any>; viewMode: State['viewMode']; - pages: Page[]; + pages: Addon_PageType[]; } export interface MobileState { active: ActiveTabsType; } -class Mobile extends Component<MobileProps, MobileState> { - constructor(props: MobileProps) { - super(props); - - const { options } = props; - this.state = { - active: options.isFullscreen ? CANVAS : options.initialActive || SIDEBAR, - }; - } - - render() { - const { Sidebar, Preview, Panel, Notifications, pages, viewMode, options } = this.props; - - const { active } = this.state; - return ( - <Root> - <Notifications - placement={{ - position: 'fixed', - bottom: 60, - left: 20, - right: 20, - }} - /> - - <Panels active={active} isFullscreen={options.isFullscreen}> - <Sidebar /> - <div> - <div hidden={!viewMode}> - <Preview showToolbar={options.showToolbar} id="main" viewMode={viewMode} /> - </div> - {pages.map(({ key, route: Route, render: Content }) => ( - <Route key={key}> - <Content /> - </Route> - ))} +export const Mobile = ({ + Sidebar, + Preview, + Panel, + Notifications, + pages, + viewMode, + options, +}: MobileProps) => { + const [{ active }, setState] = useState({ + active: options.isFullscreen ? CANVAS : options.initialActive || SIDEBAR, + }); + const api = useStorybookApi(); + const handleCanvasClick = useCallback(() => { + setState({ active: CANVAS }); + const id = api.retrieveSelection(); + if (id) { + api.selectStory(id); + } else { + api.selectFirstStory(); + } + }, []); + + const handleSideBarClick = useCallback(() => { + setState({ active: SIDEBAR }); + const id = api.retrieveSelection(); + if (id) { + api.selectStory(id); + } else { + api.selectFirstStory(); + } + }, []); + + return ( + <Root> + <Notifications + placement={{ + position: 'fixed', + bottom: 60, + left: 20, + right: 20, + }} + /> + + <Panels active={active} isFullscreen={options.isFullscreen}> + <Sidebar /> + <div> + <div hidden={viewMode !== 'docs' && viewMode !== 'story'}> + <Preview showToolbar={options.showToolbar} id="main" viewMode={viewMode} /> </div> - <Panel hidden={!viewMode} /> - </Panels> - {!options.isFullscreen && ( - <Bar> - <TabButton - onClick={() => this.setState({ active: SIDEBAR })} - active={active === SIDEBAR} - > - Sidebar - </TabButton> - <TabButton onClick={() => this.setState({ active: CANVAS })} active={active === CANVAS}> - {viewMode ? 'Canvas' : null} - {pages.map(({ key, route: Route }) => ( - <Route key={key}>{key}</Route> - ))} + {pages.map(({ id, render: Content }) => ( + <Fragment key={id}> + <Content /> + </Fragment> + ))} + </div> + <Panel hidden={viewMode !== 'story'} /> + </Panels> + {!options.isFullscreen && ( + <Bar> + <TabButton onClick={handleSideBarClick} active={active === SIDEBAR}> + Sidebar + </TabButton> + <TabButton + onClick={handleCanvasClick} + active={active === CANVAS && (viewMode === 'docs' || viewMode === 'story')} + > + Canvas + </TabButton> + <Location> + {({ path }) => ( + <> + {pages.map(({ id, title, url }) => ( + <TabButton + key={id} + onClick={() => { + setState({ active: CANVAS }); + api.navigateUrl(url, { plain: false }); + }} + active={active === CANVAS && path.startsWith(url)} + > + {title} + </TabButton> + ))} + </> + )} + </Location> + {viewMode === 'story' && options.showPanel ? ( + <TabButton onClick={() => setState({ active: ADDONS })} active={active === ADDONS}> + Addons </TabButton> - {viewMode && options.showPanel ? ( - <TabButton - onClick={() => this.setState({ active: ADDONS })} - active={active === ADDONS} - > - Addons - </TabButton> - ) : null} - </Bar> - )} - </Root> - ); - } -} - -export { Mobile }; + ) : null} + </Bar> + )} + </Root> + ); +}; diff --git a/code/ui/manager/src/components/preview/iframe.stories.tsx b/code/ui/manager/src/components/preview/iframe.stories.tsx index 4c4efe5853fb..efc3ea110932 100644 --- a/code/ui/manager/src/components/preview/iframe.stories.tsx +++ b/code/ui/manager/src/components/preview/iframe.stories.tsx @@ -20,7 +20,7 @@ export const WorkingStory = () => ( active id="iframe" title="Missing" - src="/iframe.html?id=ui-panel--default" + src="/iframe.html?id=storybook-components-icon--basic" allowFullScreen style={style} scale={1.0} diff --git a/code/ui/manager/src/components/preview/iframe.tsx b/code/ui/manager/src/components/preview/iframe.tsx index 65e84ae2ee7e..58b0c8c0dc8f 100644 --- a/code/ui/manager/src/components/preview/iframe.tsx +++ b/code/ui/manager/src/components/preview/iframe.tsx @@ -11,7 +11,7 @@ const StyledIframe = styled.iframe({ height: '100%', width: '100%', border: '0 none', - transition: 'all .3s, background-position 0s, visibility 0s', + transition: 'background-position 0s, visibility 0s', backgroundPosition: '-1px -1px, -1px -1px, -1px -1px, -1px -1px', }); diff --git a/code/ui/manager/src/index.tsx b/code/ui/manager/src/index.tsx index 9f843d0069e5..8bf921c005da 100644 --- a/code/ui/manager/src/index.tsx +++ b/code/ui/manager/src/index.tsx @@ -1,18 +1,20 @@ import { global } from '@storybook/global'; import type { FC } from 'react'; -import React from 'react'; +import React, { useMemo } from 'react'; import ReactDOM from 'react-dom'; import { Location, LocationProvider, useNavigate } from '@storybook/router'; -import { Provider as ManagerProvider } from '@storybook/manager-api'; +import { Provider as ManagerProvider, types } from '@storybook/manager-api'; import type { Combo } from '@storybook/manager-api'; import { ThemeProvider, ensure as ensureTheme } from '@storybook/theming'; import { HelmetProvider } from 'react-helmet-async'; +import type { Addon_PageType } from '@storybook/types'; import App from './app'; import Provider from './provider'; +import { settingsPageAddon } from './settings'; // @ts-expect-error (Converted from ts-ignore) ThemeProvider.displayName = 'ThemeProvider'; @@ -45,19 +47,30 @@ const Main: FC<{ provider: Provider }> = ({ provider }) => { docsOptions={global?.DOCS_OPTIONS || {}} > {({ state, api }: Combo) => { - const panelCount = Object.keys(api.getPanels()).length; + const panelCount = Object.keys(api.getElements(types.PANEL)).length; + const pages: Addon_PageType[] = useMemo( + () => [settingsPageAddon, ...Object.values(api.getElements(types.experimental_PAGE))], + [Object.keys(api.getElements(types.experimental_PAGE)).join()] + ); + const story = api.getData(state.storyId, state.refId); const isLoading = story ? !!state.refs[state.refId] && !state.refs[state.refId].previewInitialized : !state.previewInitialized; + const layout = useMemo( + () => (isLoading ? { ...state.layout, showPanel: false } : state.layout), + [isLoading, state.layout] + ); + return ( <ThemeProvider key="theme.provider" theme={ensureTheme(state.theme)}> <App key="app" viewMode={state.viewMode} - layout={isLoading ? { ...state.layout, showPanel: false } : state.layout} + layout={layout} panelCount={panelCount} + pages={pages} /> </ThemeProvider> ); diff --git a/code/ui/manager/src/settings/index.tsx b/code/ui/manager/src/settings/index.tsx index 773147c991aa..f2ff0bbff0af 100644 --- a/code/ui/manager/src/settings/index.tsx +++ b/code/ui/manager/src/settings/index.tsx @@ -1,4 +1,4 @@ -import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; +import { useStorybookApi, useStorybookState, types } from '@storybook/manager-api'; import { IconButton, Icons, FlexBar, TabBar, TabButton, ScrollArea } from '@storybook/components'; import { Location, Route } from '@storybook/router'; import { styled } from '@storybook/theming'; @@ -6,6 +6,7 @@ import { global } from '@storybook/global'; import type { FC, SyntheticEvent } from 'react'; import React, { Fragment } from 'react'; +import type { Addon_PageType } from '@storybook/types'; import { AboutPage } from './about_page'; import { ReleaseNotesPage } from './release_notes_page'; import { ShortcutsPage } from './shortcuts_page'; @@ -126,4 +127,14 @@ const SettingsPages: FC = () => { ); }; -export { SettingsPages as default }; +export const settingsPageAddon: Addon_PageType = { + id: 'settings', + url: '/settings/', + title: 'Settings', + type: types.experimental_PAGE, + render: () => ( + <Route path="/settings/" startsWith> + <SettingsPages /> + </Route> + ), +}; From f28c73966898348f276842960867c3209e756ef3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 14:12:54 +0200 Subject: [PATCH 018/135] apply router changes from https://github.com/storybookjs/storybook/pull/23292 --- code/lib/router/src/router.tsx | 109 ++++++++++++++++++++++----------- code/lib/router/src/utils.ts | 5 +- 2 files changed, 78 insertions(+), 36 deletions(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 4005dc4b7804..34ea3706bbae 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -1,6 +1,6 @@ import { global } from '@storybook/global'; import React, { useCallback } from 'react'; -import type { ReactNode } from 'react'; +import type { ReactNode, ReactElement, ComponentProps } from 'react'; import * as R from 'react-router-dom'; import { ToggleVisibility } from './visibility'; @@ -16,23 +16,33 @@ interface MatchingData { interface LocationProps { children: (renderData: RenderData) => any; } -interface MatchProps { + +interface MatchPropsStartsWith { path: string; - startsWith: boolean; + startsWith: true; + children: (matchingData: MatchingData) => ReactNode; +} +interface MatchPropsDefault { + path: RegExp; + startsWith: false; children: (matchingData: MatchingData) => ReactNode; } -interface RouteProps { + +interface RoutePropsStartsWith { path: string; - startsWith?: boolean; + startsWith: true; + hideOnly?: boolean; + children: ReactNode; +} +interface RoutePropsDefault { + path: RegExp; + startsWith?: false; hideOnly?: boolean; children: ReactNode; } const getBase = () => `${document.location.pathname}?`; -// const queryNavigate: NavigateFn = (to: string | number, options?: NavigateOptions<{}>) => -// typeof to === 'number' ? navigate(to) : navigate(`${getBase()}path=${to}`, options); - export const useNavigate = () => { const navigate = R.useNavigate(); @@ -53,7 +63,9 @@ export const useNavigate = () => { }, []); }; -// A component that will navigate to a new location/path when clicked +/** + * A component that will navigate to a new location/path when clicked + */ export const Link = ({ to, children, ...rest }: LinkProps) => ( <R.Link to={`${getBase()}path=${to}`} {...rest}> {children} @@ -61,8 +73,10 @@ export const Link = ({ to, children, ...rest }: LinkProps) => ( ); Link.displayName = 'QueryLink'; -// A render-prop component where children is called with a location -// and will be called whenever it changes when it changes +/** + * A render-prop component where children is called with a location + * and will be called whenever it changes when it changes + */ export const Location = ({ children }: LocationProps) => { const location = R.useLocation(); const { path, singleStory } = queryFromString(location.search); @@ -83,33 +97,58 @@ export const Location = ({ children }: LocationProps) => { }; Location.displayName = 'QueryLocation'; -// A render-prop component for rendering when a certain path is hit. -// It's immensely similar to `Location` but it receives an addition data property: `match`. -// match has a truthy value when the path is hit. -export const Match = ({ children, path: targetPath, startsWith = false }: MatchProps) => ( - <Location> - {({ path: urlPath, ...rest }) => - children({ - match: getMatch(urlPath, targetPath, startsWith), - ...rest, - }) - } - </Location> -); +/** + * A render-prop component for rendering when a certain path is hit. + * It's immensely similar to `Location` but it receives an addition data property: `match`. + * match has a truthy value when the path is hit. + */ +function Match(props: MatchPropsStartsWith): ReactElement; +function Match(props: MatchPropsDefault): ReactElement; +function Match({ + children, + path: targetPath, + startsWith = false, +}: MatchPropsStartsWith | MatchPropsDefault) { + return ( + <Location> + {({ path: urlPath, ...rest }) => + children({ + match: getMatch(urlPath, targetPath, startsWith), + ...rest, + }) + } + </Location> + ); +} Match.displayName = 'QueryMatch'; -// A component to conditionally render children based on matching a target path -export const Route = ({ path, children, startsWith = false, hideOnly = false }: RouteProps) => ( - <Match path={path} startsWith={startsWith}> - {({ match }) => { - if (hideOnly) { - return <ToggleVisibility hidden={!match}>{children}</ToggleVisibility>; - } - return match ? children : null; - }} - </Match> -); +/** + * A component to conditionally render children based on matching a target path + */ +function Route(props: RoutePropsDefault): ReactElement; +function Route(props: RoutePropsStartsWith): ReactElement; +function Route(input: RoutePropsDefault | RoutePropsStartsWith) { + const { children, hideOnly, ...rest } = input; + if (rest.startsWith === undefined) { + rest.startsWith = false; + } + + const matchProps = rest as Omit<ComponentProps<typeof Match>, 'children'>; + + return ( + <Match {...matchProps}> + {({ match }) => { + if (hideOnly) { + return <ToggleVisibility hidden={!match}>{children}</ToggleVisibility>; + } + return match ? children : null; + }} + </Match> + ); +} Route.displayName = 'Route'; +export { Route, Match }; + export const LocationProvider: typeof R.BrowserRouter = (...args) => R.BrowserRouter(...args); export const BaseLocationProvider: typeof R.Router = (...args) => R.Router(...args); diff --git a/code/lib/router/src/utils.ts b/code/lib/router/src/utils.ts index ab5941cab4ca..94d1d6860538 100644 --- a/code/lib/router/src/utils.ts +++ b/code/lib/router/src/utils.ts @@ -158,8 +158,11 @@ export const stringifyQuery = (query: Query) => type Match = { path: string }; export const getMatch = memoize(1000)( - (current: string, target: string, startsWith = true): Match | null => { + (current: string, target: string | RegExp, startsWith = true): Match | null => { if (startsWith) { + if (typeof target !== 'string') { + throw new Error('startsWith only works with string targets'); + } const startsWithTarget = current && current.startsWith(target); if (startsWithTarget) { return { path: current }; From d31d7cbfd546a68fc0ccea73a029659236f24d91 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 17:22:25 +0200 Subject: [PATCH 019/135] make `/` the default path, even when there's no query in the URL --- code/lib/router/src/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 34ea3706bbae..29469711f932 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -85,7 +85,7 @@ export const Location = ({ children }: LocationProps) => { return ( <> {children({ - path, + path: path || '/', location, viewMode, storyId, From 2724a96b4b040993cde4657f9df362a788576086 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 17:22:56 +0200 Subject: [PATCH 020/135] cleanup --- code/ui/manager/src/components/layout/app.mockdata.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/ui/manager/src/components/layout/app.mockdata.tsx b/code/ui/manager/src/components/layout/app.mockdata.tsx index 6879781822c2..de33978f0a82 100644 --- a/code/ui/manager/src/components/layout/app.mockdata.tsx +++ b/code/ui/manager/src/components/layout/app.mockdata.tsx @@ -5,7 +5,6 @@ import { styled } from '@storybook/theming'; import type { Addon_BaseType, Addon_Collection } from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; import type { State } from '@storybook/manager-api'; -import { types } from '@storybook/manager-api'; import type { SidebarProps } from '../sidebar/Sidebar'; import { Sidebar } from '../sidebar/Sidebar'; import Panel from '../panel/panel'; @@ -41,7 +40,6 @@ export const shortcuts: State['shortcuts'] = { export const panels: Addon_Collection<Addon_BaseType> = { test1: { - type: types.PANEL, title: 'Test 1', type: Addon_TypesEnum.PANEL, render: ({ active, key }) => @@ -52,7 +50,6 @@ export const panels: Addon_Collection<Addon_BaseType> = { ) : null, }, test2: { - type: types.PANEL, title: 'Test 2', type: Addon_TypesEnum.PANEL, render: ({ active, key }) => From dbc587ff16a1d00cf7687bad6199c403fc3b9e2a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 17:24:01 +0200 Subject: [PATCH 021/135] fix an ancient bug where navigating before preview load, the preview ignores your selection --- code/lib/manager-api/src/modules/stories.ts | 26 ++++++++++--------- .../preview-web/PreviewWithSelection.tsx | 10 +++++-- .../manager/src/components/layout/desktop.tsx | 4 +-- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index f8f9523b89af..a98ad9c4725b 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -35,6 +35,7 @@ import { CURRENT_STORY_WAS_SET, STORY_MISSING, DOCS_PREPARED, + SET_CURRENT_STORY, } from '@storybook/core-events'; import { logger } from '@storybook/client-logger'; @@ -601,18 +602,19 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ if (sourceType === 'local') { const state = store.getState(); - if ( - state.location?.pathname !== '/' && - state.viewMode !== 'story' && - state.viewMode !== 'docs' - ) { - return; - } - - // Special case -- if we are already at the story being specified (i.e. the user started at a given story), - // we don't need to change URL. See https://github.com/storybookjs/storybook/issues/11677 - if (state.storyId !== storyId || state.viewMode !== viewMode) { - navigate(`/${viewMode}/${storyId}`); + /** + * When storybook starts, we want to navigate to the first story. + * But there are a few exceptions: + * - If the current storyId and viewMode are already set/correct. + * - If the user has navigated away already. + * - If the user started storybook with a specific page-URL like "/settings/about" + */ + if (state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs') { + if (viewMode && storyId) { + fullAPI.emit(SET_CURRENT_STORY, { storyId, viewMode }); + } else { + navigate(`/${viewMode}/${storyId}`); + } } } } diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx index 01f8172ad18c..042c01a4c4d1 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx @@ -165,8 +165,8 @@ export class PreviewWithSelection<TFramework extends Renderer> extends Preview<T const { id: storyId, type: viewMode } = entry; this.selectionStore.setSelection({ storyId, viewMode }); - this.channel.emit(STORY_SPECIFIED, this.selectionStore.selection); + this.channel.emit(STORY_SPECIFIED, this.selectionStore.selection); this.channel.emit(CURRENT_STORY_WAS_SET, this.selectionStore.selection); await this.renderSelection({ persistedArgs: args }); @@ -220,9 +220,15 @@ export class PreviewWithSelection<TFramework extends Renderer> extends Preview<T } async onSetCurrentStory(selection: { storyId: StoryId; viewMode?: ViewMode }) { + /** + * set state immediately. + * If the store is still in the init phase, we'll read it from the URL. + * But we might be receiving a SET_CURRENT_STORY event and we should load that story when we init. + */ + this.selectionStore.setSelection({ viewMode: 'story', ...selection }); + await this.storyStore.initializationPromise; - this.selectionStore.setSelection({ viewMode: 'story', ...selection }); this.channel.emit(CURRENT_STORY_WAS_SET, this.selectionStore.selection); this.renderSelection(); } diff --git a/code/ui/manager/src/components/layout/desktop.tsx b/code/ui/manager/src/components/layout/desktop.tsx index f4e0452d5d0c..442ccecf766b 100644 --- a/code/ui/manager/src/components/layout/desktop.tsx +++ b/code/ui/manager/src/components/layout/desktop.tsx @@ -2,7 +2,7 @@ import type { ComponentType } from 'react'; import React, { Fragment } from 'react'; import type { State } from '@storybook/manager-api'; -import { Route } from '@storybook/router'; +import { Route, Location } from '@storybook/router'; import type { Addon_PageType } from '@storybook/types'; import * as S from './container'; @@ -54,7 +54,7 @@ const Desktop = Object.assign( <Sidebar /> </S.Sidebar> <S.Main {...mainProps} isFullscreen={!!mainProps.isFullscreen}> - <Route path={/^\/story|docs\//} hideOnly> + <Route path={/(^\/story|docs|onboarding\/|^\/$)/} hideOnly> <S.Preview {...previewProps} hidden={false}> <Preview id="main" /> </S.Preview> From 66d75aa3f81a2190ca6cad102062966b763bac86 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 17:40:06 +0200 Subject: [PATCH 022/135] make `/` the default path, even when there's no query in the URL --- code/lib/router/src/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 831e87532d2d..118077b9c007 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -85,7 +85,7 @@ export const Location = ({ children }: LocationProps) => { return ( <> {children({ - path, + path: path || '/', location, viewMode, storyId, From 6c26dafefca05fa452a70c676c04c77494d96ad6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 18:59:48 +0200 Subject: [PATCH 023/135] cleanup --- code/lib/manager-api/src/modules/stories.ts | 4 ++-- code/ui/manager/src/components/layout/desktop.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index a98ad9c4725b..5caf408753bd 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -610,8 +610,8 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ * - If the user started storybook with a specific page-URL like "/settings/about" */ if (state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs') { - if (viewMode && storyId) { - fullAPI.emit(SET_CURRENT_STORY, { storyId, viewMode }); + if (state.viewMode && state.storyId) { + fullAPI.emit(SET_CURRENT_STORY, { storyId: state.storyId, viewMode: state.viewMode }); } else { navigate(`/${viewMode}/${storyId}`); } diff --git a/code/ui/manager/src/components/layout/desktop.tsx b/code/ui/manager/src/components/layout/desktop.tsx index 442ccecf766b..2004f3817ef5 100644 --- a/code/ui/manager/src/components/layout/desktop.tsx +++ b/code/ui/manager/src/components/layout/desktop.tsx @@ -2,7 +2,7 @@ import type { ComponentType } from 'react'; import React, { Fragment } from 'react'; import type { State } from '@storybook/manager-api'; -import { Route, Location } from '@storybook/router'; +import { Route } from '@storybook/router'; import type { Addon_PageType } from '@storybook/types'; import * as S from './container'; From 44865486c861f68759714a446b90b43729c9b6c2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 19:25:47 +0200 Subject: [PATCH 024/135] fix --- code/lib/router/src/router.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/router/src/router.tsx b/code/lib/router/src/router.tsx index 29469711f932..118077b9c007 100644 --- a/code/lib/router/src/router.tsx +++ b/code/lib/router/src/router.tsx @@ -19,7 +19,7 @@ interface LocationProps { interface MatchPropsStartsWith { path: string; - startsWith: true; + startsWith: boolean; children: (matchingData: MatchingData) => ReactNode; } interface MatchPropsDefault { @@ -30,7 +30,7 @@ interface MatchPropsDefault { interface RoutePropsStartsWith { path: string; - startsWith: true; + startsWith?: boolean; hideOnly?: boolean; children: ReactNode; } From ca586a44a2b900d3cc02281b32429890ecd76bfd Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 21:38:27 +0200 Subject: [PATCH 025/135] fix --- code/lib/manager-api/src/modules/stories.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 5caf408753bd..c0704af9b30f 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -610,9 +610,14 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ * - If the user started storybook with a specific page-URL like "/settings/about" */ if (state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs') { - if (state.viewMode && state.storyId) { + if ( + state.viewMode && + state.storyId && + state.viewMode !== viewMode && + state.storyId !== storyId + ) { fullAPI.emit(SET_CURRENT_STORY, { storyId: state.storyId, viewMode: state.viewMode }); - } else { + } else if (state.storyId !== storyId || state.viewMode !== viewMode) { navigate(`/${viewMode}/${storyId}`); } } From 7f518f224946a58b8f159591a16450bf5f7e9b7c Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 22:35:52 +0200 Subject: [PATCH 026/135] add more jsdoc --- code/lib/types/src/modules/addons.ts | 45 +++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index dbf8eec1b5c4..7a23e033bdb4 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -314,14 +314,57 @@ export type ReactJSXElement = { export type Addon_Type = Addon_BaseType | Addon_PageType; export interface Addon_BaseType { + /** + * The title of the addon. + * This can be a simple string, but it can also be a React.FunctionComponent or a React.ReactElement. + */ title: FCWithoutChildren | string | ReactElement | ReactNode; + /** + * The type of the addon. + * @example Addon_TypesEnum.PANEL + */ type: Addon_Types; + /** + * The unique id of the addon. + * @warn This will become non-optional in 8.0 + * + * This needs to be globally unique, so we recommend prefixing it with your org name or npm package name. + * + * Do not prefix with `storybook`, this is reserved for core storybook feature and core addons. + * + * @example 'my-org-name/my-addon-name' + */ id?: string; + /** + * This component will wrap your `render` function. + * + * With it you can determine if you want your addon to be rendered or not. + * + * This is to facilitate addons keeping state, and keep listening for events even when they are not currently on screen/rendered. + */ route?: (routeOptions: RouterData) => string; + /** + * This will determine the value of `active` prop of your render function. + */ match?: (matchOptions: RouterData) => boolean; - render: (renderOptions: Addon_RenderOptions) => any | null; + /** + * The actual contents of your addon. + * + * This is called as a function, so if you want to use hooks, + * your function needs to return a JSX.Element within which components are rendered + */ + render: (renderOptions: Addon_RenderOptions) => ReactElement<any, any> | null; + /** + * @unstable + */ paramKey?: string; + /** + * @unstable + */ disabled?: boolean; + /** + * @unstable + */ hidden?: boolean; } From a175244e3736f34410e217d83dce640e9d1cdce3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 23:15:00 +0200 Subject: [PATCH 027/135] types refactor & cleanup --- code/lib/manager-api/src/modules/stories.ts | 12 ++++++------ code/lib/types/src/modules/addons.ts | 10 ++-------- code/lib/types/src/modules/api.ts | 14 ++++++-------- code/lib/types/src/modules/channelApi.ts | 4 ++-- code/lib/types/src/modules/csf.ts | 10 ++++++++-- code/ui/manager/src/components/preview/preview.tsx | 11 +++++------ .../manager/src/components/preview/utils/types.tsx | 8 +++----- .../ui/manager/src/components/preview/wrappers.tsx | 8 +++++--- 8 files changed, 37 insertions(+), 40 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index c0704af9b30f..a146b7ea4da7 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -18,6 +18,7 @@ import type { StoryPreparedPayload, DocsPreparedPayload, API_DocsEntry, + API_ViewMode, } from '@storybook/types'; import { PRELOAD_ENTRIES, @@ -59,7 +60,6 @@ const STORY_INDEX_PATH = './index.json'; type Direction = -1 | 1; type ParameterName = string; -type ViewMode = 'story' | 'info' | 'settings' | string | undefined; type StoryUpdate = Partial< Pick<API_StoryEntry, 'prepared' | 'parameters' | 'initialArgs' | 'argTypes' | 'args'> >; @@ -77,7 +77,7 @@ type DocsUpdate = Partial<Pick<API_DocsEntry, 'prepared' | 'parameters'>>; export interface SubState extends API_LoadedRefData { storyId: StoryId; - viewMode: ViewMode; + viewMode: API_ViewMode; status: StatusState; } @@ -110,13 +110,13 @@ export interface SubAPI { * @param {StoryId} [story] - The ID of the story to select. * @param {Object} [obj] - An optional object containing additional options. * @param {string} [obj.ref] - The ref ID of the story to select. - * @param {ViewMode} [obj.viewMode] - The view mode to display the story in. + * @param {API_ViewMode} [obj.viewMode] - The view mode to display the story in. * @returns {void} */ selectStory: ( kindOrId?: string, story?: StoryId, - obj?: { ref?: string; viewMode?: ViewMode } + obj?: { ref?: string; viewMode?: API_ViewMode } ) => void; /** * Returns the current story's data, including its ID, kind, name, and parameters. @@ -595,7 +595,7 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ viewMode, }: { storyId: string; - viewMode: ViewMode; + viewMode: API_ViewMode; [k: string]: any; }) { const { sourceType } = getEventMetadata(this, fullAPI); @@ -720,7 +720,7 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ story?: StoryName; name?: StoryName; storyId: string; - viewMode: ViewMode; + viewMode: API_ViewMode; }) { const { ref } = getEventMetadata(this, fullAPI); diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 7a23e033bdb4..c69c8da32997 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -299,8 +299,8 @@ export type BaseStory<TArgs, StoryFnReturnType> = | Addon_BaseStoryObject<TArgs, StoryFnReturnType>; export interface Addon_RenderOptions { - active?: boolean; - key?: string; + active: boolean; + key: string; } /** @@ -471,9 +471,3 @@ export enum Addon_TypesEnum { */ NOTES_ELEMENT = 'notes-element', } - -// type A = OrString<'bla' | 'foo'>; - -// type OrString<T extends string> = T | (string & {}); - -// const x: A = 'ffffff'; diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index 1fea02282371..029bfb50bee9 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -3,19 +3,17 @@ import type { RenderData } from '../../../router/src/types'; import type { Channel } from '../../../channels/src'; import type { ThemeVars } from '../../../theming/src/types'; -import type { ViewMode } from './csf'; import type { DocsOptions } from './core-common'; import type { API_HashEntry, API_IndexHash } from './api-stories'; import type { SetStoriesStory, SetStoriesStoryData } from './channelApi'; -import type { Addon_Collection, Addon_Type } from './addons'; +import type { Addon_Collection, Addon_RenderOptions, Addon_Type } from './addons'; import type { StoryIndex } from './storyIndex'; -export type API_ViewMode = 'story' | 'info' | 'settings' | 'page' | undefined | string; +type OrString<T extends string> = T | (string & {}); -export interface API_RenderOptions { - active: boolean; - key: string; -} +export type API_ViewMode = OrString<'story' | 'docs' | 'settings'> | undefined; + +export type API_RenderOptions = Addon_RenderOptions; export interface API_RouteOptions { storyId: string; @@ -62,7 +60,7 @@ export interface API_Provider<API> { export type API_IframeRenderer = ( storyId: string, - viewMode: ViewMode, + viewMode: API_ViewMode, id: string, baseUrl: string, scale: number, diff --git a/code/lib/types/src/modules/channelApi.ts b/code/lib/types/src/modules/channelApi.ts index 0fe35baf824a..b58129999e21 100644 --- a/code/lib/types/src/modules/channelApi.ts +++ b/code/lib/types/src/modules/channelApi.ts @@ -1,3 +1,4 @@ +import type { API_ViewMode } from './api'; import type { Args, ArgTypes, @@ -5,7 +6,6 @@ import type { Parameters, StoryId, StoryKind, - ViewMode, Globals, GlobalTypes, } from './csf'; @@ -23,7 +23,7 @@ export interface SetStoriesStory { [optionName: string]: any; }; docsOnly?: boolean; - viewMode?: ViewMode; + viewMode?: API_ViewMode; [parameterName: string]: any; }; argTypes?: ArgTypes; diff --git a/code/lib/types/src/modules/csf.ts b/code/lib/types/src/modules/csf.ts index ea5c13668bfd..b72b0a42af5a 100644 --- a/code/lib/types/src/modules/csf.ts +++ b/code/lib/types/src/modules/csf.ts @@ -60,13 +60,19 @@ export type { Tag, } from '@storybook/csf'; -export type ViewMode = ViewModeBase | 'story' | 'info' | 'settings' | string | undefined; +type OrString<T extends string> = T | (string & {}); + +export type ViewMode = OrString<ViewModeBase | 'settings'> | undefined; type Layout = 'centered' | 'fullscreen' | 'padded' | 'none'; export interface StorybookParameters { options?: Addon_OptionsParameter; - /** The layout property defines basic styles added to the preview body where the story is rendered. If you pass 'none', no styles are applied. */ + /** + * The layout property defines basic styles added to the preview body where the story is rendered. + * + * If you pass `none`, no styles are applied. + */ layout?: Layout; } diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index ad4c0b634fed..e9d26fce284a 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -15,13 +15,12 @@ import { defaultWrappers, ApplyWrappers } from './wrappers'; import { ToolbarComp } from './toolbar'; import { FramesRenderer } from './FramesRenderer'; -import type { PreviewProps } from './utils/types'; +import type { PreviewProps, Wrapper } from './utils/types'; const { FEATURES } = global; -const getWrappers = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.PREVIEW)); -const getTabs = (getFn: API['getElements']) => Object.values(getFn<Addon_BaseType>(types.TAB)); +const getWrappers = (getFn: API['getElements']) => Object.values(getFn(types.PREVIEW)); +const getTabs = (getFn: API['getElements']) => Object.values(getFn(types.TAB)); const canvasMapper = ({ state, api }: Combo) => ({ storyId: state.storyId, @@ -58,7 +57,7 @@ const createCanvas = (id: string, baseUrl = 'iframe.html', withLoader = true): A active, }) => { const wrappers = useMemo( - () => [...defaultWrappers, ...getWrappers(getElements)], + () => [...defaultWrappers, ...getWrappers(getElements)] as Wrapper[], [getElements, ...defaultWrappers] ); @@ -211,7 +210,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { const key = t.id || t.key || i; return ( <Fragment key={key}> - <Location>{(lp) => <Render active={match(lp)} />}</Location> + <Location>{(lp) => <Render key={key} active={match(lp)} />}</Location> </Fragment> ); })} diff --git a/code/ui/manager/src/components/preview/utils/types.tsx b/code/ui/manager/src/components/preview/utils/types.tsx index efe259cc61b1..82bbdffa8d52 100644 --- a/code/ui/manager/src/components/preview/utils/types.tsx +++ b/code/ui/manager/src/components/preview/utils/types.tsx @@ -1,12 +1,10 @@ import type { FunctionComponent, ReactNode } from 'react'; import type { State, API, LeafEntry } from '@storybook/manager-api'; -import type { StoryId } from '@storybook/types'; - -export type ViewMode = State['viewMode']; +import type { API_ViewMode, StoryId } from '@storybook/types'; export interface PreviewProps { api: API; - viewMode: ViewMode; + viewMode: API_ViewMode; refs: State['refs']; storyId: StoryId; entry: LeafEntry; @@ -60,7 +58,7 @@ export interface FramesRendererProps { refId: string; baseUrl: string; scale: number; - viewMode: ViewMode; + viewMode: API_ViewMode; queryParams: State['customQueryParams']; refs: State['refs']; } diff --git a/code/ui/manager/src/components/preview/wrappers.tsx b/code/ui/manager/src/components/preview/wrappers.tsx index 52da844cd01a..769e21427b80 100644 --- a/code/ui/manager/src/components/preview/wrappers.tsx +++ b/code/ui/manager/src/components/preview/wrappers.tsx @@ -1,5 +1,7 @@ import type { FC } from 'react'; import React, { Fragment } from 'react'; +import type { Addon_BaseType } from '@storybook/types'; +import { Addon_TypesEnum } from '@storybook/types'; import type { ApplyWrappersProps, Wrapper } from './utils/types'; import { IframeWrapper } from './utils/components'; @@ -20,12 +22,12 @@ export const ApplyWrappers: FC<ApplyWrappersProps> = ({ ); }; -export const defaultWrappers = [ +export const defaultWrappers: Wrapper[] = [ { render: (p) => ( <IframeWrapper id="storybook-preview-wrapper" hidden={!p.active}> - {p.children} + {(p as any).children} </IframeWrapper> ), - } as Wrapper, + }, ]; From a51e2efc11e8ebfc16b3641366b47e216a82ff37 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 4 Jul 2023 23:23:13 +0200 Subject: [PATCH 028/135] fixes --- code/lib/types/src/modules/addons.ts | 4 ++-- code/ui/manager/src/components/preview/wrappers.tsx | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index c69c8da32997..1af06a8decc9 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -448,7 +448,7 @@ export enum Addon_TypesEnum { */ PANEL = 'panel', /** - * This adds items in the toolbar above the canvas - on the right side. + * This adds items in the toolbar above the canvas - on the left side. */ TOOL = 'tool', /** @@ -457,7 +457,7 @@ export enum Addon_TypesEnum { TOOLEXTRA = 'toolextra', /** * This adds wrapper components around the canvas/iframe component storybook renders. - * @unstable + * @unstable this API is not stable yet, and is likely to change in 8.0. */ PREVIEW = 'preview', /** diff --git a/code/ui/manager/src/components/preview/wrappers.tsx b/code/ui/manager/src/components/preview/wrappers.tsx index 769e21427b80..313c19cce1d5 100644 --- a/code/ui/manager/src/components/preview/wrappers.tsx +++ b/code/ui/manager/src/components/preview/wrappers.tsx @@ -1,7 +1,5 @@ import type { FC } from 'react'; import React, { Fragment } from 'react'; -import type { Addon_BaseType } from '@storybook/types'; -import { Addon_TypesEnum } from '@storybook/types'; import type { ApplyWrappersProps, Wrapper } from './utils/types'; import { IframeWrapper } from './utils/components'; @@ -26,7 +24,7 @@ export const defaultWrappers: Wrapper[] = [ { render: (p) => ( <IframeWrapper id="storybook-preview-wrapper" hidden={!p.active}> - {(p as any).children} + {p.children} </IframeWrapper> ), }, From 82f3a92fc91d1c5bafa4568f98c59a7bf220c0e5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 09:30:17 +0200 Subject: [PATCH 029/135] cleaning up types, make a special case for PREVIEW types addons, because their interface is actually quite different --- code/lib/manager-api/src/lib/addons.ts | 5 +-- code/lib/manager-api/src/modules/addons.ts | 6 +-- code/lib/types/src/modules/addons.ts | 39 ++++++++++++++-- code/lib/types/src/modules/api.ts | 44 ++++++++++++------- .../src/components/preview/preview.tsx | 2 +- 5 files changed, 69 insertions(+), 27 deletions(-) diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index 1819fbff7444..0de5ab6f1132 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -11,6 +11,7 @@ import type { Addon_BaseType, Addon_PageType, Addon_Types, + Addon_TypesMapping, } from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; import { logger } from '@storybook/client-logger'; @@ -97,9 +98,7 @@ export class AddonStore { getElements<T extends Addon_Types | Addon_TypesEnum.experimental_PAGE>( type: T - ): T extends Addon_TypesEnum.experimental_PAGE - ? Addon_Collection<Addon_PageType> - : Addon_Collection<Addon_BaseType> { + ): Addon_Collection<Addon_TypesMapping[T]> { if (!this.elements[type]) { this.elements[type] = {}; } diff --git a/code/lib/manager-api/src/modules/addons.ts b/code/lib/manager-api/src/modules/addons.ts index cfbed62e1b93..95949ed94eb1 100644 --- a/code/lib/manager-api/src/modules/addons.ts +++ b/code/lib/manager-api/src/modules/addons.ts @@ -1,8 +1,8 @@ import type { Addon_BaseType, Addon_Collection, - Addon_PageType, Addon_Types, + Addon_TypesMapping, API_Panels, API_StateMerger, } from '@storybook/types'; @@ -29,9 +29,7 @@ export interface SubAPI { T extends Addon_Types | Addon_TypesEnum.experimental_PAGE = Addon_Types >( type: T - ) => T extends Addon_TypesEnum.experimental_PAGE - ? Addon_Collection<Addon_PageType> - : Addon_Collection<Addon_BaseType>; + ) => Addon_Collection<Addon_TypesMapping[T]>; /** * Returns a collection of all panels. * This is the same as calling getElements('panel') diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 1af06a8decc9..18f2755f5bcf 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -1,6 +1,13 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import type { ReactElement, ReactNode, ValidationMap, WeakValidationMap } from 'react'; +import type { + FC, + PropsWithChildren, + ReactElement, + ReactNode, + ValidationMap, + WeakValidationMap, +} from 'react'; import type { RenderData as RouterData } from '../../../router/src/types'; import type { ThemeVars } from '../../../theming/src/types'; import type { @@ -312,7 +319,7 @@ export type ReactJSXElement = { key: any; }; -export type Addon_Type = Addon_BaseType | Addon_PageType; +export type Addon_Type = Addon_BaseType | Addon_PageType | Addon_WrapperType; export interface Addon_BaseType { /** * The title of the addon. @@ -323,7 +330,7 @@ export interface Addon_BaseType { * The type of the addon. * @example Addon_TypesEnum.PANEL */ - type: Addon_Types; + type: Exclude<Addon_Types, Addon_TypesEnum.PREVIEW>; /** * The unique id of the addon. * @warn This will become non-optional in 8.0 @@ -353,7 +360,7 @@ export interface Addon_BaseType { * This is called as a function, so if you want to use hooks, * your function needs to return a JSX.Element within which components are rendered */ - render: (renderOptions: Addon_RenderOptions) => ReactElement<any, any> | null; + render: (renderOptions: Partial<Addon_RenderOptions>) => ReactElement<any, any> | null; /** * @unstable */ @@ -415,6 +422,30 @@ export interface Addon_PageType { render: FCWithoutChildren; } +export interface Addon_WrapperType { + type: Addon_TypesEnum.PREVIEW; + /** + * The unique id of the page. + */ + id: string; + /** + * A React.FunctionComponent that wraps the story. + * + * This component must accept a children prop, and render it. + */ + render: FC<PropsWithChildren<{}>>; +} + +type Addon_TypeBaseNames = Exclude< + Addon_TypesEnum, + Addon_TypesEnum.PREVIEW | Addon_TypesEnum.experimental_PAGE +>; + +export interface Addon_TypesMapping extends Record<Addon_TypeBaseNames, Addon_BaseType> { + [Addon_TypesEnum.PREVIEW]: Addon_WrapperType; + [Addon_TypesEnum.experimental_PAGE]: Addon_PageType; +} + export type Addon_Loader<API> = (api: API) => void; export interface Addon_Loaders<API> { diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index 029bfb50bee9..ae539d81dfe4 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -1,12 +1,13 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import type { FC } from 'react'; import type { RenderData } from '../../../router/src/types'; import type { Channel } from '../../../channels/src'; import type { ThemeVars } from '../../../theming/src/types'; import type { DocsOptions } from './core-common'; import type { API_HashEntry, API_IndexHash } from './api-stories'; import type { SetStoriesStory, SetStoriesStoryData } from './channelApi'; -import type { Addon_Collection, Addon_RenderOptions, Addon_Type } from './addons'; +import type { Addon_BaseType, Addon_Collection, Addon_RenderOptions, Addon_Type } from './addons'; import type { StoryIndex } from './storyIndex'; type OrString<T extends string> = T | (string & {}); @@ -28,11 +29,20 @@ export interface API_MatchOptions { path: string; } +/** + * @deprecated this is synonymous with `Addon_Type`. This interface will be removed in 8.0 + */ export type API_Addon = Addon_Type; +/** + * @deprecated this is synonymous with `Addon_Collection`. This interface will be removed in 8.0 + */ export type API_Collection<T = Addon_Type> = Addon_Collection<T>; -export type API_Panels = Addon_Collection<Addon_Type>; +/** + * @deprecated This interface will be removed in 8.0 + */ +export type API_Panels = Addon_Collection<Addon_BaseType>; export type API_StateMerger<S> = (input: S) => S; @@ -58,14 +68,14 @@ export interface API_Provider<API> { [key: string]: any; } -export type API_IframeRenderer = ( - storyId: string, - viewMode: API_ViewMode, - id: string, - baseUrl: string, - scale: number, - queryParams: Record<string, any> -) => any; +export type API_IframeRenderer = FC<{ + storyId: string; + viewMode: API_ViewMode; + id: string; + baseUrl: string; + scale: number; + queryParams: Record<string, any>; +}>; export interface API_UIOptions { name?: string; @@ -87,7 +97,7 @@ export interface API_Layout { showTabs: boolean; showToolbar: boolean; /** - * @deprecated + * @deprecated, will be removed in 8.0 - this API no longer works */ isToolshown?: boolean; } @@ -107,6 +117,13 @@ export interface API_SidebarOptions { renderLabel?: (item: API_HashEntry) => any; } +interface OnClearOptions { + /** + * True when the user dismissed the notification. + */ + dismissed: boolean; +} + export interface API_Notification { id: string; link: string; @@ -114,14 +131,11 @@ export interface API_Notification { headline: string; subHeadline?: string | any; }; - icon?: { name: string; color?: string; }; - onClear?: (options: { - /** True when the user dismissed the notification. */ dismissed: boolean; - }) => void; + onClear?: (options: OnClearOptions) => void; } type API_Versions = Record<string, string>; diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index e9d26fce284a..ac65fbfaffd4 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -210,7 +210,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { const key = t.id || t.key || i; return ( <Fragment key={key}> - <Location>{(lp) => <Render key={key} active={match(lp)} />}</Location> + <Location>{(lp) => <Render active={match(lp)} />}</Location> </Fragment> ); })} From ce322dea7c314489e2872f02da050be895dddaf9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 09:36:33 +0200 Subject: [PATCH 030/135] miniscule improvements in jsdoc/types --- code/lib/manager-api/src/modules/addons.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/manager-api/src/modules/addons.ts b/code/lib/manager-api/src/modules/addons.ts index 95949ed94eb1..75025f9e02f3 100644 --- a/code/lib/manager-api/src/modules/addons.ts +++ b/code/lib/manager-api/src/modules/addons.ts @@ -19,7 +19,7 @@ export interface SubAPI { /** * Returns a collection of elements of a specific type. * @protected This is used internally in storybook's manager. - * @template FAKE - The type of the elements in the collection. + * @template FAKE - LEGACY for backwards compatibility, should be removed in 8.0. * @template T - The type of the elements in the collection. * @param {Addon_Types | Addon_TypesEnum.experimental_PAGE} type - The type of the elements to retrieve. * @returns {API_Collection<T>} - A collection of elements of the specified type. @@ -60,7 +60,7 @@ export interface SubAPI { * Sets the state of an addon with the given ID. * @template S - The type of the addon state. * @param {string} addonId - The ID of the addon to set the state for. - * @param {S | API_StateMerger<S>} newStateOrMerger - The new state to set, or a function that merges the current state with the new state. + * @param {S | API_StateMerger<S>} newStateOrMerger - The new state to set, or a function which receives the current state and returns the new state. * @param {Options} [options] - Optional options for the state update. * @deprecated This API might get dropped, if you are using this, please file an issue. * @returns {Promise<S>} - A promise that resolves with the new state after it has been set. From fe2ac2fd3100a8b2cd7f00df764989864e262aa9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 11:00:37 +0200 Subject: [PATCH 031/135] overhaul addon types a bit more, make type for preview wrapper correct. I verified they actually work, as well as custom tabs --- code/lib/manager-api/src/lib/addons.ts | 6 +- code/lib/types/src/modules/addons.ts | 11 +- code/lib/types/src/modules/api.ts | 16 +- .../src/components/preview/preview.tsx | 205 +++++++++--------- .../src/components/preview/utils/types.tsx | 20 +- .../src/components/preview/wrappers.tsx | 12 +- 6 files changed, 137 insertions(+), 133 deletions(-) diff --git a/code/lib/manager-api/src/lib/addons.ts b/code/lib/manager-api/src/lib/addons.ts index 0de5ab6f1132..abaf7101d5a0 100644 --- a/code/lib/manager-api/src/lib/addons.ts +++ b/code/lib/manager-api/src/lib/addons.ts @@ -12,6 +12,7 @@ import type { Addon_PageType, Addon_Types, Addon_TypesMapping, + Addon_WrapperType, } from '@storybook/types'; import { Addon_TypesEnum } from '@storybook/types'; import { logger } from '@storybook/client-logger'; @@ -138,7 +139,10 @@ export class AddonStore { */ add( id: string, - addon: Addon_BaseType | (Omit<Addon_PageType, 'id'> & DeprecatedAddonWithId) + addon: + | Addon_BaseType + | (Omit<Addon_PageType, 'id'> & DeprecatedAddonWithId) + | (Omit<Addon_WrapperType, 'id'> & DeprecatedAddonWithId) ): void { const { type } = addon; const collection = this.getElements(type); diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 18f2755f5bcf..379b99fa93fb 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -10,6 +10,7 @@ import type { } from 'react'; import type { RenderData as RouterData } from '../../../router/src/types'; import type { ThemeVars } from '../../../theming/src/types'; +import type { API_ViewMode } from './api'; import type { Args, ArgsStoryFn as ArgsStoryFnForFramework, @@ -433,7 +434,15 @@ export interface Addon_WrapperType { * * This component must accept a children prop, and render it. */ - render: FC<PropsWithChildren<{}>>; + render: FC< + PropsWithChildren<{ + index: number; + children: ReactNode; + id: string; + storyId: StoryId; + active: boolean; + }> + >; } type Addon_TypeBaseNames = Exclude< diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index ae539d81dfe4..402514a2baff 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -68,14 +68,14 @@ export interface API_Provider<API> { [key: string]: any; } -export type API_IframeRenderer = FC<{ - storyId: string; - viewMode: API_ViewMode; - id: string; - baseUrl: string; - scale: number; - queryParams: Record<string, any>; -}>; +export type API_IframeRenderer = ( + storyId: string, + viewMode: API_ViewMode, + id: string, + baseUrl: string, + scale: number, + queryParams: Record<string, any> +) => React.ReactElement<any, any> | null; export interface API_UIOptions { name?: string; diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index ac65fbfaffd4..57572a3949dd 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -1,9 +1,10 @@ +import type { FC } from 'react'; import React, { Fragment, useMemo, useEffect, useRef, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { global } from '@storybook/global'; import { type API, Consumer, type Combo, merge, addons, types } from '@storybook/manager-api'; -import { type Addon_BaseType } from '@storybook/types'; +import type { Addon_BaseType } from '@storybook/types'; import { PREVIEW_BUILDER_PROGRESS, SET_CURRENT_STORY } from '@storybook/core-events'; import { Loader } from '@storybook/components'; @@ -15,7 +16,7 @@ import { defaultWrappers, ApplyWrappers } from './wrappers'; import { ToolbarComp } from './toolbar'; import { FramesRenderer } from './FramesRenderer'; -import type { PreviewProps, Wrapper } from './utils/types'; +import type { PreviewProps } from './utils/types'; const { FEATURES } = global; @@ -35,118 +36,26 @@ const canvasMapper = ({ state, api }: Combo) => ({ active: !!(state.viewMode && state.viewMode.match(/^(story|docs)$/)), }); -const createCanvas = (id: string, baseUrl = 'iframe.html', withLoader = true): Addon_BaseType => ({ +const createCanvasTab = (): Addon_BaseType => ({ id: 'canvas', - type: types.PREVIEW, + type: types.TAB, title: 'Canvas', route: ({ storyId, refId }) => (refId ? `/story/${refId}_${storyId}` : `/story/${storyId}`), match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), - render: () => { - return ( - <Consumer filter={canvasMapper}> - {({ - entry, - refs, - customCanvas, - storyId, - refId, - viewMode, - queryParams, - getElements, - previewInitialized, - active, - }) => { - const wrappers = useMemo( - () => [...defaultWrappers, ...getWrappers(getElements)] as Wrapper[], - [getElements, ...defaultWrappers] - ); - - const [progress, setProgress] = useState(undefined); - useEffect(() => { - if (FEATURES?.storyStoreV7 && global.CONFIG_TYPE === 'DEVELOPMENT') { - try { - const channel = addons.getServerChannel(); - - channel.on(PREVIEW_BUILDER_PROGRESS, (options) => { - setProgress(options); - }); - } catch { - // - } - } - }, []); - // A ref simply depends on its readiness - const refLoading = !!refs[refId] && !refs[refId].previewInitialized; - // The root also might need to wait on webpack - const isBuilding = !(progress?.value === 1 || progress === undefined); - const rootLoading = !refId && (!previewInitialized || isBuilding); - const isLoading = entry ? refLoading || rootLoading : rootLoading; - - return ( - <ZoomConsumer> - {({ value: scale }) => { - return ( - <> - {withLoader && isLoading && ( - <S.LoaderWrapper> - <Loader id="preview-loader" role="progressbar" progress={progress} /> - </S.LoaderWrapper> - )} - <ApplyWrappers - id={id} - storyId={storyId} - viewMode={viewMode} - active={active} - wrappers={wrappers} - > - {customCanvas ? ( - customCanvas(storyId, viewMode, id, baseUrl, scale, queryParams) - ) : ( - <FramesRenderer - baseUrl={baseUrl} - refs={refs} - scale={scale} - entry={entry} - viewMode={viewMode} - refId={refId} - queryParams={queryParams} - storyId={storyId} - /> - )} - </ApplyWrappers> - </> - ); - }} - </ZoomConsumer> - ); - }} - </Consumer> - ); - }, + render: () => null, }); -const useTabs = ( - id: PreviewProps['id'], - baseUrl: PreviewProps['baseUrl'], - withLoader: PreviewProps['withLoader'], - getElements: API['getElements'], - entry: PreviewProps['entry'] -) => { - const canvas = useMemo(() => { - return createCanvas(id, baseUrl, withLoader); - }, [id, baseUrl, withLoader]); - - const tabsFromConfig = useMemo(() => { - return getTabs(getElements); - }, [getElements]); +const useTabs = (getElements: API['getElements'], entry: PreviewProps['entry']) => { + const canvasTab = useMemo(() => createCanvasTab(), []); + const tabsFromConfig = useMemo(() => getTabs(getElements), [getElements]); return useMemo(() => { if (entry?.type === 'story' && entry.parameters) { - return filterTabs([canvas, ...tabsFromConfig], entry.parameters); + return filterTabs([canvasTab, ...tabsFromConfig], entry.parameters); } - return [canvas, ...tabsFromConfig]; - }, [entry, canvas, ...tabsFromConfig]); + return [canvasTab, ...tabsFromConfig]; + }, [entry, ...tabsFromConfig]); }; const Preview = React.memo<PreviewProps>(function Preview(props) { @@ -163,7 +72,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { } = props; const { getElements } = api; - const tabs = useTabs(previewId, baseUrl, withLoader, getElements, entry); + const tabs = useTabs(getElements, entry); const shouldScale = viewMode === 'story'; const { showToolbar, showTabs = true } = options; @@ -205,6 +114,7 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { tabs={visibleTabsInToolbar} /> <S.FrameWrap key="frame" offset={showToolbar ? 40 : 0}> + <Canvas {...{ withLoader, baseUrl }} /> {tabs.map(({ render: Render, match, ...t }, i) => { // @ts-expect-error (Converted from ts-ignore) const key = t.id || t.key || i; @@ -222,6 +132,93 @@ const Preview = React.memo<PreviewProps>(function Preview(props) { export { Preview }; +const Canvas: FC<{ withLoader: boolean; baseUrl: string; children?: never }> = ({ + baseUrl, + withLoader, +}) => { + return ( + <Consumer filter={canvasMapper}> + {({ + entry, + refs, + customCanvas, + storyId, + refId, + viewMode, + queryParams, + getElements, + previewInitialized, + active, + }) => { + const id = 'canvas'; + const wrappers = useMemo( + () => [...defaultWrappers, ...getWrappers(getElements)], + [getElements, ...defaultWrappers] + ); + + const [progress, setProgress] = useState(undefined); + useEffect(() => { + if (FEATURES?.storyStoreV7 && global.CONFIG_TYPE === 'DEVELOPMENT') { + try { + const channel = addons.getServerChannel(); + + channel.on(PREVIEW_BUILDER_PROGRESS, (options) => { + setProgress(options); + }); + } catch { + // + } + } + }, []); + // A ref simply depends on its readiness + const refLoading = !!refs[refId] && !refs[refId].previewInitialized; + // The root also might need to wait on webpack + const isBuilding = !(progress?.value === 1 || progress === undefined); + const rootLoading = !refId && (!previewInitialized || isBuilding); + const isLoading = entry ? refLoading || rootLoading : rootLoading; + + return ( + <ZoomConsumer> + {({ value: scale }) => { + return ( + <> + {withLoader && isLoading && ( + <S.LoaderWrapper> + <Loader id="preview-loader" role="progressbar" progress={progress} /> + </S.LoaderWrapper> + )} + <ApplyWrappers + id={id} + storyId={storyId} + viewMode={viewMode} + active={active} + wrappers={wrappers} + > + {customCanvas ? ( + customCanvas(storyId, viewMode, id, baseUrl, scale, queryParams) + ) : ( + <FramesRenderer + baseUrl={baseUrl} + refs={refs} + scale={scale} + entry={entry} + viewMode={viewMode} + refId={refId} + queryParams={queryParams} + storyId={storyId} + /> + )} + </ApplyWrappers> + </> + ); + }} + </ZoomConsumer> + ); + }} + </Consumer> + ); +}; + function filterTabs(panels: Addon_BaseType[], parameters: Record<string, any>) { const { previewTabs } = addons.getConfig(); const parametersTabs = parameters ? parameters.previewTabs : undefined; diff --git a/code/ui/manager/src/components/preview/utils/types.tsx b/code/ui/manager/src/components/preview/utils/types.tsx index 82bbdffa8d52..9d8158514864 100644 --- a/code/ui/manager/src/components/preview/utils/types.tsx +++ b/code/ui/manager/src/components/preview/utils/types.tsx @@ -1,6 +1,6 @@ -import type { FunctionComponent, ReactNode } from 'react'; +import type { ReactElement } from 'react'; import type { State, API, LeafEntry } from '@storybook/manager-api'; -import type { API_ViewMode, StoryId } from '@storybook/types'; +import type { Addon_WrapperType, API_ViewMode, StoryId } from '@storybook/types'; export interface PreviewProps { api: API; @@ -23,20 +23,8 @@ export interface PreviewProps { withLoader: boolean; } -export interface WrapperProps { - index: number; - children: ReactNode; - id: string; - storyId: StoryId; - active: boolean; -} - -export interface Wrapper { - render: FunctionComponent<WrapperProps>; -} - export interface ApplyWrappersProps { - wrappers: Wrapper[]; + wrappers: Addon_WrapperType[]; viewMode: State['viewMode']; id: string; storyId: StoryId; @@ -50,7 +38,7 @@ export type CustomCanvasRenderer = ( baseUrl: string, scale: number, queryParams: Record<string, any> -) => ReactNode; +) => ReactElement<any, any> | null; export interface FramesRendererProps { entry: LeafEntry; diff --git a/code/ui/manager/src/components/preview/wrappers.tsx b/code/ui/manager/src/components/preview/wrappers.tsx index 313c19cce1d5..a88404e6d515 100644 --- a/code/ui/manager/src/components/preview/wrappers.tsx +++ b/code/ui/manager/src/components/preview/wrappers.tsx @@ -1,6 +1,8 @@ import type { FC } from 'react'; import React, { Fragment } from 'react'; -import type { ApplyWrappersProps, Wrapper } from './utils/types'; +import type { Addon_WrapperType } from '@storybook/types'; +import { Addon_TypesEnum } from '@storybook/types'; +import type { ApplyWrappersProps } from './utils/types'; import { IframeWrapper } from './utils/components'; export const ApplyWrappers: FC<ApplyWrappersProps> = ({ @@ -13,15 +15,19 @@ export const ApplyWrappers: FC<ApplyWrappersProps> = ({ return ( <Fragment> {wrappers.reduceRight( - (acc, wrapper, index) => wrapper.render({ index, children: acc, id, storyId, active }), + (acc, wrapper, index) => ( + <wrapper.render {...{ index, children: acc, id, storyId, active }} /> + ), children )} </Fragment> ); }; -export const defaultWrappers: Wrapper[] = [ +export const defaultWrappers: Addon_WrapperType[] = [ { + id: 'iframe-wrapper', + type: Addon_TypesEnum.PREVIEW, render: (p) => ( <IframeWrapper id="storybook-preview-wrapper" hidden={!p.active}> {p.children} From fac7c0c5d41588ae17b050bfa3d3964bd3f461d5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 11:26:01 +0200 Subject: [PATCH 032/135] cleanup --- code/lib/types/src/modules/addons.ts | 1 - code/lib/types/src/modules/api.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 379b99fa93fb..574bda07f992 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -10,7 +10,6 @@ import type { } from 'react'; import type { RenderData as RouterData } from '../../../router/src/types'; import type { ThemeVars } from '../../../theming/src/types'; -import type { API_ViewMode } from './api'; import type { Args, ArgsStoryFn as ArgsStoryFnForFramework, diff --git a/code/lib/types/src/modules/api.ts b/code/lib/types/src/modules/api.ts index 402514a2baff..6bf5777ae825 100644 --- a/code/lib/types/src/modules/api.ts +++ b/code/lib/types/src/modules/api.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import type { FC } from 'react'; import type { RenderData } from '../../../router/src/types'; import type { Channel } from '../../../channels/src'; import type { ThemeVars } from '../../../theming/src/types'; From d39674f5647a9f089ec62629ad2121a0bce9094a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 12:09:35 +0200 Subject: [PATCH 033/135] fixes --- code/addons/a11y/src/manager.test.tsx | 13 +++++++------ code/ui/manager/src/components/panel/panel.tsx | 8 ++++---- code/ui/manager/src/components/preview/toolbar.tsx | 7 ++----- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code/addons/a11y/src/manager.test.tsx b/code/addons/a11y/src/manager.test.tsx index 0372c567f209..dd6d4a092c1d 100644 --- a/code/addons/a11y/src/manager.test.tsx +++ b/code/addons/a11y/src/manager.test.tsx @@ -1,4 +1,5 @@ import * as api from '@storybook/manager-api'; +import type { Addon_BaseType } from '@storybook/types'; import { PANEL_ID } from './constants'; import './manager'; @@ -8,6 +9,8 @@ mockedApi.getAddonState = jest.fn(); const mockedAddons = api.addons as jest.Mocked<typeof api.addons>; const registrationImpl = mockedAddons.register.mock.calls[0][1]; +const isPanel = (input: Parameters<typeof mockedAddons.add>[1]): input is Addon_BaseType => + input.type === api.types.PANEL; describe('A11yManager', () => { it('should register the panels', () => { // when @@ -31,9 +34,8 @@ describe('A11yManager', () => { // given mockedApi.getAddonState.mockImplementation(() => undefined); registrationImpl(api as unknown as api.API); - const title = mockedAddons.add.mock.calls - .map(([_, def]) => def) - .find(({ type }) => type === api.types.PANEL)?.title as Function; + const title = mockedAddons.add.mock.calls.map(([_, def]) => def).find(isPanel) + ?.title as Function; // when / then expect(title()).toBe('Accessibility'); @@ -43,9 +45,8 @@ describe('A11yManager', () => { // given mockedApi.getAddonState.mockImplementation(() => ({ violations: [{}], incomplete: [{}, {}] })); registrationImpl(mockedApi); - const title = mockedAddons.add.mock.calls - .map(([_, def]) => def) - .find(({ type }) => type === api.types.PANEL)?.title as Function; + const title = mockedAddons.add.mock.calls.map(([_, def]) => def).find(isPanel) + ?.title as Function; // when / then expect(title()).toBe('Accessibility (3)'); diff --git a/code/ui/manager/src/components/panel/panel.tsx b/code/ui/manager/src/components/panel/panel.tsx index 90496e38b7a6..6abcce50f0e9 100644 --- a/code/ui/manager/src/components/panel/panel.tsx +++ b/code/ui/manager/src/components/panel/panel.tsx @@ -2,13 +2,13 @@ import React, { Component, Fragment } from 'react'; import { Tabs, Icons, IconButton } from '@storybook/components'; import type { State } from '@storybook/manager-api'; import { shortcutToHumanString } from '@storybook/manager-api'; -import type { Addon_Type } from '@storybook/types'; +import type { Addon_BaseType } from '@storybook/types'; import useMediaQuery from '../hooks/useMedia'; export interface SafeTabProps { - title: Addon_Type['title']; + title: Addon_BaseType['title']; id: string; - children: Addon_Type['render']; + children: Addon_BaseType['render']; } class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { @@ -36,7 +36,7 @@ class SafeTab extends Component<SafeTabProps, { hasError: boolean }> { const AddonPanel = React.memo<{ selectedPanel?: string; actions: { onSelect: (id: string) => void } & Record<string, any>; - panels: Record<string, Addon_Type>; + panels: Record<string, Addon_BaseType>; shortcuts: State['shortcuts']; panelPosition?: 'bottom' | 'right'; absolute?: boolean; diff --git a/code/ui/manager/src/components/preview/toolbar.tsx b/code/ui/manager/src/components/preview/toolbar.tsx index c4425bcc982c..b82e5cb2eb38 100644 --- a/code/ui/manager/src/components/preview/toolbar.tsx +++ b/code/ui/manager/src/components/preview/toolbar.tsx @@ -29,11 +29,8 @@ import { menuTool } from './tools/menu'; import { addonsTool } from './tools/addons'; import { remountTool } from './tools/remount'; -export const getTools = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.TOOL)); - -export const getToolsExtra = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.TOOLEXTRA)); +export const getTools = (getFn: API['getElements']) => Object.values(getFn(types.TOOL)); +export const getToolsExtra = (getFn: API['getElements']) => Object.values(getFn(types.TOOLEXTRA)); const Bar: FunctionComponent<{ shown: boolean } & Record<string, any>> = ({ shown, ...props }) => ( <FlexBar {...props} /> From 2d6592e911fddc62b7f9d6d1fb0578009cb8a3dc Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 12:57:57 +0200 Subject: [PATCH 034/135] restructure the LeadNode in Sidebar to allow for extra items --- .../manager/src/components/sidebar/Tree.tsx | 41 +++++++++++++++---- .../src/components/sidebar/TreeNode.tsx | 15 ------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index cd4c1d354bb1..a0086720e3d5 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -106,22 +106,47 @@ const CollapseButton = styled.button(({ theme }) => ({ const LeafNodeStyleWrapper = styled.div(({ theme }) => ({ position: 'relative', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + paddingRight: 20, + + color: theme.color.defaultText, + background: 'transparent', + '&:hover, &:focus': { + outline: 'none', + background: theme.background.hoverable, + }, + '&[data-selected="true"]': { + color: theme.color.lightest, + background: theme.color.secondary, + fontWeight: theme.typography.weight.bold, + '&:hover, &:focus': { + background: theme.color.secondary, + }, + svg: { color: theme.color.lightest }, + }, + a: { color: 'currentColor' }, })); const SkipToContentLink = styled(Button)(({ theme }) => ({ display: 'none', '@media (min-width: 600px)': { display: 'block', - zIndex: -1, - position: 'absolute', - top: 1, - right: 20, - height: '20px', fontSize: '10px', - padding: '5px 10px', + overflow: 'hidden', + width: 1, + height: '20px', + boxSizing: 'border-box', + opacity: 0, + padding: 0, + '&:focus': { + opacity: 1, + padding: '5px 10px', background: 'white', - zIndex: 1, + color: theme.color.secondary, + width: 'auto', }, }, })); @@ -160,7 +185,7 @@ const Node = React.memo<NodeProps>(function Node({ if (item.type === 'story' || item.type === 'docs') { const LeafNode = item.type === 'docs' ? DocumentNode : StoryNode; return ( - <LeafNodeStyleWrapper> + <LeafNodeStyleWrapper data-selected={isSelected}> <LeafNode key={id} id={id} diff --git a/code/ui/manager/src/components/sidebar/TreeNode.tsx b/code/ui/manager/src/components/sidebar/TreeNode.tsx index f71c7c0e9202..b14ce31ce8eb 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.tsx @@ -88,21 +88,6 @@ const LeafNode = styled.a<{ depth?: number }>(({ theme, depth = 0 }) => ({ paddingLeft: `${18 + depth * 16}px`, fontSize: `${theme.typography.size.s2 - 1}px`, textDecoration: 'none', - color: theme.color.defaultText, - background: 'transparent', - '&:hover, &:focus': { - outline: 'none', - background: theme.background.hoverable, - }, - '&[data-selected="true"]': { - color: theme.color.lightest, - background: theme.color.secondary, - fontWeight: theme.typography.weight.bold, - '&:hover, &:focus': { - background: theme.color.secondary, - }, - svg: { color: theme.color.lightest }, - }, })); export const Path = styled.span(({ theme }) => ({ From 7050fff5a8a35409f1cd4e769f43146f11b09800 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 15:26:18 +0200 Subject: [PATCH 035/135] pass status into Tree Nodes --- .../ui/manager/src/components/sidebar/Refs.tsx | 6 +++++- .../manager/src/components/sidebar/Sidebar.tsx | 9 +++++++-- .../ui/manager/src/components/sidebar/Tree.tsx | 18 ++++++++++++++++-- code/ui/manager/src/containers/sidebar.tsx | 2 ++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Refs.tsx b/code/ui/manager/src/components/sidebar/Refs.tsx index b2c69b27f99c..8b1ea0f31c8a 100644 --- a/code/ui/manager/src/components/sidebar/Refs.tsx +++ b/code/ui/manager/src/components/sidebar/Refs.tsx @@ -1,5 +1,6 @@ import type { FC, MutableRefObject } from 'react'; import React, { useMemo, useState, useRef, useCallback } from 'react'; +import type { State } from '@storybook/manager-api'; import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { transparentize } from 'polished'; @@ -95,7 +96,9 @@ const CollapseButton = styled.button(({ theme }) => ({ }, })); -export const Ref: FC<RefType & RefProps> = React.memo(function Ref(props) { +export const Ref: FC<RefType & RefProps & { status?: State['status'] }> = React.memo(function Ref( + props +) { const { docsOptions } = useStorybookState(); const api = useStorybookApi(); const { @@ -161,6 +164,7 @@ export const Ref: FC<RefType & RefProps> = React.memo(function Ref(props) { {state === 'empty' && <EmptyBlock isMain={isMain} />} {state === 'ready' && ( <Tree + status={props.status} isBrowsing={isBrowsing} isMain={isMain} refId={refId} diff --git a/code/ui/manager/src/components/sidebar/Sidebar.tsx b/code/ui/manager/src/components/sidebar/Sidebar.tsx index e6d8ba1ca285..37dfe408cd8e 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.tsx @@ -59,7 +59,10 @@ const Swap = React.memo(function Swap({ ); }); -const useCombination = (defaultRefData: API_LoadedRefData, refs: Refs): CombinedDataset => { +const useCombination = ( + defaultRefData: API_LoadedRefData & { status: State['status'] }, + refs: Refs +): CombinedDataset => { const hash = useMemo( () => ({ [DEFAULT_REF_ID]: { @@ -77,6 +80,7 @@ const useCombination = (defaultRefData: API_LoadedRefData, refs: Refs): Combined export interface SidebarProps extends API_LoadedRefData { refs: State['refs']; + status: State['status']; menu: any[]; storyId?: string; refId?: string; @@ -89,6 +93,7 @@ export const Sidebar = React.memo(function Sidebar({ refId = DEFAULT_REF_ID, index, indexError, + status, previewInitialized, menu, menuHighlighted = false, @@ -97,7 +102,7 @@ export const Sidebar = React.memo(function Sidebar({ }: SidebarProps) { const selected: Selection = useMemo(() => storyId && { storyId, refId }, [storyId, refId]); - const dataset = useCombination({ index, indexError, previewInitialized }, refs); + const dataset = useCombination({ index, indexError, previewInitialized, status }, refs); const isLoading = !index && !indexError; const lastViewedProps = useLastViewed(selected); diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index a0086720e3d5..d3eff4311fc3 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -1,5 +1,12 @@ -import { useStorybookApi } from '@storybook/manager-api'; -import type { StoriesHash, GroupEntry, ComponentEntry, StoryEntry } from '@storybook/manager-api'; +import { Consumer, useStorybookApi } from '@storybook/manager-api'; +import type { + StoriesHash, + GroupEntry, + ComponentEntry, + StoryEntry, + Combo, + State, +} from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { Button, Icons } from '@storybook/components'; import { transparentize } from 'polished'; @@ -163,10 +170,12 @@ interface NodeProps { setExpanded: (action: ExpandAction) => void; setFullyExpanded?: () => void; onSelectStoryId: (itemId: string) => void; + status: State['status'][keyof State['status']]; } const Node = React.memo<NodeProps>(function Node({ item, + status, refId, docsMode, isOrphan, @@ -184,6 +193,7 @@ const Node = React.memo<NodeProps>(function Node({ const id = createId(item.id, refId); if (item.type === 'story' || item.type === 'docs') { const LeafNode = item.type === 'docs' ? DocumentNode : StoryNode; + return ( <LeafNodeStyleWrapper data-selected={isSelected}> <LeafNode @@ -211,6 +221,7 @@ const Node = React.memo<NodeProps>(function Node({ Skip to canvas </SkipToContentLink> )} + {status ? <Icons icon="add" /> : null} </LeafNodeStyleWrapper> ); } @@ -320,6 +331,7 @@ const Container = styled.div<{ hasOrphans: boolean }>((props) => ({ export const Tree = React.memo<{ isBrowsing: boolean; isMain: boolean; + status?: State['status']; refId: string; data: StoriesHash; docsMode: boolean; @@ -332,6 +344,7 @@ export const Tree = React.memo<{ isMain, refId, data, + status, docsMode, highlightedRef, setHighlightedItemId, @@ -471,6 +484,7 @@ export const Tree = React.memo<{ <Node key={id} item={item} + status={status?.[itemId]} refId={refId} docsMode={docsMode} isOrphan={orphanIds.some((oid) => itemId === oid || itemId.startsWith(`${oid}-`))} diff --git a/code/ui/manager/src/containers/sidebar.tsx b/code/ui/manager/src/containers/sidebar.tsx index 6a9b606e2db4..1d351a1713bb 100755 --- a/code/ui/manager/src/containers/sidebar.tsx +++ b/code/ui/manager/src/containers/sidebar.tsx @@ -18,6 +18,7 @@ const Sidebar = React.memo(function Sideber() { refId, layout: { showToolbar, isFullscreen, showPanel, showNav }, index, + status, indexError, previewInitialized, refs, @@ -38,6 +39,7 @@ const Sidebar = React.memo(function Sideber() { url, index, indexError, + status, previewInitialized, refs, storyId, From 5e6d4cf685d877f61bf05b5c5a7b18b0fef7480f Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 18:24:38 +0200 Subject: [PATCH 036/135] improve stories --- .../src/components/sidebar/Tree.stories.tsx | 342 +++++++++++------- 1 file changed, 209 insertions(+), 133 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Tree.stories.tsx b/code/ui/manager/src/components/sidebar/Tree.stories.tsx index 807b861cccf2..4eeb4f4fdf8a 100644 --- a/code/ui/manager/src/components/sidebar/Tree.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.stories.tsx @@ -1,161 +1,237 @@ -/* eslint-disable storybook/use-storybook-testing-library */ // @TODO: use addon-interactions and remove the rule disable above import React from 'react'; import type { ComponentEntry, IndexHash } from '@storybook/manager-api'; -import { screen } from '@testing-library/dom'; +import { action } from '@storybook/addon-actions'; +import type { StoryObj, Meta } from '@storybook/react'; +import { within } from '@storybook/testing-library'; + +import { expect } from '@storybook/jest'; import { Tree } from './Tree'; import { index } from './mockdata.large'; import { DEFAULT_REF_ID } from './Sidebar'; -export default { +const customViewports = { + sized: { + name: 'Sized', + styles: { + width: '380px', + height: '90%', + }, + }, +}; + +const meta = { component: Tree, title: 'Sidebar/Tree', excludeStories: /.*Data$/, - parameters: { layout: 'fullscreen', withSymbols: true }, - decorators: [(storyFn: any) => <div style={{ maxWidth: '230px' }}>{storyFn()}</div>], -}; - -const refId = DEFAULT_REF_ID; -const storyId = Object.values(index).find((story) => story.type === 'story').id; + parameters: { + layout: 'fullscreen', + withSymbols: true, + theme: 'light', + viewport: { + defaultViewport: 'sized', + viewports: customViewports, + }, + chromatic: { viewports: [380] }, + }, +} as Meta<typeof Tree>; -const log = (id: string) => console.log(id); +export default meta; -export const Full = () => { - const [selectedId, setSelectedId] = React.useState(storyId); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={index} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); -}; +const storyId = Object.values(index).find((story) => story.type === 'story').id; -const tooltipStories = Object.keys(index).reduce((acc, key) => { - if (key === 'tooltip-tooltipselect--default') { - acc['tooltip-tooltipselect--tooltipselect'] = { - ...index[key], - id: 'tooltip-tooltipselect--tooltipselect', - name: 'TooltipSelect', - }; - return acc; - } - if (key === 'tooltip-tooltipselect') { - acc[key] = { - ...(index[key] as ComponentEntry), - children: ['tooltip-tooltipselect--tooltipselect'], - }; - return acc; - } - if (key.startsWith('tooltip')) acc[key] = index[key]; - return acc; -}, {} as IndexHash); +type Story = StoryObj<typeof meta>; -const singleStoryComponent: IndexHash = { - // @ts-expect-error (invalid input) - single: { - type: 'component', - name: 'Single', - id: 'single', - parent: null, - depth: 0, - children: ['single--single'], - renderLabel: () => <span>🔥 Single</span>, +export const Full: Story = { + args: { + docsMode: false, + isBrowsing: true, + isMain: true, + refId: DEFAULT_REF_ID, + setHighlightedItemId: action('setHighlightedItemId'), }, - // @ts-expect-error (invalid input) - 'single--single': { - type: 'story', - id: 'single--single', - title: 'Single', - name: 'Single', - prepared: true, - args: {}, - argTypes: {}, - initialArgs: {}, - depth: 1, - parent: 'single', - renderLabel: () => <span>🔥 Single</span>, - importPath: './single.stories.js', + render: (args) => { + const [selectedId, setSelectedId] = React.useState(storyId); + return ( + <Tree + {...args} + data={index} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + /> + ); }, }; -export const SingleStoryComponents = () => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={{ ...singleStoryComponent, ...tooltipStories }} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); +export const Dark: Story = { + ...Full, + parameters: { theme: 'dark' }, }; -const docsOnlySinglesStoryComponent: IndexHash = { - // @ts-expect-error (invalid input) - single: { - type: 'component', - name: 'Single', - id: 'single', - parent: null, - depth: 0, - children: ['single--docs'], +export const SingleStoryComponents: Story = { + args: { + docsMode: false, + isBrowsing: true, + isMain: true, + refId: DEFAULT_REF_ID, + setHighlightedItemId: action('setHighlightedItemId'), }, - // @ts-expect-error (invalid input) - 'single--docs': { - type: 'docs', - id: 'single--docs', - title: 'Single', - name: 'Single', - depth: 1, - parent: 'single', - importPath: './single.stories.js', + render: (args) => { + const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); + return ( + <Tree + {...args} + data={{ + ...{ + single: { + type: 'component', + name: 'Single', + id: 'single', + isRoot: false, + isLeaf: false, + isComponent: true, + parent: null, + depth: 0, + children: ['single--single'], + renderLabel: () => <span>🔥 Single</span>, + }, + 'single--single': { + type: 'story', + id: 'single--single', + title: 'Single', + name: 'Single', + kind: 'single', + tags: [], + isRoot: false, + isLeaf: true, + isComponent: false, + prepared: true, + args: {}, + argTypes: {}, + initialArgs: {}, + depth: 1, + parent: 'single', + renderLabel: () => <span>🔥 Single</span>, + importPath: './single.stories.js', + }, + }, + ...Object.keys(index).reduce((acc, key) => { + if (key === 'tooltip-tooltipselect--default') { + acc['tooltip-tooltipselect--tooltipselect'] = { + ...index[key], + id: 'tooltip-tooltipselect--tooltipselect', + name: 'TooltipSelect', + }; + return acc; + } + if (key === 'tooltip-tooltipselect') { + acc[key] = { + ...(index[key] as ComponentEntry), + children: ['tooltip-tooltipselect--tooltipselect'], + }; + return acc; + } + if (key.startsWith('tooltip')) { + acc[key] = index[key]; + } + return acc; + }, {} as IndexHash), + }} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + /> + ); }, }; -export const DocsOnlySingleStoryComponents = () => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); - return ( - <Tree - docsMode={false} - isBrowsing - isMain - refId={refId} - data={{ ...docsOnlySinglesStoryComponent, ...tooltipStories }} - highlightedRef={{ current: { itemId: selectedId, refId } }} - setHighlightedItemId={log} - selectedStoryId={selectedId} - onSelectStoryId={setSelectedId} - /> - ); + +export const DocsOnlySingleStoryComponents = { + render: () => { + const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); + return ( + <Tree + docsMode={false} + isBrowsing + isMain + refId={DEFAULT_REF_ID} + data={{ + ...{ + single: { + type: 'component', + name: 'Single', + isRoot: false, + isLeaf: false, + isComponent: true, + id: 'single', + parent: null, + depth: 0, + children: ['single--docs'], + }, + 'single--docs': { + type: 'docs', + id: 'single--docs', + title: 'Single', + name: 'Single', + kind: 'single', + tags: [], + isRoot: false, + isLeaf: true, + isComponent: false, + prepared: true, + depth: 1, + parent: 'single', + importPath: './single.stories.js', + }, + }, + ...Object.keys(index).reduce((acc, key) => { + if (key === 'tooltip-tooltipselect--default') { + acc['tooltip-tooltipselect--tooltipselect'] = { + ...index[key], + id: 'tooltip-tooltipselect--tooltipselect', + name: 'TooltipSelect', + }; + return acc; + } + if (key === 'tooltip-tooltipselect') { + acc[key] = { + ...(index[key] as ComponentEntry), + children: ['tooltip-tooltipselect--tooltipselect'], + }; + return acc; + } + if (key.startsWith('tooltip')) { + acc[key] = index[key]; + } + return acc; + }, {} as IndexHash), + }} + highlightedRef={{ current: { itemId: selectedId, refId: DEFAULT_REF_ID } }} + setHighlightedItemId={action('setHighlightedItemId')} + selectedStoryId={selectedId} + onSelectStoryId={setSelectedId} + /> + ); + }, }; -// node must be selected, highlighted, and focused -// in order to tab to 'Skip to canvas' link -export const SkipToCanvasLinkFocused = { - args: { - isBrowsing: true, - isMain: true, - refId, - data: index, - highlightedRef: { current: { itemId: 'tooltip-tooltipbuildlist--default', refId } }, - setHighlightedItemId: log, - selectedStoryId: 'tooltip-tooltipbuildlist--default', - onSelectStoryId: () => {}, +// SkipToCanvas Link only shows on desktop widths +export const SkipToCanvasLinkFocused: Story = { + ...DocsOnlySingleStoryComponents, + parameters: { + chromatic: { disable: true }, + viewport: { + defaultViewport: 'sized', + viewports: customViewports, + defaultOrientation: 'landscape', + }, }, - parameters: { chromatic: { delay: 300 } }, - play: () => { - // focus each instance for chromatic/storybook's stacked theme - screen.getAllByText('Skip to canvas').forEach((x) => x.focus()); + play: async ({ canvasElement }) => { + const screen = await within(canvasElement); + const link = await screen.findByText('Skip to canvas'); + + await link.focus(); + + await expect(link).toBeVisible(); }, }; From 2f270ff1c61a0fa1d0b81ef9e858234b8ff3d6b6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 18:26:27 +0200 Subject: [PATCH 037/135] cleanup --- code/ui/manager/src/components/sidebar/Tree.stories.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Tree.stories.tsx b/code/ui/manager/src/components/sidebar/Tree.stories.tsx index 4eeb4f4fdf8a..6889d23c56ac 100644 --- a/code/ui/manager/src/components/sidebar/Tree.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.stories.tsx @@ -1,5 +1,5 @@ // @TODO: use addon-interactions and remove the rule disable above -import React from 'react'; +import React, { useState } from 'react'; import type { ComponentEntry, IndexHash } from '@storybook/manager-api'; import { action } from '@storybook/addon-actions'; @@ -52,7 +52,7 @@ export const Full: Story = { setHighlightedItemId: action('setHighlightedItemId'), }, render: (args) => { - const [selectedId, setSelectedId] = React.useState(storyId); + const [selectedId, setSelectedId] = useState(storyId); return ( <Tree {...args} @@ -78,7 +78,7 @@ export const SingleStoryComponents: Story = { setHighlightedItemId: action('setHighlightedItemId'), }, render: (args) => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); + const [selectedId, setSelectedId] = useState('tooltip-tooltipbuildlist--default'); return ( <Tree {...args} @@ -148,7 +148,7 @@ export const SingleStoryComponents: Story = { export const DocsOnlySingleStoryComponents = { render: () => { - const [selectedId, setSelectedId] = React.useState('tooltip-tooltipbuildlist--default'); + const [selectedId, setSelectedId] = useState('tooltip-tooltipbuildlist--default'); return ( <Tree docsMode={false} From 612ff2057cfbd46dbcd61ea7f14577d3e5fc18f9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 5 Jul 2023 23:27:09 +0200 Subject: [PATCH 038/135] optimize --- code/lib/manager-api/src/modules/stories.ts | 13 +- .../components/sidebar/Sidebar.stories.tsx | 198 ++++++++++++------ .../manager/src/components/sidebar/Tree.tsx | 37 +++- .../src/components/sidebar/useExpanded.ts | 4 +- 4 files changed, 176 insertions(+), 76 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 0157425bcf6a..3521c33f9b73 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -574,13 +574,14 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ /* EXPERIMENTAL APIs */ experimental_updateStatus: async (id, update) => { const { status } = store.getState(); - const addition = Object.entries(update).reduce<StatusState>((acc, [storyId, value]) => { - acc[storyId] = acc[storyId] || {}; - acc[storyId][id] = value; + const newStatus = { ...status }; - return acc; - }, {}); - await store.setState({ status: merge(status, addition) }, { persistence: 'session' }); + Object.entries(update).forEach(([storyId, value]) => { + newStatus[storyId] = { ...(newStatus[storyId] || {}) }; + newStatus[storyId][id] = value; + }); + + await store.setState({ status: newStatus }, { persistence: 'session' }); }, }; diff --git a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx index 936789d0cde0..e946128f2e49 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx @@ -1,26 +1,27 @@ import React from 'react'; -import type { IndexHash } from 'lib/manager-api/src'; +import type { IndexHash, State } from 'lib/manager-api/src'; +import type { StoryObj, Meta } from '@storybook/react'; import { Sidebar, DEFAULT_REF_ID } from './Sidebar'; import { standardData as standardHeaderData } from './Heading.stories'; import * as ExplorerStories from './Explorer.stories'; import { mockDataset } from './mockdata'; import type { RefType } from './types'; -export default { +const meta = { component: Sidebar, title: 'Sidebar/Sidebar', excludeStories: /.*Data$/, parameters: { layout: 'fullscreen', withSymbols: true }, - decorators: [ - ExplorerStories.default.decorators[0], - (storyFn: any) => <div style={{ padding: '0 20px', maxWidth: '230px' }}>{storyFn()}</div>, - ], -}; + decorators: [ExplorerStories.default.decorators[0]], +} as Meta<typeof Sidebar>; + +export default meta; + +type Story = StoryObj<typeof meta>; const { menu } = standardHeaderData; const index = mockDataset.withRoot as IndexHash; -const refId = DEFAULT_REF_ID; const storyId = 'root-1-child-a2--grandchild-a1-1'; export const simpleData = { menu, index, storyId }; @@ -47,57 +48,130 @@ const refsError = { }, }; -export const Simple = () => ( - <Sidebar - previewInitialized - menu={menu} - index={index as any} - storyId={storyId} - refId={refId} - refs={{}} - /> -); - -export const Loading = () => ( - <Sidebar previewInitialized={false} menu={menu} storyId={storyId} refId={refId} refs={{}} /> -); - -export const Empty = () => ( - <Sidebar previewInitialized menu={menu} index={{}} storyId={storyId} refId={refId} refs={{}} /> -); - -export const IndexError = () => ( - <Sidebar - previewInitialized - indexError={indexError} - menu={menu} - storyId={storyId} - refId={refId} - refs={{}} - /> -); - -export const WithRefs = () => ( - <Sidebar - previewInitialized - menu={menu} - index={index as any} - storyId={storyId} - refId={refId} - refs={refs} - /> -); - -export const LoadingWithRefs = () => ( - <Sidebar previewInitialized={false} menu={menu} storyId={storyId} refId={refId} refs={refs} /> -); - -export const LoadingWithRefError = () => ( - <Sidebar - previewInitialized={false} - menu={menu} - storyId={storyId} - refId={refId} - refs={refsError} - /> -); +export const Simple: Story = { + args: { previewInitialized: true }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const Loading: Story = { + args: { previewInitialized: false }, + render: (args) => ( + <Sidebar {...args} menu={menu} storyId={storyId} refId={DEFAULT_REF_ID} refs={{}} status={{}} /> + ), +}; + +export const Empty: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + index={{}} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const IndexError: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + indexError={indexError} + menu={menu} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + status={{}} + /> + ), +}; + +export const WithRefs: Story = { + args: { + previewInitialized: true, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refs} + status={{}} + /> + ), +}; + +export const LoadingWithRefs: Story = { + args: { + previewInitialized: false, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refs} + status={{}} + /> + ), +}; + +export const LoadingWithRefError: Story = { + args: { + previewInitialized: false, + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={refsError} + status={{}} + /> + ), +}; + +export const Statuses: Story = { + args: { + previewInitialized: true, + status: Object.entries(index).reduce<State['status']>((acc, [id, item]) => { + if (item.type !== 'story') { + return acc; + } + + return { ...acc, [id]: { something: { status: 'pending', title: '', description: '' } } }; + }, {}), + }, + render: (args) => ( + <Sidebar + {...args} + menu={menu} + index={index as any} + storyId={storyId} + refId={DEFAULT_REF_ID} + refs={{}} + /> + ), +}; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index d3eff4311fc3..07ffa2871171 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -1,16 +1,16 @@ -import { Consumer, useStorybookApi } from '@storybook/manager-api'; +import { useStorybookApi } from '@storybook/manager-api'; import type { StoriesHash, GroupEntry, ComponentEntry, StoryEntry, - Combo, State, + API, } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; import { Button, Icons } from '@storybook/components'; import { transparentize } from 'polished'; -import type { MutableRefObject } from 'react'; +import type { ComponentProps, MutableRefObject } from 'react'; import React, { useCallback, useMemo, useRef } from 'react'; import { PRELOAD_ENTRIES } from '@storybook/core-events'; @@ -30,6 +30,16 @@ import type { Highlight, Item } from './types'; import { isStoryHoistable, createId, getAncestorIds, getDescendantIds, getLink } from './utils'; +type StoryStateKey = State['status'][keyof State['status']][0]['status']; +const order: StoryStateKey[] = ['unknown', 'pending', 'success', 'warn', 'error']; +const mapping: Record<StoryStateKey, null | [ComponentProps<typeof Icons>['icon'], string]> = { + unknown: null, + pending: ['watch', 'currentColor'], + success: ['passed', 'green'], + warn: ['changed', 'orange'], + error: ['failed', 'red'], +}; + export const Action = styled.button(({ theme }) => ({ display: 'inline-flex', alignItems: 'center', @@ -171,6 +181,7 @@ interface NodeProps { setFullyExpanded?: () => void; onSelectStoryId: (itemId: string) => void; status: State['status'][keyof State['status']]; + api: API; } const Node = React.memo<NodeProps>(function Node({ @@ -186,14 +197,26 @@ const Node = React.memo<NodeProps>(function Node({ isExpanded, setExpanded, onSelectStoryId, + api, }) { - const api = useStorybookApi(); - if (!isDisplayed) return null; + if (!isDisplayed) { + return null; + } const id = createId(item.id, refId); if (item.type === 'story' || item.type === 'docs') { const LeafNode = item.type === 'docs' ? DocumentNode : StoryNode; + const statusIcon = Object.values(status || {}).reduce< + typeof status[keyof typeof status]['status'] + >((acc, s) => { + if (order.indexOf(s.status) > order.indexOf(acc)) { + return s.status; + } + return acc; + }, 'unknown'); + const mapped = mapping[statusIcon]; + return ( <LeafNodeStyleWrapper data-selected={isSelected}> <LeafNode @@ -221,7 +244,7 @@ const Node = React.memo<NodeProps>(function Node({ Skip to canvas </SkipToContentLink> )} - {status ? <Icons icon="add" /> : null} + {mapped ? <Icons icon={mapped[0]} style={{ color: mapped[1] }} /> : null} </LeafNodeStyleWrapper> ); } @@ -352,6 +375,7 @@ export const Tree = React.memo<{ onSelectStoryId, }) { const containerRef = useRef<HTMLDivElement>(null); + const api = useStorybookApi(); // Find top-level nodes and group them so we can hoist any orphans and expand any roots. const [rootIds, orphanIds, initialExpanded] = useMemo( @@ -482,6 +506,7 @@ export const Tree = React.memo<{ const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); return ( <Node + api={api} key={id} item={item} status={status?.[itemId]} diff --git a/code/ui/manager/src/components/sidebar/useExpanded.ts b/code/ui/manager/src/components/sidebar/useExpanded.ts index 854796c317f0..e9a591d2670b 100644 --- a/code/ui/manager/src/components/sidebar/useExpanded.ts +++ b/code/ui/manager/src/components/sidebar/useExpanded.ts @@ -3,7 +3,7 @@ import { useStorybookApi } from '@storybook/manager-api'; import { STORIES_COLLAPSE_ALL, STORIES_EXPAND_ALL } from '@storybook/core-events'; import { global } from '@storybook/global'; import throttle from 'lodash/throttle.js'; -import type { Dispatch, MutableRefObject } from 'react'; +import type { Dispatch, MutableRefObject, Reducer } from 'react'; import type React from 'react'; import { useCallback, useEffect, useReducer } from 'react'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; @@ -76,7 +76,7 @@ export const useExpanded = ({ // Track the set of currently expanded nodes within this tree. // Root nodes are expanded by default. const [expanded, setExpanded] = useReducer< - React.Reducer<ExpandedState, ExpandAction>, + Reducer<ExpandedState, ExpandAction>, { refId: string; data: StoriesHash; From ad88799bb96251da061e86bf5eb084d436a553fa Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 16:00:31 +0200 Subject: [PATCH 039/135] add cascade up coloring & tooltip --- .../src/components/preview/iframe.stories.tsx | 22 ++- .../components/sidebar/Sidebar.stories.tsx | 33 +++- .../manager/src/components/sidebar/Tree.tsx | 165 ++++++++++++------ .../src/components/sidebar/TreeNode.tsx | 1 + 4 files changed, 163 insertions(+), 58 deletions(-) diff --git a/code/ui/manager/src/components/preview/iframe.stories.tsx b/code/ui/manager/src/components/preview/iframe.stories.tsx index 4c4efe5853fb..b96a67fbd911 100644 --- a/code/ui/manager/src/components/preview/iframe.stories.tsx +++ b/code/ui/manager/src/components/preview/iframe.stories.tsx @@ -6,13 +6,27 @@ import { IFrame } from './iframe'; export default { component: IFrame, title: 'Iframe', + parameters: { + layout: 'fullscreen', + viewport: { + defaultViewport: 'sized', + viewports: { + sized: { + name: 'Sized', + styles: { + width: '700px', + height: '700px', + }, + }, + }, + }, + chromatic: { viewports: [700] }, + }, }; const style: CSSProperties = { maxWidth: '700px', - height: '500px', - border: '2px solid hotpink', - position: 'relative', + height: '700px', }; export const WorkingStory = () => ( @@ -20,7 +34,7 @@ export const WorkingStory = () => ( active id="iframe" title="Missing" - src="/iframe.html?id=ui-panel--default" + src="/iframe.html?id=storybook-components-loader--infinite-state" allowFullScreen style={style} scale={1.0} diff --git a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx index e946128f2e49..ca16e283a3f3 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx @@ -153,7 +153,7 @@ export const LoadingWithRefError: Story = { ), }; -export const Statuses: Story = { +export const StatusesCollapsed: Story = { args: { previewInitialized: true, status: Object.entries(index).reduce<State['status']>((acc, [id, item]) => { @@ -161,7 +161,16 @@ export const Statuses: Story = { return acc; } - return { ...acc, [id]: { something: { status: 'pending', title: '', description: '' } } }; + if (item.name.includes('B')) { + return { + ...acc, + [id]: { + addonA: { status: 'warn', title: 'Addon A', description: 'We just wanted you to know' }, + addonB: { status: 'error', title: 'Addon B', description: 'This is a big deal!' }, + }, + }; + } + return acc; }, {}), }, render: (args) => ( @@ -175,3 +184,23 @@ export const Statuses: Story = { /> ), }; +export const StatusesOpen: Story = { + ...StatusesCollapsed, + args: { + ...StatusesCollapsed.args, + status: Object.entries(index).reduce<State['status']>((acc, [id, item]) => { + if (item.type !== 'story') { + return acc; + } + + return { + ...acc, + [id]: { + addonA: { status: 'warn', title: 'Addon A', description: 'We just wanted you to know' }, + addonB: { status: 'error', title: 'Addon B', description: 'This is a big deal!' }, + }, + }; + return acc; + }, {}), + }, +}; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 07ffa2871171..23f0e0f298cf 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -8,7 +8,7 @@ import type { API, } from '@storybook/manager-api'; import { styled } from '@storybook/theming'; -import { Button, Icons } from '@storybook/components'; +import { Button, Icons, TooltipLinkList, WithTooltip } from '@storybook/components'; import { transparentize } from 'polished'; import type { ComponentProps, MutableRefObject } from 'react'; import React, { useCallback, useMemo, useRef } from 'react'; @@ -32,12 +32,15 @@ import { isStoryHoistable, createId, getAncestorIds, getDescendantIds, getLink } type StoryStateKey = State['status'][keyof State['status']][0]['status']; const order: StoryStateKey[] = ['unknown', 'pending', 'success', 'warn', 'error']; -const mapping: Record<StoryStateKey, null | [ComponentProps<typeof Icons>['icon'], string]> = { - unknown: null, - pending: ['watch', 'currentColor'], - success: ['passed', 'green'], - warn: ['changed', 'orange'], - error: ['failed', 'red'], +const mapping: Record< + StoryStateKey, + [ComponentProps<typeof Icons>['icon'] | null, string | null, string | null] +> = { + unknown: [null, null, null], + pending: ['watch', 'currentColor', 'currentColor'], + success: ['passed', 'green', 'currentColor'], + warn: ['changed', 'orange', '#A15C20'], + error: ['failed', 'red', 'brown'], }; export const Action = styled.button(({ theme }) => ({ @@ -174,6 +177,7 @@ interface NodeProps { docsMode: boolean; isOrphan: boolean; isDisplayed: boolean; + color: string | undefined; isSelected: boolean; isFullyExpanded?: boolean; isExpanded: boolean; @@ -193,6 +197,7 @@ const Node = React.memo<NodeProps>(function Node({ isDisplayed, isSelected, isFullyExpanded, + color, setFullyExpanded, isExpanded, setExpanded, @@ -215,22 +220,24 @@ const Node = React.memo<NodeProps>(function Node({ } return acc; }, 'unknown'); - const mapped = mapping[statusIcon]; + const [icon, iconColor, textColor] = mapping[statusIcon]; return ( - <LeafNodeStyleWrapper data-selected={isSelected}> + <LeafNodeStyleWrapper + data-selected={isSelected} + data-ref-id={refId} + data-item-id={item.id} + data-parent-id={item.parent} + data-nodetype={item.type === 'docs' ? 'document' : 'story'} + data-highlightable={isDisplayed} + className="sidebar-item" + > <LeafNode + style={isSelected ? {} : { color: textColor }} key={id} + href={getLink(item, refId)} id={id} - className="sidebar-item" - data-ref-id={refId} - data-item-id={item.id} - data-parent-id={item.parent} - data-nodetype={item.type === 'docs' ? 'document' : 'story'} - data-selected={isSelected} - data-highlightable={isDisplayed} depth={isOrphan ? item.depth : item.depth - 1} - href={getLink(item, refId)} onClick={(event) => { event.preventDefault(); onSelectStoryId(item.id); @@ -244,7 +251,28 @@ const Node = React.memo<NodeProps>(function Node({ Skip to canvas </SkipToContentLink> )} - {mapped ? <Icons icon={mapped[0]} style={{ color: mapped[1] }} /> : null} + {icon ? ( + <WithTooltip + placement="top" + tooltip={() => { + return ( + <TooltipLinkList + links={Object.entries(status || {}).map(([k, v]) => ({ + id: k, + title: v.title, + description: v.description, + right: ( + <Icons icon={mapping[v.status][0]} style={{ color: mapping[v.status][1] }} /> + ), + }))} + /> + ); + }} + closeOnOutsideClick + > + <Icons icon={icon} style={{ color: iconColor }} /> + </WithTooltip> + ) : null} </LeafNodeStyleWrapper> ); } @@ -290,40 +318,45 @@ const Node = React.memo<NodeProps>(function Node({ ); } - const BranchNode = item.type === 'component' ? ComponentNode : GroupNode; - return ( - <BranchNode - key={id} - id={id} - className="sidebar-item" - data-ref-id={refId} - data-item-id={item.id} - data-parent-id={item.parent} - data-nodetype={item.type === 'component' ? 'component' : 'group'} - data-highlightable={isDisplayed} - aria-controls={item.children && item.children[0]} - aria-expanded={isExpanded} - depth={isOrphan ? item.depth : item.depth - 1} - isComponent={item.type === 'component'} - isExpandable={item.children && item.children.length > 0} - isExpanded={isExpanded} - onClick={(event) => { - event.preventDefault(); - setExpanded({ ids: [item.id], value: !isExpanded }); - if (item.type === 'component' && !isExpanded) onSelectStoryId(item.id); - }} - onMouseEnter={() => { - if (item.isComponent) { - api.emit(PRELOAD_ENTRIES, { - ids: [item.children[0]], - options: { target: refId }, - }); - } - }} - > - {(item.renderLabel as (i: typeof item) => React.ReactNode)?.(item) || item.name} - </BranchNode> - ); + if (item.type === 'component' || item.type === 'group') { + const BranchNode = item.type === 'component' ? ComponentNode : GroupNode; + return ( + <BranchNode + key={id} + id={id} + style={color ? { color } : {}} + className="sidebar-item" + data-ref-id={refId} + data-item-id={item.id} + data-parent-id={item.parent} + data-nodetype={item.type === 'component' ? 'component' : 'group'} + data-highlightable={isDisplayed} + aria-controls={item.children && item.children[0]} + aria-expanded={isExpanded} + depth={isOrphan ? item.depth : item.depth - 1} + isComponent={item.type === 'component'} + isExpandable={item.children && item.children.length > 0} + isExpanded={isExpanded} + onClick={(event) => { + event.preventDefault(); + setExpanded({ ids: [item.id], value: !isExpanded }); + if (item.type === 'component' && !isExpanded) onSelectStoryId(item.id); + }} + onMouseEnter={() => { + if (item.isComponent) { + api.emit(PRELOAD_ENTRIES, { + ids: [item.children[0]], + options: { target: refId }, + }); + } + }} + > + {(item.renderLabel as (i: typeof item) => React.ReactNode)?.(item) || item.name} + </BranchNode> + ); + } + + return null; }); const Root = React.memo<NodeProps & { expandableDescendants: string[] }>(function Root({ @@ -476,6 +509,31 @@ export const Tree = React.memo<{ onSelectStoryId, }); + const groupStatus = useMemo(() => { + return Object.values(collapsedData).reduce<Record<string, string>>((acc, item) => { + if (item.type === 'group' || item.type === 'component') { + const leafs = getDescendantIds(collapsedData, item.id, false) + .map((id) => collapsedData[id]) + .filter((i) => i.type === 'story'); + + const combinedStatus = leafs + .flatMap((story) => Object.values(status?.[story.id] || {})) + .reduce<typeof status[keyof typeof status]['status']['status']>((sacc, s) => { + if (order.indexOf(s.status) > order.indexOf(sacc)) { + return s.status; + } + return sacc; + }, 'unknown'); + + if (combinedStatus) { + // eslint-disable-next-line prefer-destructuring + acc[item.id] = mapping[combinedStatus][2]; + } + } + return acc; + }, {}); + }, [collapsedData, status]); + return ( <Container ref={containerRef} hasOrphans={isMain && orphanIds.length > 0}> {collapsedItems.map((itemId) => { @@ -504,6 +562,8 @@ export const Tree = React.memo<{ } const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); + const color = groupStatus[itemId]; + return ( <Node api={api} @@ -511,6 +571,7 @@ export const Tree = React.memo<{ item={item} status={status?.[itemId]} refId={refId} + color={color} docsMode={docsMode} isOrphan={orphanIds.some((oid) => itemId === oid || itemId.startsWith(`${oid}-`))} isDisplayed={isDisplayed} diff --git a/code/ui/manager/src/components/sidebar/TreeNode.tsx b/code/ui/manager/src/components/sidebar/TreeNode.tsx index b14ce31ce8eb..dcdafdb8d025 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.tsx @@ -83,6 +83,7 @@ const BranchNode = styled.button<{ const LeafNode = styled.a<{ depth?: number }>(({ theme, depth = 0 }) => ({ cursor: 'pointer', display: 'flex', + flex: 1, alignItems: 'start', padding: 3, paddingLeft: `${18 + depth * 16}px`, From 54eae22cf834583d88c0980ad8af9b1392e75788 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 17:08:39 +0200 Subject: [PATCH 040/135] cleanup --- code/lib/types/src/modules/addons.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 4d1221a66e3f..8047611f325a 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -314,7 +314,7 @@ export type ReactJSXElement = { export type Addon_Type = Addon_BaseType; export interface Addon_BaseType { - title: FCWithoutChildren | string | ReactElement | ReactNode; + title: FCWithoutChildren | ReactNode; type: Addon_Types; id?: string; route?: (routeOptions: RouterData) => string; From c429c1f46bf89213d02def839c4fa9d32bb5ad3b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 17:24:11 +0200 Subject: [PATCH 041/135] make it prettier --- code/ui/components/src/tabs/tabs.stories.tsx | 50 ++++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/tabs/tabs.stories.tsx index 6d6973befcf6..3942b885df17 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/tabs/tabs.stories.tsx @@ -13,6 +13,8 @@ import { } from '@storybook/testing-library'; import { Tabs, TabsState, TabWrapper } from './tabs'; import type { ChildrenList } from './tabs.helpers'; +import { IconButton } from '../bar/button'; +import { Icons } from '../icon/icon'; const colours = Array.from(new Array(15), (val, index) => index).map((i) => Math.floor((1 / 15) * i * 16777215) @@ -122,20 +124,6 @@ const content = Object.entries(panels).map(([k, v]) => ( export default { title: 'Tabs', - decorators: [ - (story) => ( - <div - style={{ - position: 'relative', - height: 'calc(100vh - 20px)', - width: 'calc(100vw - 20px)', - margin: 10, - }} - > - {story()} - </div> - ), - ], args: { menuName: 'Addons', }, @@ -193,11 +181,11 @@ export const StatefulStaticWithSetBackgroundColor = { } satisfies Story; const customViewports = { - chromatic: { - name: 'Chromatic', + sized: { + name: 'Sized', styles: { width: '380px', - height: '963px', + height: '500px', }, }, }; @@ -205,7 +193,7 @@ const customViewports = { export const StatefulDynamicWithOpenTooltip = { parameters: { viewport: { - defaultViewport: 'chromatic', + defaultViewport: 'sized', viewports: customViewports, }, chromatic: { viewports: [380] }, @@ -254,12 +242,14 @@ export const StatefulDynamicWithSelectedAddon = { }, play: async (context) => { await StatefulDynamicWithOpenTooltip.play(context); + const canvas = within(context.canvasElement); await waitFor(async () => { const popperContainer = await screen.findByTestId('tooltip'); const tab4 = await findByText(popperContainer, 'Tab title #4', {}); fireEvent(tab4, new MouseEvent('click', { bubbles: true })); - await waitFor(() => screen.findByText('CONTENT 4')); + const content4 = await canvas.findByText('CONTENT 4'); + await expect(content4).toBeVisible(); }); // reopen the tooltip @@ -300,6 +290,7 @@ export const StatelessBordered = { export const StatelessWithTools = { render: (args) => ( <Tabs + bordered selected="test3" menuName="Addons" actions={{ @@ -307,12 +298,12 @@ export const StatelessWithTools = { }} tools={ <Fragment> - <button type="button" onClick={() => logger.log('1')}> - 1 - </button> - <button type="button" onClick={() => logger.log('2')}> - 2 - </button> + <IconButton title="Tool 1"> + <Icons icon="memory" /> + </IconButton> + <IconButton title="Tool 2"> + <Icons icon="cpu" /> + </IconButton> </Fragment> } {...args} @@ -323,6 +314,9 @@ export const StatelessWithTools = { } satisfies Story; export const StatelessAbsolute = { + parameters: { + layout: 'fullscreen', + }, render: (args) => ( <Tabs absolute @@ -339,6 +333,9 @@ export const StatelessAbsolute = { } satisfies Story; export const StatelessAbsoluteBordered = { + parameters: { + layout: 'fullscreen', + }, render: (args) => ( <Tabs absolute @@ -356,6 +353,9 @@ export const StatelessAbsoluteBordered = { } satisfies Story; export const StatelessEmpty = { + parameters: { + layout: 'fullscreen', + }, render: (args) => ( <Tabs actions={{ From 909a8512b5003dc43b2de0991acdfa74ca4ca164 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 17:32:30 +0200 Subject: [PATCH 042/135] simplify code --- code/ui/components/src/tabs/tabs.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/ui/components/src/tabs/tabs.tsx b/code/ui/components/src/tabs/tabs.tsx index b5bfe93e8894..7e4d61429f77 100644 --- a/code/ui/components/src/tabs/tabs.tsx +++ b/code/ui/components/src/tabs/tabs.tsx @@ -143,12 +143,13 @@ export const Tabs: FC<TabsProps> = memo( menuName, }) => { const idList = childrenToList(children).map((i) => i.id); - const primeList = useMemo<ChildrenList>(() => childrenToList(children), [...idList]); - const list = useMemo( () => - primeList.map((i, index) => ({ ...i, active: selected ? i.id === selected : index === 0 })), - [selected, primeList] + childrenToList(children).map((i, index) => ({ + ...i, + active: selected ? i.id === selected : index === 0, + })), + [selected, ...idList] ); const { visibleList, tabBarRef, tabRefs, AddonTab } = useList(list); From f32ead4746bddf7340a2ae056c507dc473a68db4 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 17:39:40 +0200 Subject: [PATCH 043/135] cleanup --- code/ui/components/src/tabs/tabs.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/ui/components/src/tabs/tabs.tsx b/code/ui/components/src/tabs/tabs.tsx index 7e4d61429f77..c8a18bf29c06 100644 --- a/code/ui/components/src/tabs/tabs.tsx +++ b/code/ui/components/src/tabs/tabs.tsx @@ -7,7 +7,6 @@ import type { Addon_RenderOptions } from '@storybook/types'; import { Placeholder } from '../placeholder/placeholder'; import { TabButton } from '../bar/button'; import { FlexBar } from '../bar/bar'; -import type { ChildrenList } from './tabs.helpers'; import { childrenToList, VisuallyHidden } from './tabs.helpers'; import { useList } from './tabs.hooks'; From 8f5a5b0aef5948748ae97d36d18b75e2a805aa7e Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 17:44:01 +0200 Subject: [PATCH 044/135] cleanup --- code/lib/manager-api/src/modules/stories.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 3521c33f9b73..13954138a1b4 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -50,7 +50,6 @@ import { } from '../lib/stories'; import type { ComposedRef, ModuleFn } from '../index'; -import { merge } from '../index'; const { FEATURES, fetch } = global; const STORY_INDEX_PATH = './index.json'; From b7cee9329fb0adf2032dafd941183b5315e72dcb Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 21:28:51 +0200 Subject: [PATCH 045/135] fix --- code/ui/components/src/tabs/tabs.stories.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/tabs/tabs.stories.tsx index 3942b885df17..1eb07b0b3397 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/tabs/tabs.stories.tsx @@ -1,7 +1,6 @@ import { expect } from '@storybook/jest'; import React, { Fragment } from 'react'; import { action } from '@storybook/addon-actions'; -import { logger } from '@storybook/client-logger'; import type { Meta, StoryObj } from '@storybook/react'; import { within, From 2964e4b296d27d07e58bb982aaa5bbf48336b8e5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 22:00:13 +0200 Subject: [PATCH 046/135] fix --- code/ui/components/src/tabs/tabs.stories.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/tabs/tabs.stories.tsx index 1eb07b0b3397..1f0b21f65d44 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/tabs/tabs.stories.tsx @@ -195,6 +195,7 @@ export const StatefulDynamicWithOpenTooltip = { defaultViewport: 'sized', viewports: customViewports, }, + theme: 'light', chromatic: { viewports: [380] }, }, play: async ({ canvasElement }) => { @@ -234,9 +235,10 @@ export const StatefulDynamicWithOpenTooltip = { export const StatefulDynamicWithSelectedAddon = { parameters: { viewport: { - defaultViewport: 'chromatic', + defaultViewport: 'sized', viewports: customViewports, }, + theme: 'light', chromatic: { viewports: [380] }, }, play: async (context) => { From 3f2bc4380b4f6d233f95cbffaa6439d73af65ef2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 22:58:19 +0200 Subject: [PATCH 047/135] cleanup --- code/ui/components/src/tabs/tabs.stories.tsx | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/tabs/tabs.stories.tsx index 1f0b21f65d44..77d357acf0b9 100644 --- a/code/ui/components/src/tabs/tabs.stories.tsx +++ b/code/ui/components/src/tabs/tabs.stories.tsx @@ -233,14 +233,7 @@ export const StatefulDynamicWithOpenTooltip = { } satisfies Story; export const StatefulDynamicWithSelectedAddon = { - parameters: { - viewport: { - defaultViewport: 'sized', - viewports: customViewports, - }, - theme: 'light', - chromatic: { viewports: [380] }, - }, + ...StatefulDynamicWithOpenTooltip, play: async (context) => { await StatefulDynamicWithOpenTooltip.play(context); const canvas = within(context.canvasElement); From baf05dc91440c653831e03155794e46b56dd7b82 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 23:28:10 +0200 Subject: [PATCH 048/135] fix --- code/ui/manager/src/components/layout/app.mockdata.tsx | 1 + .../manager/src/components/sidebar/__tests__/Sidebar.test.tsx | 2 +- code/ui/manager/src/components/sidebar/useExpanded.ts | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ui/manager/src/components/layout/app.mockdata.tsx b/code/ui/manager/src/components/layout/app.mockdata.tsx index 48e2696d3306..89e1f1464d7c 100644 --- a/code/ui/manager/src/components/layout/app.mockdata.tsx +++ b/code/ui/manager/src/components/layout/app.mockdata.tsx @@ -62,6 +62,7 @@ const realSidebarProps: SidebarProps = { index: mockDataset.withRoot as SidebarProps['index'], menu: [], refs: {}, + status: {}, previewInitialized: true, }; diff --git a/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx b/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx index 2e409618e8ed..26fd8750f301 100644 --- a/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx +++ b/code/ui/manager/src/components/sidebar/__tests__/Sidebar.test.tsx @@ -16,7 +16,7 @@ const factory = (props: Partial<SidebarProps>): RenderResult => { return render( <ThemeProvider theme={theme}> - <Sidebar menu={[]} index={{}} previewInitialized refs={{}} {...props} /> + <Sidebar menu={[]} index={{}} previewInitialized refs={{}} status={{}} {...props} /> </ThemeProvider> ); }; diff --git a/code/ui/manager/src/components/sidebar/useExpanded.ts b/code/ui/manager/src/components/sidebar/useExpanded.ts index e9a591d2670b..6de67a1e9b91 100644 --- a/code/ui/manager/src/components/sidebar/useExpanded.ts +++ b/code/ui/manager/src/components/sidebar/useExpanded.ts @@ -4,7 +4,6 @@ import { STORIES_COLLAPSE_ALL, STORIES_EXPAND_ALL } from '@storybook/core-events import { global } from '@storybook/global'; import throttle from 'lodash/throttle.js'; import type { Dispatch, MutableRefObject, Reducer } from 'react'; -import type React from 'react'; import { useCallback, useEffect, useReducer } from 'react'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; import type { Highlight } from './types'; From 05a8f304bf543ffaa37b47bafa932bebeb00a75a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 6 Jul 2023 23:31:21 +0200 Subject: [PATCH 049/135] fix --- code/lib/manager-api/src/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index 92ca071fb97f..1774a1936897 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -56,7 +56,6 @@ import * as settings from './modules/settings'; // eslint-disable-next-line import/no-cycle import * as stories from './modules/stories'; -// eslint-disable-next-line import/no-cycle import * as refs from './modules/refs'; import * as layout from './modules/layout'; import * as shortcuts from './modules/shortcuts'; From 4f3bd7bcc3f46f2d3d57c2af9c6abd1bd11fcd6f Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 00:22:22 +0200 Subject: [PATCH 050/135] fixes --- .../src/components/preview/iframe.stories.tsx | 1 + .../manager/src/components/sidebar/Tree.tsx | 2 +- .../components/sidebar/TreeNode.stories.tsx | 73 ++++++++++++++----- 3 files changed, 57 insertions(+), 19 deletions(-) diff --git a/code/ui/manager/src/components/preview/iframe.stories.tsx b/code/ui/manager/src/components/preview/iframe.stories.tsx index b96a67fbd911..5b9e9f65946c 100644 --- a/code/ui/manager/src/components/preview/iframe.stories.tsx +++ b/code/ui/manager/src/components/preview/iframe.stories.tsx @@ -20,6 +20,7 @@ export default { }, }, }, + theme: 'light', chromatic: { viewports: [700] }, }, }; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 23f0e0f298cf..ebc84e6eca42 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -124,7 +124,7 @@ const CollapseButton = styled.button(({ theme }) => ({ }, })); -const LeafNodeStyleWrapper = styled.div(({ theme }) => ({ +export const LeafNodeStyleWrapper = styled.div(({ theme }) => ({ position: 'relative', display: 'flex', justifyContent: 'space-between', diff --git a/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx b/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx index 28664ea8fef1..78f7de5739fb 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.stories.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { HighlightStyles } from './HighlightStyles'; +import { LeafNodeStyleWrapper } from './Tree'; import { ComponentNode, DocumentNode, GroupNode, StoryNode } from './TreeNode'; @@ -53,23 +54,59 @@ export const Nested = () => ( export const Selection = () => ( <> <HighlightStyles refId="foo" itemId="bar" /> - <StoryNode data-ref-id="baz" data-item-id="bar" data-nodetype="story" data-selected="false"> - Default story - </StoryNode> - <StoryNode data-ref-id="baz" data-item-id="bar" data-nodetype="story" data-selected="true"> - Selected story - </StoryNode> - <StoryNode data-ref-id="foo" data-item-id="bar" data-nodetype="story" data-selected="false"> - Highlighted story - </StoryNode> - <StoryNode data-ref-id="foo" data-item-id="bar" data-nodetype="story" data-selected="true"> - Highlighted + Selected story - </StoryNode> - <GroupNode data-ref-id="foo" data-item-id="baz" data-nodetype="group" data-selected="false"> - Default group - </GroupNode> - <GroupNode data-ref-id="foo" data-item-id="bar" data-nodetype="group" data-selected="false"> - Highlighted group - </GroupNode> + <LeafNodeStyleWrapper + data-ref-id="baz" + data-item-id="bar" + data-nodetype="story" + data-selected="false" + className="sidebar-item" + > + <StoryNode>Default story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="baz" + data-item-id="bar" + data-nodetype="story" + data-selected="true" + className="sidebar-item" + > + <StoryNode>Selected story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="story" + data-selected="false" + className="sidebar-item" + > + <StoryNode>Highlighted story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="story" + data-selected="true" + className="sidebar-item" + > + <StoryNode>Highlighted + Selected story</StoryNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="baz" + data-nodetype="group" + data-selected="false" + className="sidebar-item" + > + <GroupNode>Default group</GroupNode> + </LeafNodeStyleWrapper> + <LeafNodeStyleWrapper + data-ref-id="foo" + data-item-id="bar" + data-nodetype="group" + data-selected="false" + className="sidebar-item" + > + <GroupNode>Highlighted group</GroupNode> + </LeafNodeStyleWrapper> </> ); From 643678969c4d8ecd2bb3e082ad608116a114d47d Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 14:07:08 +0200 Subject: [PATCH 051/135] Hopefully stabilize interactions e2e test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So… I discovered after a bunch of :computer-rage: .. That the e2e test for interactions sometimes toggles the toolbar off. When this happens it can’t click on the button to remount the story. The toolbar disappears when playwright clicks on the addon tab, which appear like it refreshes storybook somehow, and then the toolbar disappears. I cannot get playwright to do this locally, but I can see that something seems to be pressing t? Which toggles the toolbar. What causes the refresh? what causes the toolbar to be toggle off? who knows? I was trying to detect the presence of the toolbar to toggle back on, if needed,, and this is when things go weird. Playwright tried to click the button, and can’t.. because it’s not visible. So obviously I add a if statement, that if the button isn’t visible, it should do a procedure to ensure it will be, then try again. Playwright tells me the button IS visible, but then when it tries to click says it isn’t. In addition using page.keyboard.press('t') doesn’t work to toggle the toolbar, very strange. I even tried isWithinViewport()this suggests it’s in the viewport as well. --- code/e2e-tests/addon-interactions.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts index acaf2c7489cd..afbc0f5a2bb6 100644 --- a/code/e2e-tests/addon-interactions.spec.ts +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -103,10 +103,19 @@ test.describe('addon-interactions', () => { await interactionsRow.nth(2).isVisible(); await expect(interactionsTab.getByText('3')).toBeVisible(); await expect(interactionsTab).toBeVisible(); + await expect(interactionsTab.getByText('3')).toBeVisible(); + + // After debugging I found that sometimes the toolbar gets hidden, maybe some keypress or session storage issue? + // if the toolbar is hidden, this will toggle the toolbar + if (await page.locator('[offset="40"]').isHidden()) { + await page.locator('[aria-label="Shortcuts"]').click(); + await page.locator('#list-item-T').click(); + } // Test remount state (from toolbar) - Interactions have rerun, count is correct and values are as expected const remountComponentButton = await page.locator('[title="Remount component"]'); await remountComponentButton.click(); + await interactionsRow.first().isVisible(); await interactionsRow.nth(1).isVisible(); await interactionsRow.nth(2).isVisible(); From aaaf5758276e7fdd062d4dda49438dd47392dfb8 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Fri, 7 Jul 2023 14:29:04 +0200 Subject: [PATCH 052/135] Adding the new Button props --- .../src/Button/Button-depreciated.stories.tsx | 84 +++++ .../components/src/Button/Button.stories.tsx | 4 +- code/ui/components/src/Button/Button.tsx | 335 +++++------------- code/ui/components/src/Button/styles.ts | 231 ++++++++++++ 4 files changed, 409 insertions(+), 245 deletions(-) create mode 100644 code/ui/components/src/Button/Button-depreciated.stories.tsx create mode 100644 code/ui/components/src/Button/styles.ts diff --git a/code/ui/components/src/Button/Button-depreciated.stories.tsx b/code/ui/components/src/Button/Button-depreciated.stories.tsx new file mode 100644 index 000000000000..21a18206f990 --- /dev/null +++ b/code/ui/components/src/Button/Button-depreciated.stories.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import type { Args } from '@storybook/types'; + +import { Button } from './Button'; +import { Icons } from '../icon/icon'; +import { Form } from '../form/index'; + +export default { + title: 'Button (Depreciated)', + component: Button, + tags: ['autodocs'], +}; + +export const Default = { args: { children: 'Default' } }; + +export const FormButton = { + render: (args: Args) => <Form.Button {...args} />, + args: { children: 'Form.Button' }, +}; + +export const Primary = { args: { primary: true, children: 'Primary' } }; +export const Secondary = { args: { secondary: true, children: 'Secondary' } }; +export const Tertiary = { args: { tertiary: true, children: 'Tertiary' } }; +export const Gray = { args: { gray: true, children: 'Gray' } }; + +export const Outline = { args: { outline: true, children: 'Outline' } }; +export const OutlinePrimary = { + args: { outline: true, primary: true, children: 'Outline Primary' }, +}; +export const OutlineSecondary = { + args: { outline: true, secondary: true, children: 'Outline Secondary' }, +}; +export const OutlineTertiary = { + args: { outline: true, tertiary: true, children: 'Outline Tertiary' }, +}; + +export const Disabled = { args: { disabled: true, children: 'Disabled' } }; +export const DisabledPrimary = { + args: { disabled: true, primary: true, children: 'Disabled Priary' }, +}; +export const DisabledSecondary = { + args: { disabled: true, secondary: true, children: 'Disabled Secondary' }, +}; +export const DisabledTertiary = { + args: { disabled: true, tertiary: true, children: 'Disabled Tertiary' }, +}; +export const DisabledGray = { + args: { disabled: true, gray: true, children: 'Disabled Gray' }, +}; + +export const Small = { args: { small: true, children: 'Small' } }; +export const SmallPrimary = { + args: { small: true, primary: true, children: 'Small Priary' }, +}; +export const SmallSecondary = { + args: { small: true, secondary: true, children: 'Small Secondary' }, +}; +export const SmallTertiary = { + args: { small: true, tertiary: true, children: 'Small Tertiary' }, +}; +export const SmallGray = { + args: { small: true, gray: true, children: 'Small Gray' }, +}; + +export const IconPrimary = { + args: { + primary: true, + containsIcon: true, + title: 'link', + children: <Icons icon="link" />, + }, +}; +export const IconOutline = { + args: { outline: true, containsIcon: true, title: 'link', children: <Icons icon="link" /> }, +}; +export const IconOutlineSmall = { + args: { + outline: true, + containsIcon: true, + small: true, + title: 'link', + children: <Icons icon="link" />, + }, +}; diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index e1fc021087b8..cd159dd0fb4f 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -6,10 +6,12 @@ import { Icons } from '../icon/icon'; import { Form } from '../form/index'; export default { + title: 'Button', component: Button, + tags: ['autodocs'], }; -export const Default = { args: { children: 'Default' } }; +export const Default = { args: { children: 'Hello World' } }; export const FormButton = { render: (args: Args) => <Form.Button {...args} />, diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index f39414bf4345..94677f98f1c1 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -1,272 +1,119 @@ import type { FC, ComponentProps, ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { styled } from '@storybook/theming'; -import { darken, lighten, rgba, transparentize } from 'polished'; +import { ButtonWrapper } from './styles'; -const ButtonWrapper = styled.button<{ +interface ButtonProps { + children?: ReactNode; + href?: string; + size?: 'sm' | 'md' | 'lg'; + variant?: 'solid' | 'outline'; + color?: 'blue' | 'gray'; + leftIcon?: ReactNode; + rightIcon?: ReactNode; + onClick?: () => void; + disabled?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `as='a'` property instead. + */ isLink?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * This colour is not used anymore. + */ primary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='blue'` property instead. + */ secondary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='gray'` property instead. + */ tertiary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='gray'` property instead. + */ gray?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + */ inForm?: boolean; - disabled?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `size='sm'` property instead. + */ small?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='outline'` property instead. + */ outline?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `leftIcon={<YourIcon />}` property instead. + */ containsIcon?: boolean; - children?: ReactNode; - href?: string; -}>( - ({ small, theme }) => ({ - border: 0, - borderRadius: '3em', - cursor: 'pointer', - display: 'inline-block', - overflow: 'hidden', - padding: small ? '8px 16px' : '13px 20px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: 1, - margin: 0, - background: 'transparent', - - fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - - svg: { - display: 'inline-block', - height: small ? 12 : 14, - width: small ? 12 : 14, - - verticalAlign: 'top', - marginRight: small ? 4 : 6, - marginTop: small ? 0 : -1, - marginBottom: small ? 0 : -1, - - /* Necessary for js mouse events to not glitch out when hovering on svgs */ - pointerEvents: 'none', - - path: { - fill: 'currentColor', - }, - }, - }), - ({ disabled }) => - disabled - ? { - cursor: 'not-allowed !important', - opacity: 0.5, - '&:hover': { - transform: 'none', - }, - } - : {}, - ({ containsIcon, small }) => - containsIcon - ? { - svg: { - display: 'block', - margin: 0, - }, - ...(small ? { padding: 10 } : { padding: 13 }), - } - : {}, - ({ theme, primary, secondary, gray }) => { - let color; - - if (gray) { - color = theme.color.mediumlight; - } else if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return color - ? { - background: color, - color: gray ? theme.color.darkest : theme.color.lightest, - - '&:hover': { - background: darken(0.05, color), - }, - '&:active': { - boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', - }, - '&:focus': { - boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, tertiary, inForm, small }) => - tertiary - ? { - background: theme.button.background, - color: theme.input.color, - boxShadow: `${theme.button.border} 0 0 0 1px inset`, - borderRadius: theme.input.borderRadius, - - ...(inForm && small ? { padding: '10px 16px' } : {}), - - '&:hover': { - background: - theme.base === 'light' - ? darken(0.02, theme.button.background) - : lighten(0.03, theme.button.background), - ...(inForm - ? {} - : { - boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', - }), - }, - '&:active': { - background: theme.button.background, - }, - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, - } - : {}, - ({ theme, outline }) => - outline - ? { - boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, - color: transparentize(0.3, theme.color.defaultText), - background: 'transparent', - - '&:hover, &:focus': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, - outline: 'none', - }, - - '&:active': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, - color: transparentize(0, theme.color.defaultText), - }, - } - : {}, - ({ theme, outline, primary }) => { - const color = theme.color.primary; - - return outline && primary - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, outline, primary, secondary }) => { - let color; - - if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return outline && color - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - } -); +} const ButtonLink = ButtonWrapper.withComponent('a'); -export const Button: FC<ComponentProps<typeof ButtonWrapper>> = Object.assign( - forwardRef< - any, +export const Button: FC<ComponentProps<typeof ButtonWrapper>> = forwardRef<any, ButtonProps>( + ( { - isLink?: boolean; - primary?: boolean; - secondary?: boolean; - tertiary?: boolean; - gray?: boolean; - inForm?: boolean; - disabled?: boolean; - small?: boolean; - outline?: boolean; - containsIcon?: boolean; - children?: ReactNode; - href?: string; - } - >(function Button({ isLink, children, ...props }, ref) { + isLink = false, + gray, + primary, + secondary, + tertiary, + inForm, + small, + outline, + containsIcon, + children, + ...props + }, + ref + ) => { if (isLink) { return ( - <ButtonLink {...props} ref={ref}> + <ButtonLink + ref={ref} + isLink={isLink} + gray={gray} + primary={primary} + secondary={secondary} + tertiary={tertiary} + inForm={inForm} + small={small} + outline={outline} + containsIcon={containsIcon} + {...props} + > {children} </ButtonLink> ); } return ( - <ButtonWrapper {...props} ref={ref}> + <ButtonWrapper + ref={ref} + isLink={isLink} + gray={gray} + primary={primary} + secondary={secondary} + tertiary={tertiary} + inForm={inForm} + small={small} + outline={outline} + containsIcon={containsIcon} + {...props} + > {children} </ButtonWrapper> ); - }), - { - defaultProps: { - isLink: false, - }, } ); + +Button.displayName = 'Button'; diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts new file mode 100644 index 000000000000..20ddec03e7c6 --- /dev/null +++ b/code/ui/components/src/Button/styles.ts @@ -0,0 +1,231 @@ +import type { ReactNode } from 'react'; +import { styled } from '@storybook/theming'; +import { darken, lighten, rgba, transparentize } from 'polished'; + +export const ButtonWrapper = styled.button<{ + isLink?: boolean; + primary?: boolean; + secondary?: boolean; + tertiary?: boolean; + gray?: boolean; + inForm?: boolean; + disabled?: boolean; + small?: boolean; + outline?: boolean; + containsIcon?: boolean; + children?: ReactNode; + href?: string; +}>( + ({ small, theme }) => ({ + border: 0, + borderRadius: '3em', + cursor: 'pointer', + display: 'inline-block', + overflow: 'hidden', + padding: small ? '8px 16px' : '13px 20px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: 1, + margin: 0, + background: 'transparent', + + fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + + svg: { + display: 'inline-block', + height: small ? 12 : 14, + width: small ? 12 : 14, + + verticalAlign: 'top', + marginRight: small ? 4 : 6, + marginTop: small ? 0 : -1, + marginBottom: small ? 0 : -1, + + /* Necessary for js mouse events to not glitch out when hovering on svgs */ + pointerEvents: 'none', + + path: { + fill: 'currentColor', + }, + }, + }), + ({ disabled }) => + disabled + ? { + cursor: 'not-allowed !important', + opacity: 0.5, + '&:hover': { + transform: 'none', + }, + } + : {}, + ({ containsIcon, small }) => + containsIcon + ? { + svg: { + display: 'block', + margin: 0, + }, + ...(small ? { padding: 10 } : { padding: 13 }), + } + : {}, + ({ theme, primary, secondary, gray }) => { + let color; + + if (gray) { + color = theme.color.mediumlight; + } else if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; + } + + return color + ? { + background: color, + color: gray ? theme.color.darkest : theme.color.lightest, + + '&:hover': { + background: darken(0.05, color), + }, + '&:active': { + boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', + }, + '&:focus': { + boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, tertiary, inForm, small }) => + tertiary + ? { + background: theme.button.background, + color: theme.input.color, + boxShadow: `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + ...(inForm && small ? { padding: '10px 16px' } : {}), + + '&:hover': { + background: + theme.base === 'light' + ? darken(0.02, theme.button.background) + : lighten(0.03, theme.button.background), + ...(inForm + ? {} + : { + boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', + }), + }, + '&:active': { + background: theme.button.background, + }, + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, + } + : {}, + ({ theme, outline }) => + outline + ? { + boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, + color: transparentize(0.3, theme.color.defaultText), + background: 'transparent', + + '&:hover, &:focus': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, + outline: 'none', + }, + + '&:active': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, + color: transparentize(0, theme.color.defaultText), + }, + } + : {}, + ({ theme, outline, primary }) => { + const color = theme.color.primary; + + return outline && primary + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, outline, primary, secondary }) => { + let color; + + if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; + } + + return outline && color + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + } +); From f524baa37b95bafd0ccfd534bcd1d15376d68d2b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 15:14:12 +0200 Subject: [PATCH 053/135] fixes for e2e tests --- code/e2e-tests/addon-interactions.spec.ts | 3 +-- code/e2e-tests/preview-web.spec.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts index afbc0f5a2bb6..07320e383005 100644 --- a/code/e2e-tests/addon-interactions.spec.ts +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -108,8 +108,7 @@ test.describe('addon-interactions', () => { // After debugging I found that sometimes the toolbar gets hidden, maybe some keypress or session storage issue? // if the toolbar is hidden, this will toggle the toolbar if (await page.locator('[offset="40"]').isHidden()) { - await page.locator('[aria-label="Shortcuts"]').click(); - await page.locator('#list-item-T').click(); + await page.locator('html').press('t'); } // Test remount state (from toolbar) - Interactions have rerun, count is correct and values are as expected diff --git a/code/e2e-tests/preview-web.spec.ts b/code/e2e-tests/preview-web.spec.ts index e44c3448f4f3..8f9c2bb9191f 100644 --- a/code/e2e-tests/preview-web.spec.ts +++ b/code/e2e-tests/preview-web.spec.ts @@ -18,6 +18,10 @@ test.describe('preview-web', () => { await sbPage.previewRoot().locator('button').press('s'); await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + // restore the sidebar back to visible, because it is persisted in localStorage + await page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); }); test('should pass over shortcuts, but not from play functions, docs', async ({ page }) => { @@ -28,5 +32,9 @@ test.describe('preview-web', () => { await sbPage.previewRoot().getByRole('button').getByText('Submit').first().press('s'); await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + // restore the sidebar back to visible, because it is persisted in localStorage + await page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); }); }); From bce1c1ea2665a6ffc7879c74032f6c98fb9e6a2f Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 15:43:02 +0200 Subject: [PATCH 054/135] rename --- code/lib/types/src/modules/addons.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 1a73d5a0b154..9d067b6d65d6 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -419,9 +419,9 @@ export enum Addon_TypesEnum { PREVIEW = 'preview', /** * This adds pages that render instead of the canvas. - * DO NOT USE + * @unstable */ - experimental_PAGE = 'main', + experimental_PAGE = 'page', /** * @deprecated This property does nothing, and will be removed in Storybook 8.0. From d67aebaff77a806825f03b7e85ce9b63840fe09f Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 15:48:46 +0200 Subject: [PATCH 055/135] cleanup --- code/lib/types/src/modules/addons.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index 9d067b6d65d6..771736df0352 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -428,9 +428,3 @@ export enum Addon_TypesEnum { */ NOTES_ELEMENT = 'notes-element', } - -// type A = OrString<'bla' | 'foo'>; - -// type OrString<T extends string> = T | (string & {}); - -// const x: A = 'ffffff'; From 630b9135b26e34fe7846032f5f833287a4e075e7 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Fri, 7 Jul 2023 16:41:10 +0200 Subject: [PATCH 056/135] Button updates --- .../components/src/Button/Button.stories.tsx | 111 ++++++++---------- code/ui/components/src/Button/Button.tsx | 55 +++++---- code/ui/components/src/Button/styles.ts | 57 +++++++++ 3 files changed, 138 insertions(+), 85 deletions(-) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index cd159dd0fb4f..f53c3eccae52 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -1,84 +1,65 @@ +import type { Meta, StoryObj } from '@storybook/react'; import React from 'react'; -import type { Args } from '@storybook/types'; import { Button } from './Button'; -import { Icons } from '../icon/icon'; -import { Form } from '../form/index'; -export default { +const meta: Meta<typeof Button> = { title: 'Button', component: Button, tags: ['autodocs'], }; -export const Default = { args: { children: 'Hello World' } }; +export default meta; +type Story = StoryObj<typeof Button>; -export const FormButton = { - render: (args: Args) => <Form.Button {...args} />, - args: { children: 'Form.Button' }, -}; - -export const Primary = { args: { primary: true, children: 'Primary' } }; -export const Secondary = { args: { secondary: true, children: 'Secondary' } }; -export const Tertiary = { args: { tertiary: true, children: 'Tertiary' } }; -export const Gray = { args: { gray: true, children: 'Gray' } }; - -export const Outline = { args: { outline: true, children: 'Outline' } }; -export const OutlinePrimary = { - args: { outline: true, primary: true, children: 'Outline Primary' }, -}; -export const OutlineSecondary = { - args: { outline: true, secondary: true, children: 'Outline Secondary' }, -}; -export const OutlineTertiary = { - args: { outline: true, tertiary: true, children: 'Outline Tertiary' }, -}; - -export const Disabled = { args: { disabled: true, children: 'Disabled' } }; -export const DisabledPrimary = { - args: { disabled: true, primary: true, children: 'Disabled Priary' }, -}; -export const DisabledSecondary = { - args: { disabled: true, secondary: true, children: 'Disabled Secondary' }, -}; -export const DisabledTertiary = { - args: { disabled: true, tertiary: true, children: 'Disabled Tertiary' }, -}; -export const DisabledGray = { - args: { disabled: true, gray: true, children: 'Disabled Gray' }, -}; +export const Base = { args: { children: 'Hello World' } }; -export const Small = { args: { small: true, children: 'Small' } }; -export const SmallPrimary = { - args: { small: true, primary: true, children: 'Small Priary' }, -}; -export const SmallSecondary = { - args: { small: true, secondary: true, children: 'Small Secondary' }, -}; -export const SmallTertiary = { - args: { small: true, tertiary: true, children: 'Small Tertiary' }, -}; -export const SmallGray = { - args: { small: true, gray: true, children: 'Small Gray' }, +export const Sizes: Story = { + args: { + ...Base.args, + }, + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button size="sm">Button Small</Button> + <Button size="md">Button Medium</Button> + </div> + ), }; -export const IconPrimary = { +export const Variants: Story = { args: { - primary: true, - containsIcon: true, - title: 'link', - children: <Icons icon="link" />, + ...Base.args, }, + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '3rem' }}> + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button variant="solid" size="sm"> + Button Solid + </Button> + <Button variant="solid" size="md"> + Button Solid + </Button> + </div> + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button variant="outline" size="sm"> + Button Outline + </Button> + <Button variant="outline" size="md"> + Button Outline + </Button> + </div> + </div> + ), }; -export const IconOutline = { - args: { outline: true, containsIcon: true, title: 'link', children: <Icons icon="link" /> }, -}; -export const IconOutlineSmall = { + +export const Colors: Story = { args: { - outline: true, - containsIcon: true, - small: true, - title: 'link', - children: <Icons icon="link" />, + ...Base.args, }, + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button color="blue">Button Blue</Button> + <Button color="gray">Button Gray</Button> + </div> + ), }; diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index 94677f98f1c1..d03e9ef2af9d 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -1,11 +1,11 @@ -import type { FC, ComponentProps, ReactNode } from 'react'; +import type { FC, ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { ButtonWrapper } from './styles'; +import { ButtonWrapper, ButtonWrapper2 } from './styles'; -interface ButtonProps { +export interface ButtonProps { children?: ReactNode; href?: string; - size?: 'sm' | 'md' | 'lg'; + size?: 'sm' | 'md'; variant?: 'solid' | 'outline'; color?: 'blue' | 'gray'; leftIcon?: ReactNode; @@ -60,7 +60,7 @@ interface ButtonProps { const ButtonLink = ButtonWrapper.withComponent('a'); -export const Button: FC<ComponentProps<typeof ButtonWrapper>> = forwardRef<any, ButtonProps>( +export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( ( { isLink = false, @@ -72,12 +72,18 @@ export const Button: FC<ComponentProps<typeof ButtonWrapper>> = forwardRef<any, small, outline, containsIcon, + size = 'md', + color = 'blue', + variant = 'solid', children, ...props }, ref ) => { - if (isLink) { + const isDepreciated = + primary || secondary || tertiary || gray || inForm || small || outline || containsIcon; + + if (!!isDepreciated && isLink) { return ( <ButtonLink ref={ref} @@ -96,22 +102,31 @@ export const Button: FC<ComponentProps<typeof ButtonWrapper>> = forwardRef<any, </ButtonLink> ); } + + if (isDepreciated) { + return ( + <ButtonWrapper + ref={ref} + isLink={isLink} + gray={gray} + primary={primary} + secondary={secondary} + tertiary={tertiary} + inForm={inForm} + small={small} + outline={outline} + containsIcon={containsIcon} + {...props} + > + {children} + </ButtonWrapper> + ); + } + return ( - <ButtonWrapper - ref={ref} - isLink={isLink} - gray={gray} - primary={primary} - secondary={secondary} - tertiary={tertiary} - inForm={inForm} - small={small} - outline={outline} - containsIcon={containsIcon} - {...props} - > + <ButtonWrapper2 size={size} color={color} variant={variant}> {children} - </ButtonWrapper> + </ButtonWrapper2> ); } ); diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts index 20ddec03e7c6..b73defa7558d 100644 --- a/code/ui/components/src/Button/styles.ts +++ b/code/ui/components/src/Button/styles.ts @@ -1,6 +1,7 @@ import type { ReactNode } from 'react'; import { styled } from '@storybook/theming'; import { darken, lighten, rgba, transparentize } from 'polished'; +import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ isLink?: boolean; @@ -229,3 +230,59 @@ export const ButtonWrapper = styled.button<{ : {}; } ); + +export const ButtonWrapper2 = styled.button<{ + color: ButtonProps['color']; + size: ButtonProps['size']; + variant: ButtonProps['variant']; +}>(({ theme, color, size, variant }) => ({ + border: 0, + cursor: 'pointer', + display: 'inline-block', + overflow: 'hidden', + padding: '0 16px', + height: size === 'sm' ? '28px' : '32px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: 1, + margin: 0, + fontSize: `${theme.typography.size.s1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + background: `${(() => { + if (color === 'blue' && variant === 'solid') return theme.color.secondary; + if (color === 'gray') return theme.button.background; + return 'transparent'; + })()}`, + color: `${(() => { + if (color === 'blue' && variant === 'solid') return theme.color.lightest; + if (color === 'gray') return theme.color.darkest; + if (variant === 'outline') return theme.color.darkest; + return theme.color.darkest; + })()}`, + boxShadow: `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + '&:hover': { + background: + theme.base === 'light' + ? darken(0.02, theme.button.background) + : lighten(0.03, theme.button.background), + }, + + '&:active': { + background: theme.button.background, + }, + + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, +})); From ccf22aae950846970b9e24d4042887656592c41d Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Fri, 7 Jul 2023 19:38:53 +0200 Subject: [PATCH 057/135] I like tests --- code/e2e-tests/manager.spec.ts | 97 ++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 code/e2e-tests/manager.spec.ts diff --git a/code/e2e-tests/manager.spec.ts b/code/e2e-tests/manager.spec.ts new file mode 100644 index 000000000000..170ff1266231 --- /dev/null +++ b/code/e2e-tests/manager.spec.ts @@ -0,0 +1,97 @@ +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('manager', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + + await new SbPage(page).waitUntilLoaded(); + }); + + test('shortcuts sidebar', async ({ page }) => { + const sbPage = new SbPage(page); + + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('[aria-label="Show sidebar"]').click(); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-S').click(); + + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + }); + + test('shortcuts toolbar', async ({ page }) => { + const sbPage = new SbPage(page); + const isToolbarShown = async () => { + const canvas = await sbPage.page.locator('div', { + has: sbPage.page.locator('> #storybook-preview-wrapper'), + }); + + return (await canvas.getAttribute('offset')) === '40'; + }; + + await expect(await isToolbarShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('t'); + await expect(await isToolbarShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-T').click(); + await expect(await isToolbarShown()).toBeTruthy(); + }); + + test('shortcuts panel', async ({ page }) => { + const sbPage = new SbPage(page); + const isPanelsShown = async () => { + const main = await sbPage.page.locator('div', { + has: sbPage.page.locator('> * > #storybook-preview-wrapper'), + }); + + const style = await main.getAttribute('style'); + return style; + }; + + await sbPage.navigateToStory('example/button', 'primary'); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-A').click(); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('html').press('a'); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-D').click(); + await expect(await isPanelsShown()).toBeTruthy(); + }); + + test('settings page', async ({ page }) => { + const sbPage = new SbPage(page); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-about').click(); + + await expect(sbPage.page.url()).toContain('/settings/about'); + + await sbPage.page.locator('[title="Close settings page"]').click(); + await expect(sbPage.page.url()).toContain('/docs/configure-your-project--docs'); + }); +}); From defe8c2f6ff5b34c56ca175ad9eb71da6bbaf0b6 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 9 Jul 2023 16:44:49 +0200 Subject: [PATCH 058/135] Improve the button style --- .../components/src/Button/Button.stories.tsx | 50 +++---- code/ui/components/src/Button/Button.tsx | 21 +-- code/ui/components/src/Button/styles.ts | 125 ++++++++++-------- 3 files changed, 105 insertions(+), 91 deletions(-) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index f53c3eccae52..8170037feaad 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -12,54 +12,54 @@ const meta: Meta<typeof Button> = { export default meta; type Story = StoryObj<typeof Button>; -export const Base = { args: { children: 'Hello World' } }; +export const Base = { + args: { children: 'Button' }, +}; + +export const Types: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary">Primary Button</Button> + <Button type="secondary">Secondary Button</Button> + </div> + ), +}; export const Sizes: Story = { - args: { - ...Base.args, - }, render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="sm">Button Small</Button> - <Button size="md">Button Medium</Button> + <Button size="small">Small Button</Button> + <Button size="medium">Medium Button</Button> </div> ), }; export const Variants: Story = { - args: { - ...Base.args, - }, render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '3rem' }}> <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button variant="solid" size="sm"> - Button Solid + <Button variant="solid" type="primary"> + Button Primary Solid </Button> - <Button variant="solid" size="md"> - Button Solid + <Button variant="solid" type="secondary"> + Button Secondary Solid </Button> </div> <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button variant="outline" size="sm"> - Button Outline + <Button variant="outline" type="primary"> + Button Primary Outline </Button> - <Button variant="outline" size="md"> - Button Outline + <Button variant="outline" type="secondary"> + Button Secondary Outline </Button> </div> </div> ), }; -export const Colors: Story = { +export const Disabled: Story = { args: { - ...Base.args, + disabled: true, + children: 'Disabled Button', }, - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button color="blue">Button Blue</Button> - <Button color="gray">Button Gray</Button> - </div> - ), }; diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index d03e9ef2af9d..d80eea9b4309 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -1,13 +1,13 @@ import type { FC, ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { ButtonWrapper, ButtonWrapper2 } from './styles'; +import { ButtonWrapper, ButtonWrapperDepreciated } from './styles'; export interface ButtonProps { children?: ReactNode; href?: string; - size?: 'sm' | 'md'; + size?: 'small' | 'medium'; variant?: 'solid' | 'outline'; - color?: 'blue' | 'gray'; + type?: 'primary' | 'secondary'; leftIcon?: ReactNode; rightIcon?: ReactNode; onClick?: () => void; @@ -58,7 +58,7 @@ export interface ButtonProps { containsIcon?: boolean; } -const ButtonLink = ButtonWrapper.withComponent('a'); +const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( ( @@ -72,9 +72,10 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( small, outline, containsIcon, - size = 'md', - color = 'blue', + size = 'medium', + type = 'primary', variant = 'solid', + disabled = false, children, ...props }, @@ -105,7 +106,7 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( if (isDepreciated) { return ( - <ButtonWrapper + <ButtonWrapperDepreciated ref={ref} isLink={isLink} gray={gray} @@ -119,14 +120,14 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( {...props} > {children} - </ButtonWrapper> + </ButtonWrapperDepreciated> ); } return ( - <ButtonWrapper2 size={size} color={color} variant={variant}> + <ButtonWrapper size={size} btnType={type} variant={variant} disabled={disabled}> {children} - </ButtonWrapper2> + </ButtonWrapper> ); } ); diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts index b73defa7558d..8dea0e823f57 100644 --- a/code/ui/components/src/Button/styles.ts +++ b/code/ui/components/src/Button/styles.ts @@ -4,6 +4,75 @@ import { darken, lighten, rgba, transparentize } from 'polished'; import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ + btnType: ButtonProps['type']; + size: ButtonProps['size']; + variant: ButtonProps['variant']; + disabled: ButtonProps['disabled']; +}>(({ theme, btnType, size, variant, disabled }) => ({ + border: 0, + cursor: disabled ? 'not-allowed !important' : 'pointer', + display: 'inline-block', + overflow: 'hidden', + padding: '0 16px', + height: size === 'small' ? '28px' : '32px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: disabled ? 0.5 : 1, + margin: 0, + fontSize: `${theme.typography.size.s1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + background: `${(() => { + if (btnType === 'primary' && variant === 'solid') return theme.color.secondary; + if (btnType === 'secondary' && variant === 'solid') return theme.button.background; + return 'transparent'; + })()}`, + color: `${(() => { + if (btnType === 'primary' && variant === 'solid') return theme.color.lightest; + if (btnType === 'secondary') return theme.color.darkest; + if (variant === 'outline') return theme.color.darkest; + return theme.color.darkest; + })()}`, + boxShadow: `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + '&:hover': { + background: `${(() => { + let bgColor = theme.color.secondary; + if (btnType === 'primary' && variant === 'solid') bgColor = theme.color.secondary; + if (btnType === 'secondary' && variant === 'solid') bgColor = theme.button.background; + if (btnType === 'primary' && variant === 'outline') bgColor = theme.button.background; + if (btnType === 'secondary' && variant === 'outline') bgColor = theme.button.background; + + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:active': { + // background: theme.button.background, + background: `${(() => { + let bgColor = theme.color.secondary; + if (btnType === 'primary' && variant === 'solid') bgColor = theme.color.secondary; + if (btnType === 'secondary') bgColor = theme.button.background; + + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, +})); + +export const ButtonWrapperDepreciated = styled.button<{ isLink?: boolean; primary?: boolean; secondary?: boolean; @@ -230,59 +299,3 @@ export const ButtonWrapper = styled.button<{ : {}; } ); - -export const ButtonWrapper2 = styled.button<{ - color: ButtonProps['color']; - size: ButtonProps['size']; - variant: ButtonProps['variant']; -}>(({ theme, color, size, variant }) => ({ - border: 0, - cursor: 'pointer', - display: 'inline-block', - overflow: 'hidden', - padding: '0 16px', - height: size === 'sm' ? '28px' : '32px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: 1, - margin: 0, - fontSize: `${theme.typography.size.s1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - background: `${(() => { - if (color === 'blue' && variant === 'solid') return theme.color.secondary; - if (color === 'gray') return theme.button.background; - return 'transparent'; - })()}`, - color: `${(() => { - if (color === 'blue' && variant === 'solid') return theme.color.lightest; - if (color === 'gray') return theme.color.darkest; - if (variant === 'outline') return theme.color.darkest; - return theme.color.darkest; - })()}`, - boxShadow: `${theme.button.border} 0 0 0 1px inset`, - borderRadius: theme.input.borderRadius, - - '&:hover': { - background: - theme.base === 'light' - ? darken(0.02, theme.button.background) - : lighten(0.03, theme.button.background), - }, - - '&:active': { - background: theme.button.background, - }, - - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, -})); From 7099b19314ea78ee1260315443ed01c5d09be3df Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 9 Jul 2023 21:06:10 +0100 Subject: [PATCH 059/135] Update Button story --- .../components/src/Button/Button.stories.tsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index 8170037feaad..3d811e548e86 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -7,6 +7,17 @@ const meta: Meta<typeof Button> = { title: 'Button', component: Button, tags: ['autodocs'], + argTypes: { + isLink: { table: { disable: true } }, + primary: { table: { disable: true } }, + secondary: { table: { disable: true } }, + tertiary: { table: { disable: true } }, + gray: { table: { disable: true } }, + inForm: { table: { disable: true } }, + small: { table: { disable: true } }, + outline: { table: { disable: true } }, + containsIcon: { table: { disable: true } }, + }, }; export default meta; @@ -63,3 +74,12 @@ export const Disabled: Story = { children: 'Disabled Button', }, }; + +export const Link: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button onClick={() => console.log('Hello')}>I am a button</Button> + <Button href="https://storybook.js.org/">I am a link</Button> + </div> + ), +}; From 060106cefd9793e565276bfe99a7e7cc841f2e86 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 9 Jul 2023 21:07:46 +0100 Subject: [PATCH 060/135] Add missing Link --- code/ui/components/src/Button/Button.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index d80eea9b4309..c3c60d01a4e6 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -59,6 +59,7 @@ export interface ButtonProps { } const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); +const NewButtonLink = ButtonWrapper.withComponent('a'); export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( ( @@ -76,6 +77,7 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( type = 'primary', variant = 'solid', disabled = false, + href, children, ...props }, @@ -124,8 +126,22 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( ); } + if (href) + return ( + <NewButtonLink + ref={ref} + size={size} + btnType={type} + variant={variant} + disabled={disabled} + href={href} + > + {children} + </NewButtonLink> + ); + return ( - <ButtonWrapper size={size} btnType={type} variant={variant} disabled={disabled}> + <ButtonWrapper ref={ref} size={size} btnType={type} variant={variant} disabled={disabled}> {children} </ButtonWrapper> ); From 6c25e596301f987f220a2189047e16a3eddf2470 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 9 Jul 2023 21:08:05 +0100 Subject: [PATCH 061/135] Improve styling for link --- code/ui/components/src/Button/styles.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts index 8dea0e823f57..bdab723cd258 100644 --- a/code/ui/components/src/Button/styles.ts +++ b/code/ui/components/src/Button/styles.ts @@ -11,7 +11,8 @@ export const ButtonWrapper = styled.button<{ }>(({ theme, btnType, size, variant, disabled }) => ({ border: 0, cursor: disabled ? 'not-allowed !important' : 'pointer', - display: 'inline-block', + display: 'inline-flex', + alignItems: 'center', overflow: 'hidden', padding: '0 16px', height: size === 'small' ? '28px' : '32px', @@ -40,7 +41,10 @@ export const ButtonWrapper = styled.button<{ if (variant === 'outline') return theme.color.darkest; return theme.color.darkest; })()}`, - boxShadow: `${theme.button.border} 0 0 0 1px inset`, + boxShadow: + variant === 'solid' && btnType === 'primary' + ? 'none' + : `${theme.button.border} 0 0 0 1px inset`, borderRadius: theme.input.borderRadius, '&:hover': { From a06b8bb6d23962b87d17c8163f5737137b541655 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Sun, 9 Jul 2023 22:29:27 +0200 Subject: [PATCH 062/135] fix util, to find selected story element --- 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 7b59f27369ae..00a15312b2cf 100644 --- a/code/e2e-tests/util.ts +++ b/code/e2e-tests/util.ts @@ -31,7 +31,7 @@ export class SbPage { const storyId = toId(name); const storyLinkId = `#${titleId}--${storyId}`; await this.page.waitForSelector(storyLinkId); - const storyLink = this.page.locator(storyLinkId); + const storyLink = this.page.locator('*', { has: this.page.locator(`> ${storyLinkId}`) }); await storyLink.click({ force: true }); // assert url changes From 2397b4651136728d62d7c52d2b18e1d604eaa0e4 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 10 Jul 2023 09:33:36 +0100 Subject: [PATCH 063/135] Improve theme layout to work with docs --- code/ui/.storybook/preview.tsx | 94 ++++++++++++++-------------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/code/ui/.storybook/preview.tsx b/code/ui/.storybook/preview.tsx index c89c15e85db4..793256998636 100644 --- a/code/ui/.storybook/preview.tsx +++ b/code/ui/.storybook/preview.tsx @@ -22,44 +22,23 @@ import { DocsPageWrapper } from '../blocks/src/components'; const { document } = global; -const ThemeBlock = styled.div<{ side: 'left' | 'right' }>( - { - position: 'absolute', - top: 0, - left: 0, - right: '50vw', - width: '50vw', - height: '100vh', - bottom: 0, - overflow: 'auto', - padding: 10, - }, - ({ theme }) => ({ - background: theme.background.content, - color: theme.color.defaultText, - }), - ({ side }) => - side === 'left' - ? { - left: 0, - right: '50vw', - } - : { - right: 0, - left: '50vw', - } -); +const ThemeContainer = styled.div({ + display: 'flex', +}); -const ThemeStack = styled.div( - { - position: 'relative', - minHeight: 'calc(50vh - 15px)', - }, - ({ theme }) => ({ - background: theme.background.content, - color: theme.color.defaultText, - }) -); +const ThemeBlock = styled.div(({ theme }) => ({ + flex: 1, + padding: '1rem', + background: theme.background.content, + color: theme.color.defaultText, +})); + +const ThemeStack = styled.div(({ theme }) => ({ + flex: 1, + padding: '1rem', + background: theme.background.content, + color: theme.color.defaultText, +})); const PlayFnNotice = styled.div( { @@ -177,7 +156,7 @@ export const decorators = [ switch (theme) { case 'side-by-side': { return ( - <Fragment> + <ThemeContainer> <ThemeProvider theme={convert(themes.light)}> <Global styles={createReset} /> </ThemeProvider> @@ -191,7 +170,7 @@ export const decorators = [ <StoryFn /> </ThemeBlock> </ThemeProvider> - </Fragment> + </ThemeContainer> ); } case 'stacked': { @@ -216,22 +195,26 @@ export const decorators = [ case 'default': default: { return ( - <ThemeProvider theme={convert(themes[theme])}> - <Global styles={createReset} /> - <ThemedSetRoot /> - {!parameters.theme && isChromatic() && playFunction && ( - <> - <PlayFnNotice> - <span> - Detected play function in Chromatic. Rendering only light theme to avoid - multiple play functions in the same story. - </span> - </PlayFnNotice> - <div style={{ marginBottom: 20 }} /> - </> - )} - <StoryFn /> - </ThemeProvider> + <ThemeContainer> + <ThemeProvider theme={convert(themes[theme])}> + <Global styles={createReset} /> + <ThemedSetRoot /> + {!parameters.theme && isChromatic() && playFunction && ( + <> + <PlayFnNotice> + <span> + Detected play function in Chromatic. Rendering only light theme to avoid + multiple play functions in the same story. + </span> + </PlayFnNotice> + <div style={{ marginBottom: 20 }} /> + </> + )} + <ThemeBlock> + <StoryFn /> + </ThemeBlock> + </ThemeProvider> + </ThemeContainer> ); } } @@ -306,6 +289,7 @@ export const parameters = { 'slategray', ], }, + layout: 'fullscreen', }; export const globalTypes = { From 2cd1e0a9663976c5a28e05b139628645f65f6b57 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 10 Jul 2023 09:33:54 +0100 Subject: [PATCH 064/135] Fix dark theme button --- code/ui/components/src/Button/Button.stories.tsx | 8 ++++++-- code/ui/components/src/Button/styles.ts | 7 +++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index 3d811e548e86..324997a11a73 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -48,7 +48,9 @@ export const Sizes: Story = { export const Variants: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '3rem' }}> - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <div + style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start', gap: '1rem' }} + > <Button variant="solid" type="primary"> Button Primary Solid </Button> @@ -56,7 +58,9 @@ export const Variants: Story = { Button Secondary Solid </Button> </div> - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <div + style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start', gap: '1rem' }} + > <Button variant="outline" type="primary"> Button Primary Outline </Button> diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts index bdab723cd258..ed19540f799c 100644 --- a/code/ui/components/src/Button/styles.ts +++ b/code/ui/components/src/Button/styles.ts @@ -37,9 +37,9 @@ export const ButtonWrapper = styled.button<{ })()}`, color: `${(() => { if (btnType === 'primary' && variant === 'solid') return theme.color.lightest; - if (btnType === 'secondary') return theme.color.darkest; - if (variant === 'outline') return theme.color.darkest; - return theme.color.darkest; + if (btnType === 'secondary') return theme.input.color; + if (variant === 'outline') return theme.input.color; + return theme.input.color; })()}`, boxShadow: variant === 'solid' && btnType === 'primary' @@ -60,7 +60,6 @@ export const ButtonWrapper = styled.button<{ }, '&:active': { - // background: theme.button.background, background: `${(() => { let bgColor = theme.color.secondary; if (btnType === 'primary' && variant === 'solid') bgColor = theme.color.secondary; From f749b6a87b195da1156268e2356c1af55f14ce99 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 10 Jul 2023 09:42:38 +0100 Subject: [PATCH 065/135] Update preview.tsx --- code/ui/.storybook/preview.tsx | 38 ++++++++++++++-------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/code/ui/.storybook/preview.tsx b/code/ui/.storybook/preview.tsx index 793256998636..1d500b949226 100644 --- a/code/ui/.storybook/preview.tsx +++ b/code/ui/.storybook/preview.tsx @@ -15,9 +15,7 @@ import { Symbols } from '@storybook/components'; import type { PreviewWeb } from '@storybook/preview-api'; import type { ReactRenderer } from '@storybook/react'; import type { Channel } from '@storybook/channels'; - import { DocsContext } from '@storybook/blocks'; - import { DocsPageWrapper } from '../blocks/src/components'; const { document } = global; @@ -40,25 +38,21 @@ const ThemeStack = styled.div(({ theme }) => ({ color: theme.color.defaultText, })); -const PlayFnNotice = styled.div( - { - position: 'absolute', - top: 0, - left: 0, - width: '100%', - borderBottom: '1px solid #ccc', - padding: '3px 8px', - fontSize: '10px', - fontWeight: 'bold', - '> *': { - display: 'block', - }, +const PlayFnNotice = styled.div(({ theme }) => ({ + position: 'absolute', + top: 0, + left: 0, + width: '100%', + borderBottom: '1px solid #ccc', + padding: '3px 8px', + fontSize: '10px', + fontWeight: 'bold', + '> *': { + display: 'block', }, - ({ theme }) => ({ - background: '#fffbd9', - color: theme.color.defaultText, - }) -); + background: '#fffbd9', + color: theme.color.defaultText, +})); const ThemedSetRoot = () => { const theme = useTheme(); @@ -161,12 +155,12 @@ export const decorators = [ <Global styles={createReset} /> </ThemeProvider> <ThemeProvider theme={convert(themes.light)}> - <ThemeBlock side="left" data-side="left"> + <ThemeBlock data-side="left"> <StoryFn /> </ThemeBlock> </ThemeProvider> <ThemeProvider theme={convert(themes.dark)}> - <ThemeBlock side="right" data-side="right"> + <ThemeBlock data-side="right"> <StoryFn /> </ThemeBlock> </ThemeProvider> From d462df5ce94b8bfdbe5ffab48fb7c04c88af006f Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 10 Jul 2023 15:14:51 +0200 Subject: [PATCH 066/135] remove references to `api` and the 2 deprecated channel packages --- code/builders/builder-vite/src/optimizeDeps.ts | 2 -- code/builders/builder-webpack5/package.json | 2 -- code/frameworks/html-vite/package.json | 1 - .../cli/src/automigrate/helpers/getMigrationSummary.ts | 6 +++--- code/lib/preview-api/package.json | 1 - code/lib/preview/src/globals/runtime.ts | 4 ++-- code/lib/preview/src/globals/types.ts | 4 ++-- code/ui/manager/package.json | 2 -- code/yarn.lock | 10 ++-------- test-storybooks/ember-cli/package.json | 3 --- test-storybooks/external-docs/package.json | 2 -- test-storybooks/server-kitchen-sink/package.json | 3 --- test-storybooks/standalone-preview/package.json | 3 --- 13 files changed, 9 insertions(+), 34 deletions(-) diff --git a/code/builders/builder-vite/src/optimizeDeps.ts b/code/builders/builder-vite/src/optimizeDeps.ts index e9639782547d..43c64f34a7e4 100644 --- a/code/builders/builder-vite/src/optimizeDeps.ts +++ b/code/builders/builder-vite/src/optimizeDeps.ts @@ -14,8 +14,6 @@ const INCLUDE_CANDIDATES = [ '@storybook/addon-docs', '@storybook/addon-essentials/docs/mdx-react-shim', '@storybook/channels', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', '@storybook/client-api', '@storybook/client-logger', '@storybook/core/client', diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 8c9922a5f019..a4cb9b9d3c1f 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -57,8 +57,6 @@ "dependencies": { "@babel/core": "^7.22.0", "@storybook/addons": "7.1.0-beta.2", - "@storybook/api": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", "@storybook/channels": "7.1.0-beta.2", "@storybook/client-api": "7.1.0-beta.2", "@storybook/client-logger": "7.1.0-beta.2", diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 2974dd12afda..4cdee9e3052e 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -49,7 +49,6 @@ "dependencies": { "@storybook/addons": "7.1.0-beta.2", "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", "@storybook/client-api": "7.1.0-beta.2", "@storybook/core-server": "7.1.0-beta.2", "@storybook/html": "7.1.0-beta.2", diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts index 5cfa0122a1bd..9e9d60df35c7 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts @@ -108,8 +108,8 @@ const allowList = [ '@storybook/csf', // see this file for more info: code/lib/preview/src/globals/types.ts '@storybook/addons', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', + '@storybook/channel-postmessage', // @deprecated: remove in 8.0 + '@storybook/channel-websocket', // @deprecated: remove in 8.0 '@storybook/channels', '@storybook/client-api', '@storybook/client-logger', @@ -123,7 +123,7 @@ const allowList = [ '@storybook/components', '@storybook/router', '@storybook/theming', - '@storybook/api', + '@storybook/api', // @deprecated: remove in 8.0 '@storybook/manager-api', ]; diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 2d6277039da1..b331cf89fb62 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -67,7 +67,6 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channel-postmessage": "7.1.0-beta.2", "@storybook/channels": "7.1.0-beta.2", "@storybook/client-logger": "7.1.0-beta.2", "@storybook/core-events": "7.1.0-beta.2", diff --git a/code/lib/preview/src/globals/runtime.ts b/code/lib/preview/src/globals/runtime.ts index b299eea8f693..6aec0edd155c 100644 --- a/code/lib/preview/src/globals/runtime.ts +++ b/code/lib/preview/src/globals/runtime.ts @@ -16,8 +16,8 @@ import type { globals } from './types'; // Here we map the name of a module to their VALUE in the global scope. export const values: Required<Record<keyof typeof globals, any>> = { - '@storybook/channel-postmessage': CHANNEL_POSTMESSAGE, - '@storybook/channel-websocket': CHANNEL_WEBSOCKET, + '@storybook/channel-postmessage': CHANNEL_POSTMESSAGE, // @deprecated: remove in 8.0 + '@storybook/channel-websocket': CHANNEL_WEBSOCKET, // @deprecated: remove in 8.0 '@storybook/channels': CHANNELS, '@storybook/client-logger': CLIENT_LOGGER, '@storybook/core-events': CORE_EVENTS, diff --git a/code/lib/preview/src/globals/types.ts b/code/lib/preview/src/globals/types.ts index 182e384604e1..afd90b8bf564 100644 --- a/code/lib/preview/src/globals/types.ts +++ b/code/lib/preview/src/globals/types.ts @@ -1,8 +1,8 @@ // Here we map the name of a module to their NAME in the global scope. export const globals = { '@storybook/addons': '__STORYBOOK_MODULE_ADDONS__', - '@storybook/channel-postmessage': '__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__', - '@storybook/channel-websocket': '__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__', + '@storybook/channel-postmessage': '__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__', // @deprecated: remove in 8.0 + '@storybook/channel-websocket': '__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__', // @deprecated: remove in 8.0 '@storybook/channels': '__STORYBOOK_MODULE_CHANNELS__', '@storybook/client-api': '__STORYBOOK_MODULE_CLIENT_API__', '@storybook/client-logger': '__STORYBOOK_MODULE_CLIENT_LOGGER__', diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 4674a01f8345..acfade3ba8e4 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -53,8 +53,6 @@ "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@storybook/addon-designs": "^7.0.0", "@storybook/addons": "7.1.0-beta.2", - "@storybook/api": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", "@storybook/channels": "7.1.0-beta.2", "@storybook/client-logger": "7.1.0-beta.2", "@storybook/components": "7.1.0-beta.2", diff --git a/code/yarn.lock b/code/yarn.lock index ef1c71b726f8..5fa1feef641f 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5778,7 +5778,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/api@7.1.0-beta.2, @storybook/api@workspace:*, @storybook/api@workspace:deprecated/manager-api-shim": +"@storybook/api@workspace:*, @storybook/api@workspace:deprecated/manager-api-shim": version: 0.0.0-use.local resolution: "@storybook/api@workspace:deprecated/manager-api-shim" dependencies: @@ -5937,8 +5937,6 @@ __metadata: dependencies: "@babel/core": ^7.22.0 "@storybook/addons": 7.1.0-beta.2 - "@storybook/api": 7.1.0-beta.2 - "@storybook/channel-postmessage": 7.1.0-beta.2 "@storybook/channels": 7.1.0-beta.2 "@storybook/client-api": 7.1.0-beta.2 "@storybook/client-logger": 7.1.0-beta.2 @@ -5997,7 +5995,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/channel-postmessage@7.1.0-beta.2, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:deprecated/channel-postmessage": +"@storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:deprecated/channel-postmessage": version: 0.0.0-use.local resolution: "@storybook/channel-postmessage@workspace:deprecated/channel-postmessage" dependencies: @@ -6427,7 +6425,6 @@ __metadata: dependencies: "@storybook/addons": 7.1.0-beta.2 "@storybook/builder-vite": 7.1.0-beta.2 - "@storybook/channel-postmessage": 7.1.0-beta.2 "@storybook/client-api": 7.1.0-beta.2 "@storybook/core-server": 7.1.0-beta.2 "@storybook/html": 7.1.0-beta.2 @@ -6562,8 +6559,6 @@ __metadata: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 "@storybook/addon-designs": ^7.0.0 "@storybook/addons": 7.1.0-beta.2 - "@storybook/api": 7.1.0-beta.2 - "@storybook/channel-postmessage": 7.1.0-beta.2 "@storybook/channels": 7.1.0-beta.2 "@storybook/client-logger": 7.1.0-beta.2 "@storybook/components": 7.1.0-beta.2 @@ -6940,7 +6935,6 @@ __metadata: resolution: "@storybook/preview-api@workspace:lib/preview-api" dependencies: "@jest/globals": ^29.5.0 - "@storybook/channel-postmessage": 7.1.0-beta.2 "@storybook/channels": 7.1.0-beta.2 "@storybook/client-logger": 7.1.0-beta.2 "@storybook/core-common": 7.1.0-beta.2 diff --git a/test-storybooks/ember-cli/package.json b/test-storybooks/ember-cli/package.json index a5914ff7344a..638a9adb8b48 100644 --- a/test-storybooks/ember-cli/package.json +++ b/test-storybooks/ember-cli/package.json @@ -30,13 +30,10 @@ "@storybook/addon-viewport": "portal:../../code/addons/viewport", "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", "@storybook/builder-manager": "portal:../../code/builders/builder-manager", "@storybook/builder-vite": "portal:../../code/builders/builder-vite", "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", "@storybook/client-api": "portal:../../code/deprecated/client-api", diff --git a/test-storybooks/external-docs/package.json b/test-storybooks/external-docs/package.json index 3bf8e47fc385..85041e47180d 100644 --- a/test-storybooks/external-docs/package.json +++ b/test-storybooks/external-docs/package.json @@ -34,8 +34,6 @@ "@storybook/builder-manager": "portal:../../code/builders/builder-manager", "@storybook/builder-vite": "portal:../../code/builders/builder-vite", "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", "@storybook/client-api": "portal:../../code/deprecated/client-api", diff --git a/test-storybooks/server-kitchen-sink/package.json b/test-storybooks/server-kitchen-sink/package.json index 0421848268af..d35e02a6c764 100644 --- a/test-storybooks/server-kitchen-sink/package.json +++ b/test-storybooks/server-kitchen-sink/package.json @@ -33,13 +33,10 @@ "@storybook/addon-viewport": "portal:../../code/addons/viewport", "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", "@storybook/builder-manager": "portal:../../code/builders/builder-manager", "@storybook/builder-vite": "portal:../../code/builders/builder-vite", "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", "@storybook/client-api": "portal:../../code/deprecated/client-api", diff --git a/test-storybooks/standalone-preview/package.json b/test-storybooks/standalone-preview/package.json index 1cc475ca07d0..255f7d0e8d42 100644 --- a/test-storybooks/standalone-preview/package.json +++ b/test-storybooks/standalone-preview/package.json @@ -26,13 +26,10 @@ "@storybook/addon-viewport": "portal:../../code/addons/viewport", "@storybook/addons": "portal:../../code/deprecated/addons", "@storybook/angular": "portal:../../code/frameworks/angular", - "@storybook/api": "portal:../../code/lib/api", "@storybook/blocks": "portal:../../code/lib/blocks", "@storybook/builder-manager": "portal:../../code/builders/builder-manager", "@storybook/builder-vite": "portal:../../code/builders/builder-vite", "@storybook/builder-webpack5": "portal:../../code/builders/builder-webpack5", - "@storybook/channel-postmessage": "portal:../../code/lib/channel-postmessage", - "@storybook/channel-websocket": "portal:../../code/lib/channel-websocket", "@storybook/channels": "portal:../../code/lib/channels", "@storybook/cli": "portal:../../code/lib/cli", "@storybook/client-api": "portal:../../code/deprecated/client-api", From 3a92db604392058a29c0c04914a4bfe05dabc43a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 10 Jul 2023 15:37:20 +0200 Subject: [PATCH 067/135] fix, by removing it from the preview-builder for webpack in it's creation of aliasses --- .../builder-webpack5/src/preview/iframe-webpack.config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts index 44eff2e63bc9..44ec4e92c8e5 100644 --- a/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts +++ b/code/builders/builder-webpack5/src/preview/iframe-webpack.config.ts @@ -32,7 +32,6 @@ const wrapForPnP = (input: string) => dirname(require.resolve(join(input, 'packa const storybookPaths: Record<string, string> = { ...[ // these packages are not pre-bundled because of react dependencies - 'api', 'components', 'global', 'manager-api', From cab5fcb8e91af8dc556e49c8d63900c2afc637e4 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 10 Jul 2023 23:20:31 +0200 Subject: [PATCH 068/135] regen lockfile for scripts --- scripts/yarn.lock | 1994 +++++++++++++++++++++++++-------------------- 1 file changed, 1088 insertions(+), 906 deletions(-) diff --git a/scripts/yarn.lock b/scripts/yarn.lock index 603b3509edbc..9420d1a919cd 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8c0 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + "@actions/core@npm:^1.10.0": version: 1.10.0 resolution: "@actions/core@npm:1.10.0" @@ -50,45 +57,45 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/compat-data@npm:7.22.5" - checksum: 97f3c24a71b4e7d5f91c5807f6206a9cdb4123e595c51b34a19e9ea22b837003f969f732fde8819928d66e7b64047fd736c6717c8a1b96bf27fbfc30f6834aff +"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/compat-data@npm:7.22.6" + checksum: 09971bda48c46e19d8f1d8c817ebd60ccca2ca30b90324ba6227cfa3765847a9ddd7730481ec81149a2270e2c90c2674e41ebbb73258e48c37922171ffe1e6dc languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.0": - version: 7.22.5 - resolution: "@babel/core@npm:7.22.5" + version: 7.22.8 + resolution: "@babel/core@npm:7.22.8" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/generator": ^7.22.7 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-module-transforms": ^7.22.5 - "@babel/helpers": ^7.22.5 - "@babel/parser": ^7.22.5 + "@babel/helpers": ^7.22.6 + "@babel/parser": ^7.22.7 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 + "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 + "@nicolo-ribaudo/semver-v6": ^6.3.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - semver: ^6.3.0 - checksum: c00e1474a41c18b669511dd1a1bd757d854cc8128218421a73c3b1c76b44fb22a57bbbd29a73b7a156cb1460af7a94602f81bed76b8d78c6ffae4de954b32a50 + checksum: d506ac42eaf2f7c3c190cc91a1413bb9ae5c067e06268fa962cb5fd0e67fc0feb48c7fa51527da378e3cc3a92a13a3420bae877df89207d880c839b6bb73e662 languageName: node linkType: hard -"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.7.2": - version: 7.22.5 - resolution: "@babel/generator@npm:7.22.5" +"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.7.2": + version: 7.22.7 + resolution: "@babel/generator@npm:7.22.7" dependencies: "@babel/types": ^7.22.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 0613eddb4d1f7d82d88ad304e1acf48fddc3cdfb4c94bc3d2a9128cf0cdeedc0aa8d60301715c3b67537c00d9c9c9d50aad4339e7af1295c90def21893b17f7f + checksum: 7eb106916d782d397d0d4370bb4b23229229481218693a55f3fc0b756d4e9dc39cee41872f1735decb0b34be8dbb98c4488d5f7abbf6e40826d5dcac045b1f12 languageName: node linkType: hard @@ -110,24 +117,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-compilation-targets@npm:7.22.5" +"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-compilation-targets@npm:7.22.6" dependencies: - "@babel/compat-data": ^7.22.5 + "@babel/compat-data": ^7.22.6 "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.3 + "@nicolo-ribaudo/semver-v6": ^6.3.3 + browserslist: ^4.21.9 lru-cache: ^5.1.1 - semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: f36a2f27d970fa61b32090840ec847f73c6ada50becf7222c8778dd7ae07661c56f83d57e4c18437160e221512f91c442e3b86703741b45fc1277a548a6fd819 + checksum: a37ae986bbfc61bc1adebe05a415ac03e0e8100e4b1ccbfd6ed90ffe201947beae9d7bd2cebe562199e1326797f908153d7b544520786eecf99fccb9db3c0fa9 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.5" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 @@ -136,40 +143,39 @@ __metadata: "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - semver: ^6.3.0 + "@babel/helper-split-export-declaration": ^7.22.6 + "@nicolo-ribaudo/semver-v6": ^6.3.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: a7a98b73dde9c7b0820f5b56e2b8f4cdeaf1a23ec9ab5bb642a9b6cc7c24154e84d20f6de49761dbc34dc84a4797a87db328e8f4b86867bff004a5809fe9e3d5 + checksum: 4411b40bad0b4f1927eaaabbedd0b75cb9a7c18d18c3c2139dcf66a59352092632d8e38fe462337206167f11a6d4a70459ecc06a0ae30400dcbe56773fe3617d languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 + "@nicolo-ribaudo/semver-v6": ^6.3.3 regexpu-core: ^5.3.1 - semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 134e019881cd985bf329648c2885eee31298e2ef0610ed3ba36dca8dc3a5d17851c61d890acb7904bf72a755182bdca39861079729ca71940f0149ed589c9f85 + checksum: 09e195edf82c94d04fe4a53dc2dc38f9bac499625e99da21e2b16b3f3f765971ce903b7621fe868e496117a5084fd513d05b5ca58b57f46acc641af84eedc68d languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.4.0": - version: 0.4.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.0" +"@babel/helper-define-polyfill-provider@npm:^0.4.1": + version: 0.4.1 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.1" dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 - semver: ^6.1.2 peerDependencies: "@babel/core": ^7.4.0-0 - checksum: 953c6ebda6871f2aa093f002f5e085ecbefe684580543fc7c309fe9aa5ce626758e02697a51cd25acf5cab56b1028a789fd38674d5872de74927a58049fbdc19 + checksum: 402a8ca29354f01640d7226587576479507093437239ec1ba283c190986442a8759e5043859df9795c07c43d9b99d0685ee36ff77974c5be9a0cbec36a8283af languageName: node linkType: hard @@ -242,7 +248,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d @@ -295,12 +301,12 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-split-export-declaration@npm:7.22.5" +"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: "@babel/types": ^7.22.5 - checksum: a1e463086f97778584c44129c5c37282d033bf97867b300ff42e64279df18d41fe0e56ebe6a1b27f907afa66ad2a313558db8d2e83e73384c5b22ac726c9c52a + checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard @@ -337,14 +343,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helpers@npm:7.22.5" +"@babel/helpers@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helpers@npm:7.22.6" dependencies: "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 + "@babel/traverse": ^7.22.6 "@babel/types": ^7.22.5 - checksum: efa2d0fc2107e270782a784af3a52e5e0b97187b7b34feeeeb00454bc322e802ff4007b22410c387c05580c793f517c4bafc8a6a3acfdb0e3a1b349728f270c4 + checksum: 8c03c19802d0fcc78d00d1eaa9ddab28f97f0c78a5d570762800e86f08c6f41750ad61e20cdede977a56173edf85e7175f1fd804eb6ef817280f064d3a3ca514 languageName: node linkType: hard @@ -359,12 +365,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.7.0": - version: 7.22.5 - resolution: "@babel/parser@npm:7.22.5" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.7.0": + version: 7.22.7 + resolution: "@babel/parser@npm:7.22.7" bin: parser: ./bin/babel-parser.js - checksum: d6a1b1e1f375cf7f81263c57f0b6d41d67e9f498d75960ec7ab62a194d7c232a125a951009edc0c991cb7d6cc6b78b006b15e1e8fb83e0de3fe0ceb6bf3d95ef + checksum: d2bdf212644c39de58f1216540ec5aca4a05ffbec07c904eaaef8575dd9546b55345b91dcc0d306be4adbb717401ce321027bac7e2f7babfd66794c96243bb79 languageName: node linkType: hard @@ -405,17 +411,17 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.22.0": - version: 7.22.5 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" + version: 7.22.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/plugin-syntax-decorators": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 31930187a8b3fc58ea92b7b667c7947de70a31c4309122e223cdac7bddaab963f4ed0ca8aaeca730dd313521574f8c34e427c4fadc0ecb2d38522ddd5a7acb5f + checksum: 80a0db66b04fb09afb57abcc5dbde89659f076b4579656e4a0670510d9de7c68aa17fff7479f42078d42b00ada546228a55694a9bd6a050bc57997d1f7feb008 languageName: node linkType: hard @@ -694,9 +700,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.5" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.7": + version: 7.22.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.7" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 @@ -704,7 +710,7 @@ __metadata: "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 99ba86cbabb93d6a339398ca8ddaba8fbb40224831daa9ccff692c8532d7ce5de34fd71e60396427d4585ded9484b242aecd042af449f1944ca7b4bbb8ef5b4a + checksum: b9712f47de65d8409625de5cfa4bda6984f9e7065f6170c34b3d11974879276ffa61675c8118de5de7746f5de378c5dfc21efc706664c6f0c652fb58949b53f0 languageName: node linkType: hard @@ -768,22 +774,22 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-classes@npm:7.22.5" +"@babel/plugin-transform-classes@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-classes@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c5ac4a3ea8bf7441246e963c35617c1fe8d6515c94a376ef0b724c6950fbb9e5481c51fc4ff13e5afd8949a6bfe1ef20ab937692054772e2376dfeae3b6b99b5 + checksum: 915f1c0d3a0446a3ebfb099c4a5e714896f773322432b91572e6739d7af82e9743ae2874eb596ef1d26ed94472385eb814e1f33b033fc708155576d566e1f5ff languageName: node linkType: hard @@ -1076,16 +1082,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.5" +"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 73c62d707d47a8a483e81700beef9119e8af7290623b8ac2cf4918fadd7286a700c8fdb846e66b0fb795d4dc67c8e60b13dfed3fa2311129c67314bbe173b82a + checksum: bb8188df57ab46c4c708eea17eddd20238ef9106c0e82016b1eb9565f073746e385e0be0b6ee25148507f3dc849311147a43323109c97106f15e0e7ff3220fdf languageName: node linkType: hard @@ -1327,11 +1333,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.22.0": - version: 7.22.5 - resolution: "@babel/preset-env@npm:7.22.5" + version: 7.22.7 + resolution: "@babel/preset-env@npm:7.22.7" dependencies: - "@babel/compat-data": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/compat-data": ^7.22.6 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 @@ -1356,13 +1362,13 @@ __metadata: "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.7 "@babel/plugin-transform-async-to-generator": ^7.22.5 "@babel/plugin-transform-block-scoped-functions": ^7.22.5 "@babel/plugin-transform-block-scoping": ^7.22.5 "@babel/plugin-transform-class-properties": ^7.22.5 "@babel/plugin-transform-class-static-block": ^7.22.5 - "@babel/plugin-transform-classes": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.6 "@babel/plugin-transform-computed-properties": ^7.22.5 "@babel/plugin-transform-destructuring": ^7.22.5 "@babel/plugin-transform-dotall-regex": ^7.22.5 @@ -1387,7 +1393,7 @@ __metadata: "@babel/plugin-transform-object-rest-spread": ^7.22.5 "@babel/plugin-transform-object-super": ^7.22.5 "@babel/plugin-transform-optional-catch-binding": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.6 "@babel/plugin-transform-parameters": ^7.22.5 "@babel/plugin-transform-private-methods": ^7.22.5 "@babel/plugin-transform-private-property-in-object": ^7.22.5 @@ -1405,14 +1411,14 @@ __metadata: "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": ^0.1.5 "@babel/types": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - core-js-compat: ^3.30.2 - semver: ^6.3.0 + "@nicolo-ribaudo/semver-v6": ^6.3.3 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dd2b70e96102fc2a64f57c3ab177abeb5aac3f71f47701787b6264d91d7d3ea3d38526d8e1133eb667ca88e87c997ed4a1b8d498ca8be2af07ae4995dfac1b83 + checksum: 4463c50ccab7aa06a60dde5c1f6e94fdf18e425935b13a1bf168ece9b7bd29dcad015a788581a5c5297bae28a3adcea2472fc74d4e1296aa7195ce0a72a9cac5 languageName: node linkType: hard @@ -1470,11 +1476,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" dependencies: regenerator-runtime: ^0.13.11 - checksum: 11dcaeecd2246857ccf22f939fcae28a58d29e410607bfa28b95d9b03e298a3e3df8a530e22637d5bfccfc1661fb39cc50c06b404b5d53454bd93889c7dd3eb8 + checksum: 5a273e7d66586582041c68332028db5376d754d483422541fdc904e10474a6f8aef14dd3a5aabcbcb6daea87b64531cc4be993d2943557ede4a2613f5328a981 languageName: node linkType: hard @@ -1489,21 +1495,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2": - version: 7.22.5 - resolution: "@babel/traverse@npm:7.22.5" +"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.7.0": + version: 7.22.8 + resolution: "@babel/traverse@npm:7.22.8" dependencies: "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 + "@babel/generator": ^7.22.7 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - "@babel/parser": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.7 "@babel/types": ^7.22.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: 0217ec5ece6e4e3b6fd39dc4a23903d2d8ec76a7163731ae51a8cca03a450fb592782d620b8525219a5df9268b22901f3328a23440646d5ec2db4e3952817121 + checksum: 839014824c210388ed46f92bf5265522bd5bbb4a9a03c700f9d79b151bdd0aa077c2f6448a0cef41132188cc2bc6d8cdcad98a297ba59983401e882bdc256b1f languageName: node linkType: hard @@ -1572,156 +1578,156 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/android-arm64@npm:0.18.6" +"@esbuild/android-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm64@npm:0.18.11" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/android-arm@npm:0.18.6" +"@esbuild/android-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm@npm:0.18.11" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/android-x64@npm:0.18.6" +"@esbuild/android-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-x64@npm:0.18.11" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/darwin-arm64@npm:0.18.6" +"@esbuild/darwin-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-arm64@npm:0.18.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/darwin-x64@npm:0.18.6" +"@esbuild/darwin-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-x64@npm:0.18.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/freebsd-arm64@npm:0.18.6" +"@esbuild/freebsd-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-arm64@npm:0.18.11" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/freebsd-x64@npm:0.18.6" +"@esbuild/freebsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-x64@npm:0.18.11" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-arm64@npm:0.18.6" +"@esbuild/linux-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm64@npm:0.18.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-arm@npm:0.18.6" +"@esbuild/linux-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm@npm:0.18.11" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-ia32@npm:0.18.6" +"@esbuild/linux-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ia32@npm:0.18.11" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-loong64@npm:0.18.6" +"@esbuild/linux-loong64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-loong64@npm:0.18.11" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-mips64el@npm:0.18.6" +"@esbuild/linux-mips64el@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-mips64el@npm:0.18.11" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-ppc64@npm:0.18.6" +"@esbuild/linux-ppc64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ppc64@npm:0.18.11" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-riscv64@npm:0.18.6" +"@esbuild/linux-riscv64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-riscv64@npm:0.18.11" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-s390x@npm:0.18.6" +"@esbuild/linux-s390x@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-s390x@npm:0.18.11" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/linux-x64@npm:0.18.6" +"@esbuild/linux-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-x64@npm:0.18.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/netbsd-x64@npm:0.18.6" +"@esbuild/netbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/netbsd-x64@npm:0.18.11" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/openbsd-x64@npm:0.18.6" +"@esbuild/openbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/openbsd-x64@npm:0.18.11" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/sunos-x64@npm:0.18.6" +"@esbuild/sunos-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/sunos-x64@npm:0.18.11" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/win32-arm64@npm:0.18.6" +"@esbuild/win32-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-arm64@npm:0.18.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/win32-ia32@npm:0.18.6" +"@esbuild/win32-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-ia32@npm:0.18.11" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.6": - version: 0.18.6 - resolution: "@esbuild/win32-x64@npm:0.18.6" +"@esbuild/win32-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-x64@npm:0.18.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1744,27 +1750,27 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.3": - version: 2.0.3 - resolution: "@eslint/eslintrc@npm:2.0.3" +"@eslint/eslintrc@npm:^2.1.0": + version: 2.1.0 + resolution: "@eslint/eslintrc@npm:2.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.5.2 + espree: ^9.6.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 46291c33bf580ab12101fb7f20adabaa60326a7de094409ab4a5ca4611552ab2325f8d677d6c1d2d9f45f83f93360b115a0b4488bc48180cca0d0f386804d829 + checksum: 6ffbc3e7867b377754492539af0e2f5b55645a2c67279a70508fe09080bc76d49ba64b579e59a2a04014f84d0768301736fbcdd94c7b3ad4f0e648c32bf21e43 languageName: node linkType: hard -"@eslint/js@npm:8.43.0": - version: 8.43.0 - resolution: "@eslint/js@npm:8.43.0" - checksum: ff1a1587e8f28c21dda36a331cf70ca16b76e5897cecf10f6b4c326abddf18db565ee5f71feb89cbb0d3d20ff321a2536357562c0233868eed70784640b73cf4 +"@eslint/js@npm:8.44.0": + version: 8.44.0 + resolution: "@eslint/js@npm:8.44.0" + checksum: ce7b966f8804228e4d5725d44d3c8fb7fc427176f077401323a02e082f628d207133a25704330e610ebe3254fdf1acb186f779d1242fd145a758fdcc4486a660 languageName: node linkType: hard @@ -1955,29 +1961,29 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 59dfbdb6c3c15652f8d7267071f24d6335afbed0b1cf71aed70b6ce8deb1d86e7f4aadb978f639435650107fd22476b59e63a3d3a9ac99b1aca739b795a54410 + checksum: d62b089015f06d2ca277d8bff63a2c19b861b12161f5b8a69207498b980659dedfdcdcdcd1c0d5078a73cba5dd270392c65476ba9a48b795d1276517ba30f7ed languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/core@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/reporters": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/reporters": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 @@ -1985,20 +1991,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 + jest-config: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-resolve-dependencies: ^29.5.0 - jest-runner: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - jest-watcher: ^29.5.0 + jest-resolve: ^29.6.1 + jest-resolve-dependencies: ^29.6.1 + jest-runner: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 + jest-watcher: ^29.6.1 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -2006,77 +2012,77 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: e4b3e0de48614b2c339083b9159f00a024839984bd89b9afa4cfff4c38f6ce485c2009f2efa1c1e3bb3b87386288bc15798c6aebb7937d7820e8048d75461a4d + checksum: dccd83243af657da9af4c7ae578d55267c85e5bf1755a3a3e189c9ec0d23d409956e0eff7c13b81a388940ab9f294b0afc0241288d5832769687d919fae576fe languageName: node linkType: hard -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/environment@npm:29.6.1" dependencies: - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - checksum: 1fbe63cbfb9c3f6c9fc9d8f6917a5aceee1828d589569bbffcf5fb4bb56bc021dc3a6f239cde3099144767c97763ae134904ee522f236cd8c0d071bd7f9ef63b + jest-mock: ^29.6.1 + checksum: 9c9fddcbec02b59b9719ede7d51e23e5dcd2230365a1df45ff782ea18af4b51fa0d9f5a3e76fbee6d0b7403ae4cd3fb9c45e9f86177c9be02bbbf84ae7f778c6 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" +"@jest/expect-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect-utils@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - checksum: e7f44de651b5ef71c6e1b7a0350a704258167c20b6e8165b3100346d5c7f8eb4cd2c229ea2c048e9161666d1c086fbbc422f111f3b77da3fb89a99d52d4b3690 + checksum: e04164280c0b47a6285f39e70323b54eafc42367d9304897d55d70abd50324e060cb81efc7df82b1031eb46b82b85ecf343ed50c72654b11f1492b34c5e1a7b9 languageName: node linkType: hard -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" +"@jest/expect@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect@npm:29.6.1" dependencies: - expect: ^29.5.0 - jest-snapshot: ^29.5.0 - checksum: 447e7450af8ba61ac34d8a2ca11c56c62f6f0fb33ff13130f11a1ec9526a08d756ee72da622316a2c52ecfe726fe14432bdfb46e45aff5676f8d1a8efc8d201c + expect: ^29.6.1 + jest-snapshot: ^29.6.1 + checksum: 7766e9e02eac18edd2dfdf3481083f1a45b42efdc5fb13e3290132a0379d807a8b892ba1055c6917a3a2ed902240c556ac8704e17652b1b8387a58711867ca2f languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/fake-timers@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/fake-timers@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: dbf52fd302bf6b3d7ec49499f12835b7d7d4069d61adc62dac233021eba61186bbad3add1ceb3225a23a8745dd04fa0dcc2c38d350ecb0f26eec63f2cf5e6aff + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 112b1f26f48f16dd8732f9842d480b66545cd5226d674e59c758f56680d234fc4debb77497784bf26130b21caab4d8cd39cf09afbbb2863a0a4ee0ccdb4c6e14 languageName: node linkType: hard -"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/globals@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/types": ^29.5.0 - jest-mock: ^29.5.0 - checksum: 0c25f07d8125e45cf3c21442e625f6a636eaf7f4cf1cf3f9f66bae059aeb31d3dc61dfff9479eb861a5089dca34c95e231ad88b8925bee42387abecbfe5ecbc2 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.1 + checksum: 9ee8a6e476b8e74d4aa16150ea0ba0b8ecc25328062762cb46095fdec9638fc525d0e7f06e3aa1413600749c79d02a4db18da9912675843672242ea44763fa49 languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -2088,9 +2094,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -2100,74 +2106,74 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 72b771a7749ac2eb9b671f2a886dc98cbe914dfa1a4266854b040e4cc563bf9f5db02b8ff8654b7bfbc3b28caa6d48ca0dde9707454ea4f79d77bd13b6357929 + checksum: fd6e1eab9afee7eebb0a5f461b447b72d227459ce0e96e3ad4024e8795a36d03e1110c91fae9c61a5da50df42978041455f96bf5b09e5b0cead33fb44c63150b languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" +"@jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 + "@sinclair/typebox": ^0.27.8 + checksum: 8671b1fb59c4296204d335190e8451e1983d9f2db6dbbd38f838c6c273fd222fc11e4e0df04adfb6169d36acfb9693d525db136653ec04e6884180f45a131d8f languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/source-map@npm:29.6.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 353f9989dcb416e8a2559ad2831b4b3e8446a9f8259782cec97f89903b5c00baa76ea3e23a3f1c83c1ccb3999a9e318b8c6a4bab29e4b66a4abdbb760e445a50 + checksum: afa654e3634ad74d5f8388ccffd7ecbd745bdce7f6f0860b69c07827c3ee5bb408f52b6c3136b43157ef5874c099059484e43bd3aa391232ab27d8c330399789 languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 5d637c9935ea0438b2a7c106d48756967e5a96fa4426a9b16ea2a3e73e1538eabd10fd4faa8eb46aa4fee710a165e0fd2ce0603dacde5e8a1bba541100854b1d + checksum: 0b460253f092042cb2edaae92f9f22aed150a2dc3eaa8dbd60a31db8a3b12fc14c89784b580e0a678ef52e7438a11b27eaaedd2bc9c4328dbbd6d5d72983de6c languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-sequencer@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 + "@jest/test-result": ^29.6.1 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 slash: ^3.0.0 - checksum: 6fb7549a5dbe2da6817eb853134f76cf2b320b283900c5e63c997ecfadc616379372a49ac8c0f4ffdb9616eed4a5908c74cb7a560a395a6e1dc0d072b865657b + checksum: 411b7fd3a55daaf6f3ce7d3f3cd7114580126df9190a3f27d4e5a5429d91cb56c77899560afefd69451cde4911259c44f9e5fb09d975dc1f1ba597295a64f165 languageName: node linkType: hard -"@jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/transform@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 + jest-util: ^29.6.1 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 113598311d84ec7e4a4aadd340e332bbfbbd66e20eabea8b2f084b80cf97c1bc9e1ff90278c4f04b227afa95e3386d702363715f9923062c370c042c31911d94 + checksum: e34ddd89f372af749e983e29febfbb6f9a96eb677af32b5b299ce36eeab7b1ae55ddda2b64ff91437991f3f9b43cfc7ffa3b511ce7e7c1c23ae2b50d8a65a07f languageName: node linkType: hard @@ -2184,17 +2190,17 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" +"@jest/types@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/types@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d + checksum: 58de1c2484f6c4968b566fb1661506794d3df79476c0605a71b6e40b8a5a1a9837b9c692782540a179daa424c572c7d0818afa306918e3fcd29c4a962ed34a7b languageName: node linkType: hard @@ -2254,7 +2260,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: @@ -2280,6 +2286,15 @@ __metadata: languageName: node linkType: hard +"@nicolo-ribaudo/semver-v6@npm:^6.3.3": + version: 6.3.3 + resolution: "@nicolo-ribaudo/semver-v6@npm:6.3.3" + bin: + semver: bin/semver.js + checksum: 9ef70305fa9b03709805128611c0d95beec479cdd6f6b608386d6cee7a3d36f61e6f749378b60f1e5fca19fc58da7b06fccfe3540c0dbc40719731827d4eb1df + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -2785,10 +2800,10 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 2faf9878f3a65a1f2855add80b0fe8c6fe83f084ea1ab432fa7506e7c85c55ae121c4af516d089b5737f5fad23b3628fcc83a6a5df29030c3f611185ce0388ac +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard @@ -3068,90 +3083,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-arm64@npm:1.3.66" +"@swc/core-darwin-arm64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-arm64@npm:1.3.68" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-x64@npm:1.3.66" +"@swc/core-darwin-x64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-x64@npm:1.3.68" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" +"@swc/core-linux-arm-gnueabihf@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" +"@swc/core-linux-arm64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" +"@swc/core-linux-arm64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" +"@swc/core-linux-x64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-musl@npm:1.3.66" +"@swc/core-linux-x64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-musl@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" +"@swc/core-win32-arm64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" +"@swc/core-win32-ia32-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" +"@swc/core-win32-x64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.23": - version: 1.3.66 - resolution: "@swc/core@npm:1.3.66" - dependencies: - "@swc/core-darwin-arm64": 1.3.66 - "@swc/core-darwin-x64": 1.3.66 - "@swc/core-linux-arm-gnueabihf": 1.3.66 - "@swc/core-linux-arm64-gnu": 1.3.66 - "@swc/core-linux-arm64-musl": 1.3.66 - "@swc/core-linux-x64-gnu": 1.3.66 - "@swc/core-linux-x64-musl": 1.3.66 - "@swc/core-win32-arm64-msvc": 1.3.66 - "@swc/core-win32-ia32-msvc": 1.3.66 - "@swc/core-win32-x64-msvc": 1.3.66 + version: 1.3.68 + resolution: "@swc/core@npm:1.3.68" + dependencies: + "@swc/core-darwin-arm64": 1.3.68 + "@swc/core-darwin-x64": 1.3.68 + "@swc/core-linux-arm-gnueabihf": 1.3.68 + "@swc/core-linux-arm64-gnu": 1.3.68 + "@swc/core-linux-arm64-musl": 1.3.68 + "@swc/core-linux-x64-gnu": 1.3.68 + "@swc/core-linux-x64-musl": 1.3.68 + "@swc/core-win32-arm64-msvc": 1.3.68 + "@swc/core-win32-ia32-msvc": 1.3.68 + "@swc/core-win32-x64-msvc": 1.3.68 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -3178,7 +3193,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: bf1d9eb0c29d1cc100cb15272dfb55db8da02f9a90c4ae11af1803a189f686bdad9ce9b06af3b7ad004b6811efd9332cbab75be87a2c2aa7cf0a44999fab6d5d + checksum: 3788a944fb99934a3280f5d168ca758784d6a6bb554c7282d90db1bb78af9a98420171b5b6abbb4bac9556d0795e4b1332601d7eb528ee6caeffca351b8dabf9 languageName: node linkType: hard @@ -3501,6 +3516,13 @@ __metadata: languageName: node linkType: hard +"@types/http-errors@npm:*": + version: 2.0.1 + resolution: "@types/http-errors@npm:2.0.1" + checksum: 3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 + languageName: node + linkType: hard + "@types/http-server@npm:^0.12.1": version: 0.12.1 resolution: "@types/http-server@npm:0.12.1" @@ -3543,12 +3565,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:>=26.0.0": - version: 29.5.2 - resolution: "@types/jest@npm:29.5.2" + version: 29.5.3 + resolution: "@types/jest@npm:29.5.3" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: e85525fe83a0792632a31ca32968b33a0014d617442e9a515357d2aa8890052ef622b1f6fd25d48f4f1a3ab806bed94e6d9b056dea23a897464e0e35957ff654 + checksum: ba5a28569368db62eeff85ea53661c7dff79a5be739a59926c37868888cc69f8b7d0c7c6209139ecca5b83056843ba67fa764f7e7fc9c8d1c4e1f80351ede0f4 languageName: node linkType: hard @@ -3649,24 +3671,17 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8": - version: 20.3.1 - resolution: "@types/node@npm:20.3.1" - checksum: 7e8a6f5d6fc1ad3778f038f5f8df570741459984280fd2e9539af32620d93438c955fd1b90d00f9cc438cd132ec04d7669ada9e32502336e78713a3ad9b51d10 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.36 - resolution: "@types/node@npm:16.18.36" - checksum: 7d7c30bcca0f61a0f051c2d5b03a625bca209c982bae35450828ee19e5f2c79df89c0f741f98e258203b82dc027f86b6c02860830b103a5b6ec3baf4d41fe0cf +"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^16.0.0": + version: 16.18.38 + resolution: "@types/node@npm:16.18.38" + checksum: 02631f1cfe0c111024e4bf0909c3bfc7476e65e03cb32dc48b2f71f000590b244d239b349b91a6b03667c33f31fbd3200c8fc5838623fcaadce3e92d60efee1a languageName: node linkType: hard "@types/node@npm:^18.0.0": - version: 18.16.18 - resolution: "@types/node@npm:18.16.18" - checksum: 1ad22342d1aaad446625e7eb2ca6137d0036fbc451fcb367c005ed4d6a102190bbba3d104652b2f9a73d0e520752b98fb89f22f5ef8fe09e8487bcb6fd75223f + version: 18.16.19 + resolution: "@types/node@npm:18.16.19" + checksum: 322aaf3c04dcbbae619c7e8d40ed70e4ae41894e88776267d87bf3719a71b9a21ecde903d9f67cec3a663cf608d2822056ab739b48dada75433db38fadac2514 languageName: node linkType: hard @@ -3746,18 +3761,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*": - version: 18.2.13 - resolution: "@types/react@npm:18.2.13" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: 59b434ab9f2cf4874c8715a3d848d7cfd257419af8c0e486e2af5b6760c99aab62a511cb3456a3044d8250c93539016ca84fbd23eaac988e74987e268df2eef2 - languageName: node - linkType: hard - -"@types/react@npm:^16, @types/react@npm:^16.14.34": +"@types/react@npm:*, @types/react@npm:^16, @types/react@npm:^16.14.34": version: 16.14.43 resolution: "@types/react@npm:16.14.43" dependencies: @@ -3809,12 +3813,13 @@ __metadata: linkType: hard "@types/serve-static@npm:*, @types/serve-static@npm:^1.13.8": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" + version: 1.15.2 + resolution: "@types/serve-static@npm:1.15.2" dependencies: + "@types/http-errors": "*" "@types/mime": "*" "@types/node": "*" - checksum: dc934e2adce730480af5af6081b99f50be4dfb7f44537893444bcf1dc97f5d5ffb16b38350ecd89dd114184d751ba3271500631fa56cf1faa35be56f8e45971b + checksum: 5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb languageName: node linkType: hard @@ -3833,11 +3838,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.6 - resolution: "@types/testing-library__jest-dom@npm:5.14.6" + version: 5.14.7 + resolution: "@types/testing-library__jest-dom@npm:5.14.7" dependencies: "@types/jest": "*" - checksum: f681d1af71b969b84cb2bfbf6e09f97a951eed577f983f4c0335e9175bc94b0721217fa10d06f30fabc3b09ccbcfb3c1f5957fa1d3a8becf04c1536bd8364948 + checksum: 793a8505e8551d6567271aa1999e7b41447c9ca6e00ffc4a26e62b6cf732b473c2d91ccf38d000c794a79975089a8c941cb775756c6135ffb00d65457480c5c1 languageName: node linkType: hard @@ -3855,7 +3860,14 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": +"@types/unist@npm:*": + version: 3.0.0 + resolution: "@types/unist@npm:3.0.0" + checksum: 2910fe0eb4c2d85367bf4b1caaef1e8e5d2b212b9df17ba73c32b146571c0ef0322e67e5db0052c2a3071afff1196c14a0b906bcd1512e659221b911ca8e5991 + languageName: node + linkType: hard + +"@types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb @@ -3904,15 +3916,15 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.45.0": - version: 5.60.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.60.0" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.60.0 - "@typescript-eslint/type-utils": 5.60.0 - "@typescript-eslint/utils": 5.60.0 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/type-utils": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 semver: ^7.3.7 @@ -3923,54 +3935,54 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: e41d1a45f330e766afb594429fad535f4db06efc458e74cc05109c4555550efdad57141aa088d5cb836aeb90b822e08e7690e5b650fd7b2419da1d64113d5360 + checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.45.0": - version: 5.60.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.60.0" + version: 5.62.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" dependencies: - "@typescript-eslint/utils": 5.60.0 + "@typescript-eslint/utils": 5.62.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 048dd2ed5f1aa974561bb97b8bf90fa93fdaf5a4d94fd06863282bb0251849f6623be9a7b9a9e5670eba0b93440d0fb9a3e5058c2c43d05b2a4c65f137d0c1d1 + checksum: f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.45.0": - version: 5.60.0 - resolution: "@typescript-eslint/parser@npm:5.60.0" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.60.0 - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/typescript-estree": 5.60.0 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: a9b4875a3ed37cfe8205173caf85b21f8025cf21bc295036c6265010ff622054b137fa7f3251476104086804bf55b420431efa887935b67c506800e3adcc8910 + checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.60.0": - version: 5.60.0 - resolution: "@typescript-eslint/scope-manager@npm:5.60.0" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/visitor-keys": 5.60.0 - checksum: 87c742ea716359206244e1c7a8d2805b9e1caf04bce127f84b790046ae994849f25bf38af05de7a283eec58b34ecc701f441f23dfcccb59b9185260667bfe6e7 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.60.0": - version: 5.60.0 - resolution: "@typescript-eslint/type-utils@npm:5.60.0" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": 5.60.0 - "@typescript-eslint/utils": 5.60.0 + "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -3978,23 +3990,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 0baa4baa9c059e3a0d4da19cb62b821ababce781208cf18965e54916ea718a993d969f8f42b4356409ac1ce74228532e9d1cd0f2e9d3e0815c405467775b4015 + checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.60.0": - version: 5.60.0 - resolution: "@typescript-eslint/types@npm:5.60.0" - checksum: 008aedc2322120b9b760204ae26b5ecf5a1a61da84e77427048d076074cef703914a7a2db0286f891bbd045c1246238823671ec97192e03eabec35e9f75288e2 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.60.0": - version: 5.60.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.60.0" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/visitor-keys": 5.60.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -4003,35 +4015,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 83352afbd5b32a2c0d939ba17dc3420c0e72b5d920146b96af863acda675d4f307bb5b8cff25637761dfcba0cbe71c624307f45e2b87810798967b5af0798d43 + checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.60.0, @typescript-eslint/utils@npm:^5.45.0": - version: 5.60.0 - resolution: "@typescript-eslint/utils@npm:5.60.0" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.45.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.60.0 - "@typescript-eslint/types": 5.60.0 - "@typescript-eslint/typescript-estree": 5.60.0 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 eslint-scope: ^5.1.1 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 00556a31fc288d2d59e85c139077c111ad2218ce817e24d02d9a50fb29c62293be7ab5200ae2a0cecce9c193a43519b690e9fd263bdc8bcef940eec005dc2bef + checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.60.0": - version: 5.60.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.60.0" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.60.0 + "@typescript-eslint/types": 5.62.0 eslint-visitor-keys: ^3.3.0 - checksum: 797888d1e9cfd42b92382443956f0a46d093c49bca2789699f638d79387f26c91c55b8545bfaba7b9b6d846efc6b1134df640c3975d51a8c3b57d8e6a837ab5b + checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard @@ -4245,12 +4257,12 @@ __metadata: linkType: hard "@yarnpkg/parsers@npm:^3.0.0-rc.18": - version: 3.0.0-rc.46 - resolution: "@yarnpkg/parsers@npm:3.0.0-rc.46" + version: 3.0.0-rc.48.1 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.48.1" dependencies: js-yaml: ^3.10.0 tslib: ^2.4.0 - checksum: c7f421c6885142f351459031c093fb2e79abcce6f4a89765a10e600bb7ab122949c54bcea2b23de9572a2b34ba29f822b17831c1c43ba50373ceb8cb5b336667 + checksum: 05197a056e9817f9fe059df303f7e0cb9b1740ffd18b4f5bc831366f8284f638973f1ae324e99300c463540ecb5a3c189c1b36f96c320d782c8224ff2954e8c2 languageName: node linkType: hard @@ -4370,12 +4382,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": - version: 8.9.0 - resolution: "acorn@npm:8.9.0" +"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: 5b51689d56f1ca5d6ea1fa58af478affd8d3396403637abcbc7caf28e1a47beb537cf1654f537b6cf4c73377f3e1aa99fd4a50674e64daefe08cb25c799ded28 + checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 languageName: node linkType: hard @@ -4635,12 +4647,21 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.1.3, aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": - version: 5.2.1 - resolution: "aria-query@npm:5.2.1" +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" dependencies: dequal: ^2.0.3 - checksum: 898031f69f8e9d63c914b73f45e50316fef157aae41af682fe64e8f10c9a9d623952929df01f6524b4ce37c3b21806b04e7617e38909720fbc0fad3f207d9e09 + checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 languageName: node linkType: hard @@ -4661,7 +4682,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -4916,11 +4937,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.5.0 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -4929,20 +4950,20 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 1114d3935e0f62b72e155ac79916214c078e798561be3b03d12ddd862f2849becc8516f89046719161ec457bded35d2e1fd7ddfb207a6169dd18bbb2a67ee987 + checksum: a32ac32f3b5bd66f3f8370cfd6244b0f7b18c2dd367d5829e86dea9f8516ffda63edfb2743d3e1768db93a0698b4db09cd9d22961447e0ed6fd309b5b9c22764 languageName: node linkType: hard "babel-loader@npm:^9.1.2": - version: 9.1.2 - resolution: "babel-loader@npm:9.1.2" + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" dependencies: - find-cache-dir: ^3.3.2 + find-cache-dir: ^4.0.0 schema-utils: ^4.0.0 peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: e62ca6af7dec5e9138908ca23f0f29b0865f733d76680b0b0ebc97b1ae18dc6e9cf887c02439ee0634a16eaaef0dc000d78d20c30c348f651a55f50aea5a62ff + checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb languageName: node linkType: hard @@ -4971,39 +4992,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.3" +"babel-plugin-polyfill-corejs2@npm:^0.4.4": + version: 0.4.4 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.4" dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.4.0 - semver: ^6.1.1 + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.1 + "@nicolo-ribaudo/semver-v6": ^6.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 27e014ab6116704a201a71aefa2a377f26d0e5432d0dcb7f71930773ef0ddac7a693f3a6699721efa15ae4c83631a35dcc52cc8b3032878b2dadd0a33aeabc59 + checksum: 4bb3056ae17002776e3003314068bdd7dd8e5d4b038ce1198db84346b953e73beb8d2b4445bff831c09ff217e533466eb28e771a80c3696decc2dae1347164e3 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.8.1": - version: 0.8.1 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.1" +"babel-plugin-polyfill-corejs3@npm:^0.8.2": + version: 0.8.2 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.2" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 - core-js-compat: ^3.30.1 + "@babel/helper-define-polyfill-provider": ^0.4.1 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 90320f5e5a27bcaf9a370d86ff3a9c72fd28618e51f83a7c1e31e34f9a2d671f5ca446b1c4af806cdee6388a6868da38299b3167dd860985981feeda3f2bf1c3 + checksum: de094cc9d703a3bf6518f4312491b6f033f2db45791825499c905173b2d7d0f8ab9b1919a607eb76833907c6533a2106c951108da7689c0929354d38c661f346 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.0" +"babel-plugin-polyfill-regenerator@npm:^0.5.1": + version: 0.5.1 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.1" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 + "@babel/helper-define-polyfill-provider": ^0.4.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d33f4e6f5b925754175d4058ede4d400ea92b9ad465f07a4211e4ad01a6cdb60e3a04428150eb9dd5fb7ba9c1d0cba9e22278206462b432d46d7d851b3c3cb19 + checksum: 5ec9e2ab2f031028a36f8d611f3fc3bc8347e2842e4354a28ac303e81697968549ea0ebea79cf0c28658e1e09d3a55a2a2085bb5a53d00f28bd688daa301fd6b languageName: node linkType: hard @@ -5242,7 +5263,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": +"browserslist@npm:^4.21.9": version: 4.21.9 resolution: "browserslist@npm:4.21.9" dependencies: @@ -5443,9 +5464,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001506 - resolution: "caniuse-lite@npm:1.0.30001506" - checksum: 999f7e1c955a430bda94392f44fd56450f727a9f55908b1d63e6f1f1a2ac6646c6b41f79fbcf3cd800b24162e427ee56c446be9a99d62c191fa558cba91c53aa + version: 1.0.30001514 + resolution: "caniuse-lite@npm:1.0.30001514" + checksum: 61e775d64dc992ba2b912fb74d2816c69fe7e1c3ab94f92bd94afcd44328ad9737e003872f85c1b9a0bd7a231eb6a260962297de2d3094dc106c4ed444cde03e languageName: node linkType: hard @@ -5488,9 +5509,9 @@ __metadata: linkType: hard "chalk@npm:^5.0.0, chalk@npm:^5.2.0": - version: 5.2.0 - resolution: "chalk@npm:5.2.0" - checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard @@ -5723,9 +5744,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -5814,10 +5835,10 @@ __metadata: languageName: node linkType: hard -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb languageName: node linkType: hard @@ -5939,12 +5960,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.30.1, core-js-compat@npm:^3.30.2": - version: 3.31.0 - resolution: "core-js-compat@npm:3.31.0" +"core-js-compat@npm:^3.31.0": + version: 3.31.1 + resolution: "core-js-compat@npm:3.31.1" dependencies: - browserslist: ^4.21.5 - checksum: 09cca4c2565ddea1fb65324ef17c2dcc61e6c3ec089d8b343e6cbea2b42a9c3ae5e76a42c6faff3759a321c5e7165201db93b7b47912c4c2d1c3d6afad44f7fc + browserslist: ^4.21.9 + checksum: 2f05c5d5b04e8a69cf50f538ef3fb1932ab83bd7dc690c438c7b876049cb1515eb4ca9fa29400ed7cd5885f34c901bf6a26d9149dfff8665d8302cace7e96d72 languageName: node linkType: hard @@ -5956,9 +5977,9 @@ __metadata: linkType: hard "core-js@npm:^3.8.2": - version: 3.31.0 - resolution: "core-js@npm:3.31.0" - checksum: 6216c7ada80b2468b1297d844fa99a99da97d6156cb05270b3627d8c463fb8c17baeff74ef204ef1c905712930fe82740ba2a74e2f957e4909fd241416fe5735 + version: 3.31.1 + resolution: "core-js@npm:3.31.1" + checksum: 17b44ddc675d7e924ecf0da21dcae3dc9e26758048e3275ba05fcd1a8805d45e6bacee1335b781e9d59d0c38302d5cbfc49073ef33232387459f432852fb6cd9 languageName: node linkType: hard @@ -6321,7 +6342,33 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-equal@npm:^2.0.5": + version: 2.2.2 + resolution: "deep-equal@npm:2.2.2" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.1 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.0 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: 07b46a9a848efdab223abc7e3ba612ef9168d88970c3400df185d5840a30ca384749c996ae5d7af844d6b27c42587fb73a4445c63e38aac77c2d0ed9a63faa87 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -6739,9 +6786,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.431": - version: 1.4.437 - resolution: "electron-to-chromium@npm:1.4.437" - checksum: 58825f0e645985be1874d5f9c0395ed9c8620bea347ecfa523d18ddef8dd322862e039b7fbe18bbee1bf56c38333124d01125375a4ca3271abb3d33ff2aaeae4 + version: 1.4.455 + resolution: "electron-to-chromium@npm:1.4.455" + checksum: 4436a41a91530a254d86c49fe41dc2842e84097be459679134a153104886f162d025eb4907619dac19eac1d48ccc96c0d2d86c96fb5818dab29b6237c1f5ffbd languageName: node linkType: hard @@ -6919,6 +6966,23 @@ __metadata: languageName: node linkType: hard +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 + is-map: ^2.0.2 + is-set: ^2.0.2 + is-string: ^1.0.7 + isarray: ^2.0.5 + stop-iteration-iterator: ^1.0.0 + checksum: ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" @@ -6976,31 +7040,31 @@ __metadata: linkType: hard "esbuild@npm:^0.18.0": - version: 0.18.6 - resolution: "esbuild@npm:0.18.6" - dependencies: - "@esbuild/android-arm": 0.18.6 - "@esbuild/android-arm64": 0.18.6 - "@esbuild/android-x64": 0.18.6 - "@esbuild/darwin-arm64": 0.18.6 - "@esbuild/darwin-x64": 0.18.6 - "@esbuild/freebsd-arm64": 0.18.6 - "@esbuild/freebsd-x64": 0.18.6 - "@esbuild/linux-arm": 0.18.6 - "@esbuild/linux-arm64": 0.18.6 - "@esbuild/linux-ia32": 0.18.6 - "@esbuild/linux-loong64": 0.18.6 - "@esbuild/linux-mips64el": 0.18.6 - "@esbuild/linux-ppc64": 0.18.6 - "@esbuild/linux-riscv64": 0.18.6 - "@esbuild/linux-s390x": 0.18.6 - "@esbuild/linux-x64": 0.18.6 - "@esbuild/netbsd-x64": 0.18.6 - "@esbuild/openbsd-x64": 0.18.6 - "@esbuild/sunos-x64": 0.18.6 - "@esbuild/win32-arm64": 0.18.6 - "@esbuild/win32-ia32": 0.18.6 - "@esbuild/win32-x64": 0.18.6 + version: 0.18.11 + resolution: "esbuild@npm:0.18.11" + dependencies: + "@esbuild/android-arm": 0.18.11 + "@esbuild/android-arm64": 0.18.11 + "@esbuild/android-x64": 0.18.11 + "@esbuild/darwin-arm64": 0.18.11 + "@esbuild/darwin-x64": 0.18.11 + "@esbuild/freebsd-arm64": 0.18.11 + "@esbuild/freebsd-x64": 0.18.11 + "@esbuild/linux-arm": 0.18.11 + "@esbuild/linux-arm64": 0.18.11 + "@esbuild/linux-ia32": 0.18.11 + "@esbuild/linux-loong64": 0.18.11 + "@esbuild/linux-mips64el": 0.18.11 + "@esbuild/linux-ppc64": 0.18.11 + "@esbuild/linux-riscv64": 0.18.11 + "@esbuild/linux-s390x": 0.18.11 + "@esbuild/linux-x64": 0.18.11 + "@esbuild/netbsd-x64": 0.18.11 + "@esbuild/openbsd-x64": 0.18.11 + "@esbuild/sunos-x64": 0.18.11 + "@esbuild/win32-arm64": 0.18.11 + "@esbuild/win32-ia32": 0.18.11 + "@esbuild/win32-x64": 0.18.11 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -7048,7 +7112,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: a5ed533def194066b82e87f2f8faab4f4d1e15136b33a67159328516687e085b5edbb9f79709bb95012198c957ae115b19a15b07c1d994ed79fc7d2bca568d69 + checksum: f038043facb479fc26e14eef203c8ddda2aeffeb18e82af74d0eb3daea0c3d6184d343ab62c86e5b036b3a7ae87e02388f4c60379777bf1e8f3e26156c906802 languageName: node linkType: hard @@ -7088,13 +7152,12 @@ __metadata: linkType: hard "escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -7102,7 +7165,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 + checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -7399,13 +7462,13 @@ __metadata: linkType: hard "eslint@npm:^8.28.0": - version: 8.43.0 - resolution: "eslint@npm:8.43.0" + version: 8.44.0 + resolution: "eslint@npm:8.44.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.3 - "@eslint/js": 8.43.0 + "@eslint/eslintrc": ^2.1.0 + "@eslint/js": 8.44.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -7417,7 +7480,7 @@ __metadata: escape-string-regexp: ^4.0.0 eslint-scope: ^7.2.0 eslint-visitor-keys: ^3.4.1 - espree: ^9.5.2 + espree: ^9.6.0 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -7437,24 +7500,24 @@ __metadata: lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 - optionator: ^0.9.1 + optionator: ^0.9.3 strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 1f9ff2c774e852c179ba569a3b672cbc4cf91aa59843ee32f7da363c10b5aad842672005ac04c760f6077b3471da428562274e0fcb0a78c2056866b3d36be948 + checksum: a31ca4571a67012629936d891141a4a5747d5902fb7f4e10119a5acd632e0976b9ba1b761d8c81cff8a9cc3e796df2c56f86c02535fd977de962a98ce585624a languageName: node linkType: hard -"espree@npm:^9.5.2": - version: 9.5.2 - resolution: "espree@npm:9.5.2" +"espree@npm:^9.6.0": + version: 9.6.0 + resolution: "espree@npm:9.6.0" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: 6885e57b3dcea3f65211403a10077a80a57f03e6c8b45c1e1db4bc5958e0fdb5c358819c88898ea67655d25fb646836182f688156e124a05610e714d3fcb6822 + checksum: f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be languageName: node linkType: hard @@ -7634,16 +7697,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" +"expect@npm:^29.0.0, expect@npm:^29.6.1": + version: 29.6.1 + resolution: "expect@npm:29.6.1" dependencies: - "@jest/expect-utils": ^29.5.0 + "@jest/expect-utils": ^29.6.1 + "@types/node": "*" jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - checksum: 3c9382967217ad1453e9271e0da3f83c4aeb12272968007b90fc5873340e7fb64bf4852e1522bdf27556623d031ce62f82aaac09e485a15c6d0589d50999422d + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + checksum: 8ffdd2c8c09d6d632ae85a1172a7e785e75f187ac0009330fa5bcb00e07a06d781b8016579952a1f0ef43e1604068fcdaade3029c8b5ffb99931f79bff57e778 languageName: node linkType: hard @@ -7769,16 +7833,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.0 + resolution: "fast-glob@npm:3.3.0" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + checksum: 4700063a2d7c9aae178f575648580bee1fc3f02ab3f358236d77811f52332bc10a398e75c6d5ecde61216996f3308247b37d70e2ee605a0748abe147f01b8f64 languageName: node linkType: hard @@ -7796,7 +7860,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -7955,14 +8019,13 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^3.3.2": - version: 3.3.2 - resolution: "find-cache-dir@npm:3.3.2" +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff languageName: node linkType: hard @@ -7995,6 +8058,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + "find-versions@npm:^4.0.0": version: 4.0.0 resolution: "find-versions@npm:4.0.0" @@ -8249,24 +8322,24 @@ __metadata: linkType: hard "gaxios@npm:^5.0.0, gaxios@npm:^5.0.1": - version: 5.1.0 - resolution: "gaxios@npm:5.1.0" + version: 5.1.3 + resolution: "gaxios@npm:5.1.3" dependencies: extend: ^3.0.2 https-proxy-agent: ^5.0.0 is-stream: ^2.0.0 - node-fetch: ^2.6.7 - checksum: 6f70109d2f5bbb05c968cc2e799cf50739f7851b540b01fcf7471eabee4c630b2b93ba15a2cf81a3bc4f03b8eaa9faf1a49d2149ef74fc3880add7a409690871 + node-fetch: ^2.6.9 + checksum: eb1fd1910491c18445b4e22932098346b3c16917caa3b71567abba296e2d3dcf53d4ede47825ec06223f8943ea35744553d66238c5ad8f3f7835d9dc8ed540ba languageName: node linkType: hard -"gcp-metadata@npm:^5.2.0": - version: 5.2.0 - resolution: "gcp-metadata@npm:5.2.0" +"gcp-metadata@npm:^5.3.0": + version: 5.3.0 + resolution: "gcp-metadata@npm:5.3.0" dependencies: gaxios: ^5.0.0 json-bigint: ^1.0.0 - checksum: 67a17a1fe2d5823bec99937e60595f865d6ae26072f33f7d88f5137e76b1d9278bba3fe8bd46e04440d7a6a6d588654c5af521010118f49f35a59aa38e1c05b4 + checksum: c0570f8ed821429444d6d9d46279831aa1b68092bd5f394928dd816c39904721f8a80ed463fcbeb607a469b1917fe24dad0e66dc4a94388620c9172a54fb5a5f languageName: node linkType: hard @@ -8284,7 +8357,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" dependencies: @@ -8324,6 +8397,13 @@ __metadata: languageName: node linkType: hard +"get-stdin@npm:^9.0.0": + version: 9.0.0 + resolution: "get-stdin@npm:9.0.0" + checksum: 7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b + languageName: node + linkType: hard + "get-stream@npm:^2.2.0": version: 2.3.1 resolution: "get-stream@npm:2.3.1" @@ -8462,17 +8542,17 @@ __metadata: linkType: hard "glob@npm:^10.0.0, glob@npm:^10.2.2": - version: 10.3.0 - resolution: "glob@npm:10.3.0" + version: 10.3.3 + resolution: "glob@npm:10.3.3" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 - path-scurry: ^1.7.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 0ed8f32c3ff68710b9c09d6988901bca7b20f4786e7617d2ccdc6673efaf391b562e483871747d625415c394f61abda22a6adfdce554019ad09b7515292041f9 + checksum: 50effa4208762e508def5688e4d88242db80b5913f65e9c5d5aefb707c59e66a27e845fbf18127157189f6ed0f055e2c94d7112c97a065b9cbfe002e1b26d330 languageName: node linkType: hard @@ -8572,15 +8652,15 @@ __metadata: linkType: hard "globby@npm:^13.0.0, globby@npm:^13.1.2": - version: 13.2.0 - resolution: "globby@npm:13.2.0" + version: 13.2.2 + resolution: "globby@npm:13.2.2" dependencies: dir-glob: ^3.0.1 - fast-glob: ^3.2.11 - ignore: ^5.2.0 + fast-glob: ^3.3.0 + ignore: ^5.2.4 merge2: ^1.4.1 slash: ^4.0.0 - checksum: d1ea2b09dbb24961d16413cdb45764cb63280a2a7066739df5e5b33292ce4980d9da1d168a6a135c332ea1856f921e28d8ffcc2c6c24b82d4f4208477bfe62b4 + checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard @@ -8606,19 +8686,19 @@ __metadata: linkType: hard "google-auth-library@npm:^8.0.2": - version: 8.8.0 - resolution: "google-auth-library@npm:8.8.0" + version: 8.9.0 + resolution: "google-auth-library@npm:8.9.0" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 ecdsa-sig-formatter: ^1.0.11 fast-text-encoding: ^1.0.0 gaxios: ^5.0.0 - gcp-metadata: ^5.2.0 + gcp-metadata: ^5.3.0 gtoken: ^6.1.0 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: f41a1d37763c593b39533bb86d5d35960c04a05f89abbed74e1270c94a2034c0029e659b02efe406794eb83a92c64f2fe1c064c9abc6afcafdd48894323a7e77 + checksum: a9b101e15ba0457d3abe548b59323211f2c34071721da73a74ba6a773e199e73736910fd7d39b0c978eb7655220ae6f90f4e0b5665419d298ab544f9159d1625 languageName: node linkType: hard @@ -8668,13 +8748,6 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a - languageName: node - linkType: hard - "graphemer@npm:^1.4.0": version: 1.4.0 resolution: "graphemer@npm:1.4.0" @@ -9002,12 +9075,12 @@ __metadata: linkType: hard "https-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "https-proxy-agent@npm:7.0.0" + version: 7.0.1 + resolution: "https-proxy-agent@npm:7.0.1" dependencies: agent-base: ^7.0.2 debug: 4 - checksum: 52ca5dab4c410c00673cd614013dde6ead0ad37d4fca0d2b7949914075d1e51ec398c99f05bdfc712f21a53ae80ec09bffae248c5ba01a107d9b55e6ded46de4 + checksum: f08f646809c04803843534b5e0ea5b4034beaa065ef2f9505e4afaeb2fa962a15494e563357c819203cff07232d1631739947f031149eb837a16a2f3553fbe32 languageName: node linkType: hard @@ -9110,7 +9183,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 @@ -9191,7 +9264,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.5": +"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": version: 1.0.5 resolution: "internal-slot@npm:1.0.5" dependencies: @@ -9242,7 +9315,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -9337,7 +9410,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -9447,6 +9520,13 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: 119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 + languageName: node + linkType: hard + "is-nan@npm:^1.2.1": version: 1.3.2 resolution: "is-nan@npm:1.3.2" @@ -9569,6 +9649,13 @@ __metadata: languageName: node linkType: hard +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: 5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 + languageName: node + linkType: hard + "is-shared-array-buffer@npm:^1.0.2": version: 1.0.2 resolution: "is-shared-array-buffer@npm:1.0.2" @@ -9644,6 +9731,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -9653,6 +9747,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 + languageName: node + linkType: hard + "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -9669,6 +9773,13 @@ __metadata: languageName: node linkType: hard +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -9779,48 +9890,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-circus@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.5.0 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-each: ^29.6.1 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 p-limit: ^3.1.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 77f77b826941f67e9794e185072ee612cbddf53a1cfbf736de86176b7dc54e54aef151cf31b492adaef221f550924fd60dbaa01c9b939c3a4bfb46d8392c60a8 + checksum: 9321dfabfa6fe41d4495f4fd21d1a840baacdfe9f0cc7c2346b89cd4f775ee37cc839c6d6aaac415059852bbdfafca1ed8c392999f7fbd152d6b231ca0920d1d languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -9830,34 +9941,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: d63df7e329760bc036d11980883399de86b41a7fa93bbc2e79feef28284b096dec40afc21796504555ccbf32806bfc78cf64a63eac9093bb4f036b282b409863 + checksum: 37850378efcb5bea2d000d4c78eac5af871bcd53d3f8e60902f33f116ec847f9a3641ca78f1ca046b4c1c6e2031e084d78b01eba3592788b3e3c983c0d5a4b21 languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.5.0 - "@jest/types": ^29.5.0 - babel-jest: ^29.5.0 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.5.0 - jest-environment-node: ^29.5.0 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-runner: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -9868,19 +9979,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 01780eb66815e3d31d237aab5d7611ea59e0cdf159cbab2a7c682cb08bde6d053c17a528547440fb1b0294c26ebfd5b54ad35d8c9439f6fae76960ee0bc90197 + checksum: 6f3c3ac7587b651d22b199fdc3c4ad17a08397c2fcae05543a7a81e03a7e12355aaa3c75ce39e6df5c8fd8efcd65518cf05f528f7724cb8df17aa4e44dd74ecf languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" +"jest-diff@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-diff@npm:29.6.1" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 00fda597fa6ee22774453c3cd35c2210bd7f749cf48ad7a41c13b898b2943c9c047842720eb928cdb949b9de87204d8d8987bf12aefdb2f0504f5f4112cab5b0 + pretty-format: ^29.6.1 + checksum: f067d977937744df7dd8a269e2948620e4bcb35ff70d9ea1d0fe75a47fa603ce3edc350961b671c94f8de5adb65d6bdeb0002569b59983fba56f02dd4b47d171 languageName: node linkType: hard @@ -9893,51 +10004,51 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-each@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.5.0 - pretty-format: ^29.5.0 - checksum: 214f6b5adfc0d6a3e837769018b7a7b69f41e99aac939fe4730bcca23f69e3566ed23706f95a396b20e63e6b9f90990053fc3c1662808036d4f41e4d6d32641d + jest-util: ^29.6.1 + pretty-format: ^29.6.1 + checksum: b2cbea027a7d68c6a22afff1d460c866389e5c3ec1fece930b3fa79df24fb39f3ca258679de9ca0c2af4a6a70e5aa542ff6779f32d21289bdf981a7c1470aa0e languageName: node linkType: hard "jest-environment-jsdom@npm:^29.3.1": - version: 29.5.0 - resolution: "jest-environment-jsdom@npm:29.5.0" + version: 29.6.1 + resolution: "jest-environment-jsdom@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 972a1bdfb1d508a359951ec11ade5dfad7cfabea0ab9f7746737ba10e0c6381e34f2b4acb03c7e5eb623611813310dfb0775eb0607c5537b7618234d04aab2ac + checksum: 457ac6f78b9b98d1a86af944469fd2cce6d16d40afa748a8226c77850b98fd376d5bbcbf2b68a72ee3748091b95321fedc4044d3def45c47b139a9b57d4757be languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-environment-node@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 2e636a095ff9a9e0aa20fda5b4c06eebed8f3ba2411062bdf724b114eedafd49b880167998af9f77aa8aa68231621aebe3998389d73433e9553ea5735cad1e14 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 2e168708553f45c2afc42234dd78c4677d1bd34a11e0c8d43e8ca6da8e68cd55acb2215cdfc46cba8c5b1dbc0061783006ecbc214a02a5ae962602f80232d7fc languageName: node linkType: hard @@ -9948,11 +10059,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-haste-map@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -9960,14 +10071,14 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 162edfa185478db9ebe7dff73f3475ef2c205d94fa2b0fc3b41aba4fc29bab274d4a76ca41ca20ea7d9d6ed2b0d8519e298cfffbf5cad6631412d8961c190612 + checksum: 6d100cd80c89d2c45175e6504eafe40ba4dfb1e77a4e204204a5f2905a4840e73ff66cee187b39e33a1af2406831a48f1f945efdf872071e19ac417eb0a3aac1 languageName: node linkType: hard @@ -10002,42 +10113,42 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-leak-detector@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: d7db5d4a7cb676fc151f533d6887f3d6bbb4e35346346cbed0b5583c296b13af2d3c8434b30f62b0eb9c711718c7f4bd48496c47af3a20320ee162e33d64aaf2 + pretty-format: ^29.6.1 + checksum: 17e702b3a790e37dd76b93e2f782de228bb332030e478264f2eb081e1d13907f414a6ec2271b173b2516e7faa4c7b0ddd1c9c5ae9b9293ed921a9ee943fafd1a languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" +"jest-matcher-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-matcher-utils@npm:29.6.1" dependencies: chalk: ^4.0.0 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 0a3ae95ef5c5c4ac2b2c503c2f57e173fa82725722e1fadcd902fd801afe17d9d36e9366820959465f553627bf1e481a0e4a540125f3b4371eec674b3557f7f3 + pretty-format: ^29.6.1 + checksum: 4425bcb900bd25dbd679c220ef978f80aab11a7b6bed0e178cf8fe3c7167ecefdb6f522e3cf3e877a622160f781cea02aac43a3e243dc8afca917e90418434b8 languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" +"jest-message-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-message-util@npm:29.6.1" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 706e89cacc89c090af584f4687c4e7f0616706481e468ec7c88270e07ae7458a829e477b7b3dff56b75d801f799d65eb2c28d6453c25dd02bea0fd98f0809dbb + checksum: 7a34c7ee4efada36aa385a07e1d22f8b6183dda37f7bca15fcf2e9575e9b91ce6ea88429a0b749bc59d934327492e622913d7cd9ab23ca78c29353184795a68d languageName: node linkType: hard @@ -10063,14 +10174,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-mock@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-mock@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.5.0 - checksum: c5b71d397d6acd44d99cd48dad8ca76334fc5a27e120da72d264d7527a9efc7c6fc431d79de64d0b73aa0ab26a2d0712498e323d42b9e03bee05e983b0d2035c + jest-util: ^29.6.1 + checksum: 26e666787d04f341887d7612b2ada7a9c86868dac319056dac46709a00fc2ee694e7a64fad8f0d5450690d779ddaacaff7a35aaf1716a165b3e1eaf56d0aa300 languageName: node linkType: hard @@ -10100,89 +10211,89 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve-dependencies@npm:29.6.1" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.5.0 - checksum: fbe513b7d905c4a70be17fd1cb4bd83da1e82cceb47ed7ceababbe11c75f1d0c18eadeb3f4ebb6997ba979f35fa18dfd02e1d57eb556675e47b35675fde0aac7 + jest-snapshot: ^29.6.1 + checksum: 330fdc103dd1c01ae73e9e4fc4ae11d341569187a82c09aea41d50cdf9e5353d00b0405177db020b3af76cb0e402c98f2dab129afde7bcd5d99f5123d6182321 languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: e7ea3b1cf865a7e63ad297d0f43a093dde145f9ca72dc8e75b6c7eb3af60fe78e4f7d024fd92fa280419a4ca038d42a9268d4d5d512958d11347e680daca1f12 + checksum: 809ee25be7a97ed33755dbe536617cb83a0a8218c81310f5927f1a2f9e82e48353d60a5b0b630b6c25bc66825d0b2197c6c569d043a8431bae01ba6e226b5a57 languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runner@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/environment": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/environment": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-leak-detector: ^29.5.0 - jest-message-util: ^29.5.0 - jest-resolve: ^29.5.0 - jest-runtime: ^29.5.0 - jest-util: ^29.5.0 - jest-watcher: ^29.5.0 - jest-worker: ^29.5.0 + jest-environment-node: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-leak-detector: ^29.6.1 + jest-message-util: ^29.6.1 + jest-resolve: ^29.6.1 + jest-runtime: ^29.6.1 + jest-util: ^29.6.1 + jest-watcher: ^29.6.1 + jest-worker: ^29.6.1 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 96f47976b9bcc0554455c200d02ebc1547b9a7749b05353c0d55aff535509032c0c12ea25ccc294350f62c14665dbc1e00b15e0d1c52207edfb807e4fec4a36a + checksum: 69d4f22c06d06498ffacf658460c3b40d87d77ac924a9f1e5c176f56e49d696b86234473463a764bd227f056d6e4e3852a2e10f95c74d5861d7fc4c17101ab55 languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" - dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/globals": ^29.5.0 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 +"jest-runtime@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runtime@npm:29.6.1" + dependencies: + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/globals": ^29.6.1 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-resolve: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 9b5c0a97e1f24945059695e056188041730a3f1dc5924153e323eb7429244e10e7cc877b13d057869d6621c460deae11b77a2a2e9ab56e22b56864a3e44c4448 + checksum: 79850c21fb630cb35fe23e7688daa67d387735cf2912febcd95ef4195bcc4931699d28e3b16e705fa8c2843fca958524133b1fa3fe0361bc2dac17192b40125b languageName: node linkType: hard @@ -10195,62 +10306,60 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-snapshot@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/babel__traverse": ^7.0.6 + "@jest/expect-utils": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.5.0 + expect: ^29.6.1 graceful-fs: ^4.2.9 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 natural-compare: ^1.4.0 - pretty-format: ^29.5.0 - semver: ^7.3.5 - checksum: db9957d9c8607d75bb08302605331b5d90fa738fafeed820ab8ebcb2c90f9e62fb4fec0b4c826c04a37557cbb7a9ed26a10b0c74d46ffedce2d6ae8a9c891b00 + pretty-format: ^29.6.1 + semver: ^7.5.3 + checksum: 1322fb9b23e7316b5f83d467ce2f46a65fdfa84a67e0000825fd9ef4910e66bdc732cb16e6da406f94c18905b2a8c6bbc29000c79f31e1e3eeb57508ac233bb4 languageName: node linkType: hard -"jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" +"jest-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 + checksum: c4765afe8769239aef6a76aa69d9c98d383e171e4745eb65c4abb2e776f7965ab762c758f740bf726ebab428bc52b099c23f37e93dc30cf1ec46b915543f80af languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 7aabde27a9b736df65902a1bb4ec63af518d4c95e12a910e7658140784168f08c662d5babe67dfa70d843dd2096bc08aa7090fef83c7a9d6bb0893793c3a599a + pretty-format: ^29.6.1 + checksum: 4f6889852b0167f9087c3a67b598365be0807d4e8cce77e246b97df3e3cd1c13d3c98c18de07080d670c9e52b81b81d0ee48fa0544eddc987d32796f50f86371 languageName: node linkType: hard @@ -10271,42 +10380,42 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.5.0 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: 6a2e71e720183303913fc34fc24a3f87fca7fcfa638bc6c9109a4808b36251a1cb7fe98b956eb0d9c9ead1ad47c3dc3745289ee89e62c6c615168e92282069ca + checksum: bf007eb358f27c4f180202a8ec4bae2948a9563a84da073a185375b6a5251fe6cf9bf3f02f0682d2b8c343bcc5c1c2f185703009b6a47883ef1daeefed55881c languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-worker@npm:29.6.1" dependencies: "@types/node": "*" - jest-util: ^29.5.0 + jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d + checksum: 15a5c699e6074401aac85bcc869e3be95353767f127fd41cccc97c9b38e62596a1ec336866eab180beec305da2cc7da75a663f3a5ddf63b6838ff839ef5073ec languageName: node linkType: hard "jest@npm:^29.3.1": - version: 29.5.0 - resolution: "jest@npm:29.5.0" + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -10314,7 +10423,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 32e29cfa2373530ed323ea65dfb4fd5172026349be48ebb7a2dc5660adadd1c68f6b0fe2b67cc3ee723cc34e2d4552a852730ac787251b406cf58e37a90f6dac + checksum: 2c161c63cb502265805c4982b8b722307f6a7016afdcff267eab33e727b9b737baaf8c22e0a8fedfc19634e903421a0352f0c056d26a8f24b908aaed335283c8 languageName: node linkType: hard @@ -10558,7 +10667,7 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:9.0.0, jsonwebtoken@npm:^9.0.0": +"jsonwebtoken@npm:9.0.0": version: 9.0.0 resolution: "jsonwebtoken@npm:9.0.0" dependencies: @@ -10570,6 +10679,18 @@ __metadata: languageName: node linkType: hard +"jsonwebtoken@npm:^9.0.0": + version: 9.0.1 + resolution: "jsonwebtoken@npm:9.0.1" + dependencies: + jws: ^3.2.2 + lodash: ^4.17.21 + ms: ^2.1.1 + semver: ^7.3.8 + checksum: 3508912a0fb5ad06a09a79f655681f6fc389376fb8e7fdcaf367fbdd02e9fb5e11a7a4ff715cbe44d8be0e7a99319b03a7d34ef5daede61cf1f8d3519bbb08d6 + languageName: node + linkType: hard + "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" @@ -10583,12 +10704,14 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" + version: 3.3.4 + resolution: "jsx-ast-utils@npm:3.3.4" dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: fb69ce100931e50d42c8f72a01495b7d090064824ce481cf7746449609c148a29aae6984624cf9066ac14bdf7978f8774461e120d5b50fa90b3bfe0a0e21ff77 + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: 6761ccd830deab6a4cb8ca182c7b3627f4478138b6f4e2b680afc2b5e954635feb460ff75218b67f8694a9f8a0da6f0833a013e34961a16fbe4457fb34a0a7b2 languageName: node linkType: hard @@ -10724,16 +10847,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - "li@npm:^1.3.0": version: 1.3.0 resolution: "li@npm:1.3.0" @@ -10874,6 +10987,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + "lockfile@npm:1.0.4": version: 1.0.4 resolution: "lockfile@npm:1.0.4" @@ -11052,10 +11174,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.1.1": - version: 9.1.2 - resolution: "lru-cache@npm:9.1.2" - checksum: 886811ab451332c899c230274e7e51507c15e5b3b18f0b39fb55f558978d58799a0b1a50e04d60a448d8c970ff4e6ee718bb119083ca88abb78930284f1e0900 +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.0 + resolution: "lru-cache@npm:10.0.0" + checksum: 347b7b391091e9f91182b6f683ce04329932a542376a2d7d300637213b99f06c222a3bb0f0db59adf246dac6cef1bb509cab352451a96621d07c41b10a20495f languageName: node linkType: hard @@ -11084,7 +11206,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^3.0.0, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -11703,11 +11825,11 @@ __metadata: linkType: hard "minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": - version: 9.0.1 - resolution: "minimatch@npm:9.0.1" + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: ^2.0.1 - checksum: aa043eb8822210b39888a5d0d28df0017b365af5add9bd522f180d2a6962de1cbbf1bdeacdb1b17f410dc3336bc8d76fb1d3e814cdc65d00c2f68e01f0010096 + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard @@ -11785,10 +11907,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2": - version: 6.0.2 - resolution: "minipass@npm:6.0.2" - checksum: 3878076578f44ef4078ceed10af2cfebbec1b6217bf9f7a3d8b940da8153769db29bf88498b2de0d1e0c12dfb7b634c5729b7ca03457f46435e801578add210a +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.1 + resolution: "minipass@npm:7.0.1" + checksum: 47e4f3567c4d4c20b4a6e04ec99397d606f25038fa5490b60b05b1e104285e7001d7e19c0af2b74fe500823d808eb03fe70652a7ded2753afd748c75d3fd2624 languageName: node linkType: hard @@ -11959,9 +12081,9 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -11969,7 +12091,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 3ec847ca43f678d07b80abfd85bdf06523c2554ee9a494c992c5fc61f5d9cde9f9f16aa33ff09a62f19eee9d54813b8850d7f054cdfee8b2daf789c57f8eeaea + checksum: 10372e4b5ee07acadc15e6b2bc6fd8940582eea7b9b2a331f4e3665fdcd968498c1656f79f2fa572080ebb37ea80e1474a6478b3b36057ef901b63f4be8fd899 languageName: node linkType: hard @@ -12041,9 +12163,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.12": - version: 2.0.12 - resolution: "node-releases@npm:2.0.12" - checksum: 01f9a7c135be5c8bc989b6c10b9840a7aee09040d46ba4e64b5ea0174fb8891f1277514aef75033ce42031f6cb72a04d4a7e99c70ca25488ad63ad6fc5a5b6a0 + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 languageName: node linkType: hard @@ -12163,9 +12285,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.5 - resolution: "nwsapi@npm:2.2.5" - checksum: bc1cffd006ac9648085b89550be6083cdde7d7d4bd93139d4f1d7183c8cc6ca8878d8274c9f00456fd02701928d14df4f4ab2ff5422f172b9e9c1fa845dd49ce + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard @@ -12290,7 +12412,7 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.0.1": +"object-is@npm:^1.0.1, object-is@npm:^1.1.5": version: 1.1.5 resolution: "object-is@npm:1.1.5" dependencies: @@ -12307,7 +12429,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -12441,31 +12563,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -12558,6 +12666,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + "p-locate@npm:^3.0.0": version: 3.0.0 resolution: "p-locate@npm:3.0.0" @@ -12585,6 +12702,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -12747,6 +12873,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -12782,13 +12915,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.7.0": - version: 1.9.2 - resolution: "path-scurry@npm:1.9.2" +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" dependencies: - lru-cache: ^9.1.1 - minipass: ^5.0.0 || ^6.0.2 - checksum: 99a3461a1ebc5269165170a744367a900802dc1ecc8a17a8c9700cca9b00b0938c8a06d57ec9bc9a485e430fd37c647f4029ccaf31b5f9dacedaf685cef3e69a + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard @@ -12946,7 +13079,7 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": +"pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: @@ -12964,6 +13097,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + "pkginfo@npm:0.4.1": version: 0.4.1 resolution: "pkginfo@npm:0.4.1" @@ -13057,13 +13199,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -13100,14 +13235,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": + version: 29.6.1 + resolution: "pretty-format@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: bcc0190d050196b64e501e5c2b44beb802d79a2b70b6fe6b24ae2d5e0f31237dfcb1f0ab2ada4678829b6ee38507ba292396301aff0a8122e575ffd45d5d037c + checksum: decb4ca86b34e53a08e525d2b50be19ef4bffa4bb4122787740b012c11490311879de53dee8b669a82376b6fec06040ec546831f2c3ce0df963c00d743cce664 languageName: node linkType: hard @@ -13462,14 +13597,15 @@ __metadata: linkType: hard "readable-stream@npm:^4.0.0": - version: 4.4.0 - resolution: "readable-stream@npm:4.4.0" + version: 4.4.2 + resolution: "readable-stream@npm:4.4.2" dependencies: abort-controller: ^3.0.0 buffer: ^6.0.3 events: ^3.3.0 process: ^0.11.10 - checksum: 83f5a11285e5ebefb7b22a43ea77a2275075639325b4932a328a1fb0ee2475b83b9cc94326724d71c6aa3b60fa87e2b16623530b1cac34f3825dcea0996fdbe4 + string_decoder: ^1.3.0 + checksum: cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c languageName: node linkType: hard @@ -13561,7 +13697,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": version: 1.5.0 resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: @@ -14400,8 +14536,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.5": - version: 3.25.1 - resolution: "rollup@npm:3.25.1" + version: 3.26.2 + resolution: "rollup@npm:3.26.2" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -14409,7 +14545,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 52ac7b8ae9dc2d47a08c7bba99b2f79a66906a8db3fce5eccc96c91315f2fb8fc2555ef212299854b463d04c0afd8cb84481e847e19d01f198c69be0261e4cbd + checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 languageName: node linkType: hard @@ -14544,26 +14680,48 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:7.3.4": + version: 7.3.4 + resolution: "semver@npm:7.3.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 16b77752071597135b934bb33258badbac6c1cebbabe507ce31f68db3229acae7afa9602265c375c34df092339caa738b105e0c62240536ea1efd4767c36e674 + languageName: node + linkType: hard + +"semver@npm:7.5.0": + version: 7.5.0 + resolution: "semver@npm:7.5.0" + dependencies: + lru-cache: ^6.0.0 bin: - semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 + semver: bin/semver.js + checksum: 203a556d7189c277b9774a325fd2695187b2822069094e0dbfcc56dfd10a1fd646a94e73812f249802a661f6437b2370ccb8ee330e7b9888b38e53c5a8216222 languageName: node linkType: hard -"semver@npm:7.3.4, semver@npm:7.5.0, semver@npm:7.5.1, semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.5.2 - resolution: "semver@npm:7.5.2" +"semver@npm:7.5.1": + version: 7.5.1 + resolution: "semver@npm:7.5.1" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: d151207ab762a8067f6302076edc04e5b8da2362eb9e3f21c2567ceadfd415064936d215b4aae7791da118c230649d29089be979ffa49c5b56a6bcf82147efdd + checksum: ae6aca3cfba9b4d0e0a8fa789c7fa4a8412e39f24ecc19500db291a0a31bb43c151021e4fdbb68a85dcd06c1297f6daeeb09647cea4253eba0ccc0106eb7cd67 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -14572,6 +14730,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -14677,13 +14846,13 @@ __metadata: linkType: hard "simple-git@npm:^3.18.0": - version: 3.19.0 - resolution: "simple-git@npm:3.19.0" + version: 3.19.1 + resolution: "simple-git@npm:3.19.1" dependencies: "@kwsites/file-exists": ^1.1.1 "@kwsites/promise-deferred": ^1.1.1 debug: ^4.3.4 - checksum: 4dc448e663f92bed8dd2d43e07b1c3dbb2444412f39d38b710fe3dc41b1c25dae07aff1960fbf5bd17d4f8f33b6908a335c82f0b9c5db5b87c4ad1d7a2873d7e + checksum: 0f6ba68824cb97fcdd3a53dfd6e3920f00e988141f69f24ffd8ebe98c06cf963c1ebe1cf3344975e5778f26e4d093689acf3eb5aad98be05e5d3ae83036b268f languageName: node linkType: hard @@ -14821,18 +14990,19 @@ __metadata: linkType: hard "sort-package-json@npm:^2.0.0": - version: 2.4.1 - resolution: "sort-package-json@npm:2.4.1" + version: 2.5.1 + resolution: "sort-package-json@npm:2.5.1" dependencies: detect-indent: ^7.0.1 detect-newline: ^4.0.0 + get-stdin: ^9.0.0 git-hooks-list: ^3.0.0 globby: ^13.1.2 is-plain-obj: ^4.1.0 sort-object-keys: ^1.1.3 bin: sort-package-json: cli.js - checksum: 90fdf61b338f90c899c0c09e38de1826171976843889aeac1e34b87724a179140a4e89b967382635e2b0dcb3a4519c7f3dca3b219406a31f8d80e0e78d39df03 + checksum: 923d272e419110dd7d0261b54471a65db3e0b9b0097b1f762d3f65fd3f37f8468018e29bbcd64be34d446cbad268c6f2dc570adc79b356005760795935e4b32b languageName: node linkType: hard @@ -14988,6 +15158,15 @@ __metadata: languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: ^1.0.4 + checksum: c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -15109,7 +15288,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -15298,9 +15477,9 @@ __metadata: linkType: hard "supports-color@npm:^9.0.0": - version: 9.3.1 - resolution: "supports-color@npm:9.3.1" - checksum: cf142b72def173b318515b9481e12288adb00f03166f32c02bd75fab66f01d044f946e38dd8912ba09fd5e81a1f572fb991448f8da73adc21d5bc58bf808f773 + version: 9.4.0 + resolution: "supports-color@npm:9.4.0" + checksum: 6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 languageName: node linkType: hard @@ -15688,8 +15867,8 @@ __metadata: linkType: hard "ts-loader@npm:^9.4.2": - version: 9.4.3 - resolution: "ts-loader@npm:9.4.3" + version: 9.4.4 + resolution: "ts-loader@npm:9.4.4" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 @@ -15698,7 +15877,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 01f49cb016a14f9502ce34d2c8ec370694f16b627a85867e074654f495458047a90574190c592aa2a28a30fd7d01ef83cdd39a61075268058b3a2f3bceaab868 + checksum: 11dba0651d7177eba9af38c43c79a28898ffcdfe7e73079fe48716dd93ca6634d3140dbbbc3ac34907be564be2429f0299ebdc7b58ce09482fad54333ccf611c languageName: node linkType: hard @@ -15771,9 +15950,9 @@ __metadata: linkType: hard "tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 + version: 2.6.0 + resolution: "tslib@npm:2.6.0" + checksum: 8d18020a8b9e70ecc529a744c883c095f177805efdbc9786bd50bd82a46c17547923133c5444fbcaf1f7f1c44e0e29c89f73ecf6d8fd1039668024a073a81dc6 languageName: node linkType: hard @@ -15855,9 +16034,9 @@ __metadata: linkType: hard "typanion@npm:^3.8.0": - version: 3.12.1 - resolution: "typanion@npm:3.12.1" - checksum: 90cf558a34011144d4b741d85615423f594ac769c9850677989e9c42ef6f5e1ea9be5d55c6ff00291038058273a9bc25d7271bec5db0bd05e26af9a0872fb8e6 + version: 3.13.0 + resolution: "typanion@npm:3.13.0" + checksum: eeeb03e419cd466dae97ed58c78c2752aee38db9778975773a6e9cabc7aee18f6a11e3cb0dd3c5baf76840b64de4efafffe89645e3e89832286b47580c6bfe0b languageName: node linkType: hard @@ -15870,15 +16049,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -15887,9 +16057,9 @@ __metadata: linkType: hard "type-fest@npm:^3.11.0": - version: 3.12.0 - resolution: "type-fest@npm:3.12.0" - checksum: c51abb6bcb7f92601a9b143d0fa44cacc1d1c19041300168303476c36f05e561610b8c2457e321a107c715160a33f63f507552034d2fd49a7bc1dbb4c1de565f + version: 3.13.0 + resolution: "type-fest@npm:3.13.0" + checksum: 8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c languageName: node linkType: hard @@ -16960,6 +17130,18 @@ __metadata: languageName: node linkType: hard +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: 249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d + languageName: node + linkType: hard + "which-pm-runs@npm:^1.0.0": version: 1.1.0 resolution: "which-pm-runs@npm:1.1.0" @@ -16968,8 +17150,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" + version: 1.1.10 + resolution: "which-typed-array@npm:1.1.10" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 @@ -16977,7 +17159,7 @@ __metadata: gopd: ^1.0.1 has-tostringtag: ^1.0.0 is-typed-array: ^1.1.10 - checksum: 7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 + checksum: e85918fa7ee060b37e264996f560bbdfe0b1c7029772d0986f3a72ff62b6bd42ba624c4b80218b498aa42472b54f4514e46dbe869691730e0c6c025bcb25fe2b languageName: node linkType: hard @@ -17042,13 +17224,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -17266,6 +17441,13 @@ __metadata: languageName: node linkType: hard +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + "yup@npm:0.32.11": version: 0.32.11 resolution: "yup@npm:0.32.11" From d61fb802f899995de9591a2aea4ae5fec3f88faf Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Mon, 10 Jul 2023 23:24:43 +0200 Subject: [PATCH 069/135] regen lockfile code --- code/yarn.lock | 3586 +++++++++++++++++++++++------------------------- 1 file changed, 1703 insertions(+), 1883 deletions(-) diff --git a/code/yarn.lock b/code/yarn.lock index 06ce6bf55bdb..bdc8ee21a90c 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8c0 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.2.0 resolution: "@adobe/css-tools@npm:4.2.0" @@ -22,50 +29,60 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1600.5, @angular-devkit/architect@npm:^0.1600.0-rc.4": - version: 0.1600.5 - resolution: "@angular-devkit/architect@npm:0.1600.5" +"@angular-devkit/architect@npm:0.1601.4": + version: 0.1601.4 + resolution: "@angular-devkit/architect@npm:0.1601.4" + dependencies: + "@angular-devkit/core": 16.1.4 + rxjs: 7.8.1 + checksum: 001f29854d6fb6344a77c65a4e56e5cf3cc7bf245c02528906b4ff501157cf76567e3972f63f70366a625be0283d7793aa34da0f1782c6c83a4247695995babb + languageName: node + linkType: hard + +"@angular-devkit/architect@npm:^0.1600.0-rc.4": + version: 0.1600.6 + resolution: "@angular-devkit/architect@npm:0.1600.6" dependencies: - "@angular-devkit/core": 16.0.5 + "@angular-devkit/core": 16.0.6 rxjs: 7.8.1 - checksum: fdd619f4f8eb851c2adc16cbcf66c4acca08464e40ae590cb9cd6ea6f008eede1a18e5ff5c0d49d2c1ad17f956a5d446f87b04fcbcf070e60ea06ea240e60626 + checksum: 90bb653590008ef33f398eefde986e03c6992257aabf0c83cdc752727c587ba8d446a9735875d7451334b5dde95bc295f53ea8bd2deed43d0e56bdf9815cf574 languageName: node linkType: hard "@angular-devkit/build-angular@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular-devkit/build-angular@npm:16.0.5" + version: 16.1.4 + resolution: "@angular-devkit/build-angular@npm:16.1.4" dependencies: "@ampproject/remapping": 2.2.1 - "@angular-devkit/architect": 0.1600.5 - "@angular-devkit/build-webpack": 0.1600.5 - "@angular-devkit/core": 16.0.5 - "@babel/core": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/helper-annotate-as-pure": 7.18.6 - "@babel/helper-split-export-declaration": 7.18.6 + "@angular-devkit/architect": 0.1601.4 + "@angular-devkit/build-webpack": 0.1601.4 + "@angular-devkit/core": 16.1.4 + "@babel/core": 7.22.5 + "@babel/generator": 7.22.7 + "@babel/helper-annotate-as-pure": 7.22.5 + "@babel/helper-split-export-declaration": 7.22.5 "@babel/plugin-proposal-async-generator-functions": 7.20.7 - "@babel/plugin-transform-async-to-generator": 7.20.7 - "@babel/plugin-transform-runtime": 7.21.4 - "@babel/preset-env": 7.21.4 - "@babel/runtime": 7.21.0 - "@babel/template": 7.20.7 + "@babel/plugin-transform-async-to-generator": 7.22.5 + "@babel/plugin-transform-runtime": 7.22.5 + "@babel/preset-env": 7.22.5 + "@babel/runtime": 7.22.5 + "@babel/template": 7.22.5 "@discoveryjs/json-ext": 0.5.7 - "@ngtools/webpack": 16.0.5 + "@ngtools/webpack": 16.1.4 "@vitejs/plugin-basic-ssl": 1.0.1 ansi-colors: 4.1.3 autoprefixer: 10.4.14 babel-loader: 9.1.2 babel-plugin-istanbul: 6.1.1 - browserslist: 4.21.5 - cacache: 17.0.6 + browserslist: ^4.21.5 + cacache: 17.1.3 chokidar: 3.5.3 copy-webpack-plugin: 11.0.0 - critters: 0.0.16 - css-loader: 6.7.3 - esbuild: 0.17.18 - esbuild-wasm: 0.17.18 - glob: 8.1.0 + critters: 0.0.19 + css-loader: 6.8.1 + esbuild: 0.17.19 + esbuild-wasm: 0.17.19 + fast-glob: 3.2.12 https-proxy-agent: 5.0.1 inquirer: 8.2.4 jsonc-parser: 3.2.0 @@ -75,31 +92,31 @@ __metadata: license-webpack-plugin: 4.0.2 loader-utils: 3.2.1 magic-string: 0.30.0 - mini-css-extract-plugin: 2.7.5 + mini-css-extract-plugin: 2.7.6 mrmime: 1.0.1 open: 8.4.2 ora: 5.4.1 parse5-html-rewriting-stream: 7.0.0 picomatch: 2.3.1 piscina: 3.2.0 - postcss: 8.4.23 - postcss-loader: 7.2.4 + postcss: 8.4.24 + postcss-loader: 7.3.2 resolve-url-loader: 5.0.0 rxjs: 7.8.1 - sass: 1.62.1 - sass-loader: 13.2.2 - semver: 7.4.0 + sass: 1.63.2 + sass-loader: 13.3.1 + semver: 7.5.3 source-map-loader: 4.0.1 source-map-support: 0.5.21 - terser: 5.17.1 + terser: 5.17.7 text-table: 0.2.0 tree-kill: 1.2.2 - tslib: 2.5.0 + tslib: 2.5.3 vite: 4.3.9 - webpack: 5.80.0 - webpack-dev-middleware: 6.0.2 - webpack-dev-server: 4.13.2 - webpack-merge: 5.8.0 + webpack: 5.86.0 + webpack-dev-middleware: 6.1.1 + webpack-dev-server: 4.15.0 + webpack-merge: 5.9.0 webpack-subresource-integrity: 5.1.0 peerDependencies: "@angular/compiler-cli": ^16.0.0 @@ -112,7 +129,7 @@ __metadata: ng-packagr: ^16.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=4.9.3 <5.1" + typescript: ">=4.9.3 <5.2" dependenciesMeta: esbuild: optional: true @@ -135,26 +152,26 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 7cf6d140519da1a3c0c1dbe8bf009327f5b4794f6914a53fab745fda017a6254f717e26f81cf05125d94fb337c6a11c1117eb3374a0d1a84310d91af662af75b + checksum: 39f59794114b7e030e19dadfc12684ec619da87dbef091d40d3210ea1afb646c7f7f9543a3136326fefc83c7995c67dd1085d861d087d4853faa384c08764e68 languageName: node linkType: hard -"@angular-devkit/build-webpack@npm:0.1600.5": - version: 0.1600.5 - resolution: "@angular-devkit/build-webpack@npm:0.1600.5" +"@angular-devkit/build-webpack@npm:0.1601.4": + version: 0.1601.4 + resolution: "@angular-devkit/build-webpack@npm:0.1601.4" dependencies: - "@angular-devkit/architect": 0.1600.5 + "@angular-devkit/architect": 0.1601.4 rxjs: 7.8.1 peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^4.0.0 - checksum: e9894b1cc6597a9b50f6661d9f62eb3039516b59793509dbf3755cf980eaebd968e3c621f5b7053e5edea823ae3b970f5d6e09fdeed49d8cffe2db372bfb6fa7 + checksum: 1388f0a01deb40d1180d93abaa2b7e7332cdd6aff0e50e93e679a28272b6bcd98a91d1bec17eb6d04c2f653decb85606fbfb363c9586222380ea5f0121eb6e79 languageName: node linkType: hard -"@angular-devkit/core@npm:16.0.5, @angular-devkit/core@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular-devkit/core@npm:16.0.5" +"@angular-devkit/core@npm:16.0.6": + version: 16.0.6 + resolution: "@angular-devkit/core@npm:16.0.6" dependencies: ajv: 8.12.0 ajv-formats: 2.1.1 @@ -166,79 +183,97 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 9db0a096570f05699372b2ef66b49c26fba46488a76ccfded603aeab1ac8c062e158edf0fcb153bac4a44247c4912d740788732dc8d81d99f79240095b0f88d9 + checksum: 5cd28c31a5f39f7493688508e331f3eb41ad40b3deb02958259268b7820ff61750637f22554ad0a6fe05e49134d916b3573741d98dd65d3b5a6546aea4fd0efd languageName: node linkType: hard -"@angular-devkit/schematics@npm:16.0.5": - version: 16.0.5 - resolution: "@angular-devkit/schematics@npm:16.0.5" +"@angular-devkit/core@npm:16.1.4, @angular-devkit/core@npm:^16.0.0-rc.4": + version: 16.1.4 + resolution: "@angular-devkit/core@npm:16.1.4" + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 + source-map: 0.7.4 + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 7e04b073910896514b4ee37b17f45c737b595985c7959de0a0e8ac74f2ff4466b50fa3a3da6a288f5d10fd844b60b8469427c1ac175e0307a116f08cf9b7dc26 + languageName: node + linkType: hard + +"@angular-devkit/schematics@npm:16.1.4": + version: 16.1.4 + resolution: "@angular-devkit/schematics@npm:16.1.4" dependencies: - "@angular-devkit/core": 16.0.5 + "@angular-devkit/core": 16.1.4 jsonc-parser: 3.2.0 magic-string: 0.30.0 ora: 5.4.1 rxjs: 7.8.1 - checksum: 41f5deeb9cf47f5ec73643b67cf8ecd6e2af3c283151d8c3d412aed804a80c0bcd154bda3655bedce3600d1215abe4683de60a7b65c204ea7e77050edf391fe0 + checksum: 06039a1e45d2bcc2bbd1188dd818fdfef6cb85e33e7acbeff5d1ba487982a84b962488dc123676407afd3cfa30a69d320c8dfb7d2cab7a02ef71e0be3f7a4cdc languageName: node linkType: hard "@angular/animations@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/animations@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/animations@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.5 - checksum: 5672b2408087689a959b656363a59405938ff73848800037183b5c28c2985316b7f7c2e2922e74c4e1300e874edf3820addd673beba7984565847be7ee2eeca2 + "@angular/core": 16.1.4 + checksum: 9738722a1e5f7f232b5453cca1e0e441164ded88c473f2411ec10632bd992d602e8026f71502b0e0f3dee66c439e333da86e1c0a413f2c4d3d86106e66c48e59 languageName: node linkType: hard "@angular/cli@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/cli@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/cli@npm:16.1.4" dependencies: - "@angular-devkit/architect": 0.1600.5 - "@angular-devkit/core": 16.0.5 - "@angular-devkit/schematics": 16.0.5 - "@schematics/angular": 16.0.5 + "@angular-devkit/architect": 0.1601.4 + "@angular-devkit/core": 16.1.4 + "@angular-devkit/schematics": 16.1.4 + "@schematics/angular": 16.1.4 "@yarnpkg/lockfile": 1.1.0 ansi-colors: 4.1.3 - ini: 4.0.0 + ini: 4.1.1 inquirer: 8.2.4 jsonc-parser: 3.2.0 npm-package-arg: 10.1.0 npm-pick-manifest: 8.0.1 open: 8.4.2 ora: 5.4.1 - pacote: 15.1.3 + pacote: 15.2.0 resolve: 1.22.2 - semver: 7.4.0 + semver: 7.5.3 symbol-observable: 4.0.0 yargs: 17.7.2 bin: ng: bin/ng.js - checksum: 34b5e47b82558e44c6ca1e9a9aa89223463be6dbb2abb5b8b274a8dcf09fa1c259c0a5b1b2e325193865bae1083fe98a27274dd5fb7672ef3da53e3daf04561c + checksum: 084fdbf992ee8935369e2653e484ee72aa296fd7cae22d6dc7410e7fe01e40a1cf95f631872822ad8a156ba4d94ac7b34db24d4cf6fafdec5bb976f8a7fd7c07 languageName: node linkType: hard "@angular/common@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/common@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/common@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.5 + "@angular/core": 16.1.4 rxjs: ^6.5.3 || ^7.4.0 - checksum: 647fcc58ce8627a861cc1f0613837436f54b51d46813f70fb9634738ed28df59a11a4944fc2fc1b99a41df2448c3607b93dc7071fcde075659e3ee0081246f2b + checksum: 0b6fa09cda4a2026731e4c275f95b54ffbc8b74d40973dda7a7d791e8d61b0e518ad9ad3707eb14372dfee6cad243149280b22c3d9369fbc51dde4dc883d87bb languageName: node linkType: hard "@angular/compiler-cli@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/compiler-cli@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/compiler-cli@npm:16.1.4" dependencies: - "@babel/core": 7.21.8 + "@babel/core": 7.22.5 "@jridgewell/sourcemap-codec": ^1.4.14 chokidar: ^3.0.0 convert-source-map: ^1.5.1 @@ -247,83 +282,83 @@ __metadata: tslib: ^2.3.0 yargs: ^17.2.1 peerDependencies: - "@angular/compiler": 16.0.5 - typescript: ">=4.9.3 <5.1" + "@angular/compiler": 16.1.4 + typescript: ">=4.9.3 <5.2" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 4c6afd44ef8c9d1a0949e82014e95c142e84d40fcf365ff5ef0e0b90eebf5c7c41d8e8530c6c5ae940d4d284774e7e801f364b01b9c82ea1564e5cb9054c1bb2 + checksum: ff4124bef99a4f4c45a781314db2db2789232083a3c00427b70469980fadb3ea5a05dfa4470aa258f343b7f351fc3637995e4aa2cf0020502785abe6d5540483 languageName: node linkType: hard "@angular/compiler@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/compiler@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/compiler@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.0.5 + "@angular/core": 16.1.4 peerDependenciesMeta: "@angular/core": optional: true - checksum: e5a8aeab364b2a6efd0d3807c1712f6527561756685b1cc57351fe302ab183ee1ae5082c2e0a0013730013467cbb9fb13fc33bd1ecf039b368af3038e0f671d2 + checksum: c279d3072b8d35dc4bcf45fb6979dc2ffa97a10c961e511c16c4a15c553aaf4d914005fdbf7f41a7ed555abe077351b084cd3e41318df3f49865ff2390dea637 languageName: node linkType: hard "@angular/core@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/core@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/core@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.13.0 - checksum: 6ada26b9eb9978518461bb5194e9a1db84e3478a31bd26435cfde02f9be6776805aa1a84c3154c2aba18169671e723727c1626fdbd16f82fa0fc7db02525f14e + checksum: 8c0e8ceb1addd3359d964b790aade2cb27e05f2f1dd0ca4070d1f39898eb8c38232881515029c212556b5eb195deec9fc8052278a994957977df0963945d5bbf languageName: node linkType: hard "@angular/forms@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/forms@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/forms@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.0.5 - "@angular/core": 16.0.5 - "@angular/platform-browser": 16.0.5 + "@angular/common": 16.1.4 + "@angular/core": 16.1.4 + "@angular/platform-browser": 16.1.4 rxjs: ^6.5.3 || ^7.4.0 - checksum: a83e337af462878b8a0f988c4c1676ffac62080fb64ae08742e1fb51ecf1d0d9547d7c6e563ade2d5a0bb13171d982093cc6edbf0359ea74051a8893069ce4a0 + checksum: 201d018a320e82d261787e40ad63ee177df64b4272aef342bdc0b9f5e0630d54c515f7ead3b0fbf9b4de8d2e2100f73bc65771e1d5de07c45a485685dd70b562 languageName: node linkType: hard "@angular/platform-browser-dynamic@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/platform-browser-dynamic@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/platform-browser-dynamic@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.0.5 - "@angular/compiler": 16.0.5 - "@angular/core": 16.0.5 - "@angular/platform-browser": 16.0.5 - checksum: 026c366470f989dc59cfd7973ab4b3971fb2719914e94a7a302ce767b59fb96bccce7cd86efbfa6e8755788dca3c60d24154efea711ef5bed8c357c399221b6f + "@angular/common": 16.1.4 + "@angular/compiler": 16.1.4 + "@angular/core": 16.1.4 + "@angular/platform-browser": 16.1.4 + checksum: cf428de8fa17a3efdffc0d9f6caa1db0e72252d1a59983c1d3ed4a294aca275824ff788308bce2c8575c99f839208ea9aa5ff066369bdb41a1afa90936b31d33 languageName: node linkType: hard "@angular/platform-browser@npm:^16.0.0-rc.4": - version: 16.0.5 - resolution: "@angular/platform-browser@npm:16.0.5" + version: 16.1.4 + resolution: "@angular/platform-browser@npm:16.1.4" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/animations": 16.0.5 - "@angular/common": 16.0.5 - "@angular/core": 16.0.5 + "@angular/animations": 16.1.4 + "@angular/common": 16.1.4 + "@angular/core": 16.1.4 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 1de84d33e14b0e2fb428da858936ae8217c4ed1a86cd37c163f836bec9f9af6cae0be819212c3841745d0c02cc22e491449f88398b8ee298e8b6259ab2f4c989 + checksum: 6b0abd83b43cfbe182c3047c4d3c8b045655d0e3be68b54cabd1d22d8b12b4ce534dfb69af474a13c396013dba6cdf9efe5e7530216bde5745c1dffa28b2d2d9 languageName: node linkType: hard @@ -346,17 +381,17 @@ __metadata: linkType: hard "@axe-core/puppeteer@npm:^4.2.0": - version: 4.7.2 - resolution: "@axe-core/puppeteer@npm:4.7.2" + version: 4.7.3 + resolution: "@axe-core/puppeteer@npm:4.7.3" dependencies: axe-core: ^4.7.0 peerDependencies: puppeteer: ">=1.10.0" - checksum: 9d8fb34f40147d4f919abdd5a09bc12e20f135f1ae14517186e70f91dadf4841f60b0b2e4ce66b4ba5b6c71567c91502bb324334ab226ed5d4f33c1fc1054fc2 + checksum: 24161a6c8ee3ab33f09e66f73bb81d70c69feb5c2e8cb1a1ba6a6e06ecb204768dbf443bc76abfa95c3fb637fd21ea4270478591b45a00a939b9b3909c11bc4e languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.8.3": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.8.3": version: 7.22.5 resolution: "@babel/code-frame@npm:7.22.5" dependencies: @@ -365,56 +400,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4, @babel/compat-data@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/compat-data@npm:7.22.5" - checksum: 97f3c24a71b4e7d5f91c5807f6206a9cdb4123e595c51b34a19e9ea22b837003f969f732fde8819928d66e7b64047fd736c6717c8a1b96bf27fbfc30f6834aff - languageName: node - linkType: hard - -"@babel/core@npm:7.21.4": - version: 7.21.4 - resolution: "@babel/core@npm:7.21.4" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.4 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.4 - "@babel/types": ^7.21.4 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: 0987cf87f277eb19c410ef3a03f9377efec40005a5dd2a67ddd0a5f6f429c9d88fefba25206ccf3378c93814b4c9c06a236bf8fcd3ed6ef1c8089fefaa76af24 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/compat-data@npm:7.22.6" + checksum: 09971bda48c46e19d8f1d8c817ebd60ccca2ca30b90324ba6227cfa3765847a9ddd7730481ec81149a2270e2c90c2674e41ebbb73258e48c37922171ffe1e6dc languageName: node linkType: hard -"@babel/core@npm:7.21.8": - version: 7.21.8 - resolution: "@babel/core@npm:7.21.8" +"@babel/core@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/core@npm:7.22.5" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.21.4 - "@babel/generator": ^7.21.5 - "@babel/helper-compilation-targets": ^7.21.5 - "@babel/helper-module-transforms": ^7.21.5 - "@babel/helpers": ^7.21.5 - "@babel/parser": ^7.21.8 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.5 - "@babel/types": ^7.21.5 + "@babel/code-frame": ^7.22.5 + "@babel/generator": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-module-transforms": ^7.22.5 + "@babel/helpers": ^7.22.5 + "@babel/parser": ^7.22.5 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.5 + "@babel/types": ^7.22.5 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.0 - checksum: bf6bb92bd78fb8b6628bb0612ac0915407b996b179e1404108f92ed32972978340b4457b08f2abf86390a58fb51815cab419edb2dbbc8846efc39eaa61b8cde3 + checksum: c00e1474a41c18b669511dd1a1bd757d854cc8128218421a73c3b1c76b44fb22a57bbbd29a73b7a156cb1460af7a94602f81bed76b8d78c6ffae4de954b32a50 languageName: node linkType: hard @@ -441,63 +453,42 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.22.0, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5, @babel/core@npm:^7.9.6": - version: 7.22.5 - resolution: "@babel/core@npm:7.22.5" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.22.0, @babel/core@npm:^7.22.1, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": + version: 7.22.8 + resolution: "@babel/core@npm:7.22.8" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/generator": ^7.22.7 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-module-transforms": ^7.22.5 - "@babel/helpers": ^7.22.5 - "@babel/parser": ^7.22.5 + "@babel/helpers": ^7.22.6 + "@babel/parser": ^7.22.7 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 + "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 + "@nicolo-ribaudo/semver-v6": ^6.3.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - semver: ^6.3.0 - checksum: c00e1474a41c18b669511dd1a1bd757d854cc8128218421a73c3b1c76b44fb22a57bbbd29a73b7a156cb1460af7a94602f81bed76b8d78c6ffae4de954b32a50 - languageName: node - linkType: hard - -"@babel/generator@npm:7.21.4": - version: 7.21.4 - resolution: "@babel/generator@npm:7.21.4" - dependencies: - "@babel/types": ^7.21.4 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 0eb142a5ca8a978981c11de9e0ab033659f7110bc21cd14eaeb80977835b895c3a97e5a1807a2f6e79003682141057f00b4bd5f69fe998b4cf99bf989c361277 + checksum: d506ac42eaf2f7c3c190cc91a1413bb9ae5c067e06268fa962cb5fd0e67fc0feb48c7fa51527da378e3cc3a92a13a3420bae877df89207d880c839b6bb73e662 languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.21.4, @babel/generator@npm:^7.21.5, @babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7": - version: 7.22.5 - resolution: "@babel/generator@npm:7.22.5" +"@babel/generator@npm:7.22.7, @babel/generator@npm:^7.12.11, @babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7": + version: 7.22.7 + resolution: "@babel/generator@npm:7.22.7" dependencies: "@babel/types": ^7.22.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 0613eddb4d1f7d82d88ad304e1acf48fddc3cdfb4c94bc3d2a9128cf0cdeedc0aa8d60301715c3b67537c00d9c9c9d50aad4339e7af1295c90def21893b17f7f + checksum: 7eb106916d782d397d0d4370bb4b23229229481218693a55f3fc0b756d4e9dc39cee41872f1735decb0b34be8dbb98c4488d5f7abbf6e40826d5dcac045b1f12 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e413cd022e1e21232c1ce98f3e1198ec5f4774c7eceb81155a45f9cb6d8481f3983c52f83252309856668e728c751f0340d29854b604530a694899208df6bcc3 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": +"@babel/helper-annotate-as-pure@npm:7.22.5, @babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" dependencies: @@ -515,24 +506,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.21.4, @babel/helper-compilation-targets@npm:^7.21.5, @babel/helper-compilation-targets@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-compilation-targets@npm:7.22.5" +"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-compilation-targets@npm:7.22.6" dependencies: - "@babel/compat-data": ^7.22.5 + "@babel/compat-data": ^7.22.6 "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.3 + "@nicolo-ribaudo/semver-v6": ^6.3.3 + browserslist: ^4.21.9 lru-cache: ^5.1.1 - semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: f36a2f27d970fa61b32090840ec847f73c6ada50becf7222c8778dd7ae07661c56f83d57e4c18437160e221512f91c442e3b86703741b45fc1277a548a6fd819 + checksum: a37ae986bbfc61bc1adebe05a415ac03e0e8100e4b1ccbfd6ed90ffe201947beae9d7bd2cebe562199e1326797f908153d7b544520786eecf99fccb9db3c0fa9 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.5" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 @@ -541,56 +532,39 @@ __metadata: "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - semver: ^6.3.0 + "@babel/helper-split-export-declaration": ^7.22.6 + "@nicolo-ribaudo/semver-v6": ^6.3.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: a7a98b73dde9c7b0820f5b56e2b8f4cdeaf1a23ec9ab5bb642a9b6cc7c24154e84d20f6de49761dbc34dc84a4797a87db328e8f4b86867bff004a5809fe9e3d5 + checksum: 4411b40bad0b4f1927eaaabbedd0b75cb9a7c18d18c3c2139dcf66a59352092632d8e38fe462337206167f11a6d4a70459ecc06a0ae30400dcbe56773fe3617d languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 + "@nicolo-ribaudo/semver-v6": ^6.3.3 regexpu-core: ^5.3.1 - semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 134e019881cd985bf329648c2885eee31298e2ef0610ed3ba36dca8dc3a5d17851c61d890acb7904bf72a755182bdca39861079729ca71940f0149ed589c9f85 + checksum: 09e195edf82c94d04fe4a53dc2dc38f9bac499625e99da21e2b16b3f3f765971ce903b7621fe868e496117a5084fd513d05b5ca58b57f46acc641af84eedc68d languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: c3668f9ee2b76bfc08398756c504a8823e18bad05d0c2ee039b821c839e2b70f3b6ad8b7a3d3a6be434d981ed2af845a490aafecc50eaefb9b5099f2da156527 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.4.0": - version: 0.4.0 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.0" +"@babel/helper-define-polyfill-provider@npm:^0.4.1": + version: 0.4.1 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.1" dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 debug: ^4.1.1 lodash.debounce: ^4.0.8 resolve: ^1.14.2 - semver: ^6.1.2 peerDependencies: "@babel/core": ^7.4.0-0 - checksum: 953c6ebda6871f2aa093f002f5e085ecbefe684580543fc7c309fe9aa5ce626758e02697a51cd25acf5cab56b1028a789fd38674d5872de74927a58049fbdc19 + checksum: 402a8ca29354f01640d7226587576479507093437239ec1ba283c190986442a8759e5043859df9795c07c43d9b99d0685ee36ff77974c5be9a0cbec36a8283af languageName: node linkType: hard @@ -629,7 +603,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.8.3": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-module-imports@npm:7.22.5" dependencies: @@ -638,7 +612,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.21.2, @babel/helper-module-transforms@npm:^7.21.5, @babel/helper-module-transforms@npm:^7.22.5": +"@babel/helper-module-transforms@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-module-transforms@npm:7.22.5" dependencies: @@ -663,7 +637,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d @@ -716,21 +690,21 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" +"@babel/helper-split-export-declaration@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/helper-split-export-declaration@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: 1335b510a9aefcbf60d89648e622715774e56040d72302dc5e176c8d837c9ab81414ccfa9ed771a9f98da7192579bb12ab7a95948bfdc69b03b4a882b3983e48 + "@babel/types": ^7.22.5 + checksum: a1e463086f97778584c44129c5c37282d033bf97867b300ff42e64279df18d41fe0e56ebe6a1b27f907afa66ad2a313558db8d2e83e73384c5b22ac726c9c52a languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-split-export-declaration@npm:7.22.5" +"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: "@babel/types": ^7.22.5 - checksum: a1e463086f97778584c44129c5c37282d033bf97867b300ff42e64279df18d41fe0e56ebe6a1b27f907afa66ad2a313558db8d2e83e73384c5b22ac726c9c52a + checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard @@ -748,7 +722,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.21.0, @babel/helper-validator-option@npm:^7.22.5": +"@babel/helper-validator-option@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-validator-option@npm:7.22.5" checksum: 23e310bf1b90d085b1ae250f31d423fb6cc004da882f0d3409266e5e4c7fd41ed0a172283a6a9a16083c5f2e11f987b32c815c80c60d9a948e23dd6dcf2e0437 @@ -767,14 +741,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.21.0, @babel/helpers@npm:^7.21.5, @babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.8.4": - version: 7.22.5 - resolution: "@babel/helpers@npm:7.22.5" +"@babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.22.6, @babel/helpers@npm:^7.8.4": + version: 7.22.6 + resolution: "@babel/helpers@npm:7.22.6" dependencies: "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 + "@babel/traverse": ^7.22.6 "@babel/types": ^7.22.5 - checksum: efa2d0fc2107e270782a784af3a52e5e0b97187b7b34feeeeb00454bc322e802ff4007b22410c387c05580c793f517c4bafc8a6a3acfdb0e3a1b349728f270c4 + checksum: 8c03c19802d0fcc78d00d1eaa9ddab28f97f0c78a5d570762800e86f08c6f41750ad61e20cdede977a56173edf85e7175f1fd804eb6ef817280f064d3a3ca514 languageName: node linkType: hard @@ -789,16 +763,16 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.4, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.21.8, @babel/parser@npm:^7.22.0, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.8.6, @babel/parser@npm:^7.8.7, @babel/parser@npm:^7.9.6": - version: 7.22.5 - resolution: "@babel/parser@npm:7.22.5" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.4, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.0, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.8.6, @babel/parser@npm:^7.8.7, @babel/parser@npm:^7.9.6": + version: 7.22.7 + resolution: "@babel/parser@npm:7.22.7" bin: parser: ./bin/babel-parser.js - checksum: d6a1b1e1f375cf7f81263c57f0b6d41d67e9f498d75960ec7ab62a194d7c232a125a951009edc0c991cb7d6cc6b78b006b15e1e8fb83e0de3fe0ceb6bf3d95ef + checksum: d2bdf212644c39de58f1216540ec5aca4a05ffbec07c904eaaef8575dd9546b55345b91dcc0d306be4adbb717401ce321027bac7e2f7babfd66794c96243bb79 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" dependencies: @@ -809,7 +783,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.20.7, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.5" dependencies: @@ -822,7 +796,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-async-generator-functions@npm:7.20.7, @babel/plugin-proposal-async-generator-functions@npm:^7.20.7": +"@babel/plugin-proposal-async-generator-functions@npm:7.20.7": version: 7.20.7 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" dependencies: @@ -848,43 +822,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-static-block@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: b46eb08badd7943c7bdf06fa6f1bb171e00f26d3c25e912205f735ccc321d1dbe8d023d97491320017e0e5d083b7aab3104f5a661535597d278a6c833c97eb79 - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:^7.13.5": - version: 7.22.5 - resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" + version: 7.22.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/plugin-syntax-decorators": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 31930187a8b3fc58ea92b7b667c7947de70a31c4309122e223cdac7bddaab963f4ed0ca8aaeca730dd313521574f8c34e427c4fadc0ecb2d38522ddd5a7acb5f - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99be9865edfd65a46afb97d877ea247a8e881b4d0246a1ea0adf6db04c92f4f0959bd2f6f706d73248a2a7167c34f2464c4863137ddb94deadc5c7cc8bfc3e72 + checksum: 80a0db66b04fb09afb57abcc5dbde89659f076b4579656e4a0670510d9de7c68aa17fff7479f42078d42b00ada546228a55694a9bd6a050bc57997d1f7feb008 languageName: node linkType: hard @@ -900,31 +849,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83f2ce41262a538ee43450044b9b0de320002473e4849421a7318c0500f9b0385c03d228f1be777ad71fd358aef13392e3551f0be52b5c423b0c34f7c9e5a06d - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 436c1ee9f983813fc52788980a7231414351bd34d80b16b83bddb09115386292fe4912cc6d172304eabbaf0c4813625331b9b5bc798acb0e8925cf0d2b394d4d - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: @@ -963,19 +888,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab20153d9e95e0b73004fdf86b6a2d219be2a0ace9ca76cd9eccddb680c913fec173bca54d761b1bc6044edde0a53811f3e515908c3b16d2d81cfec1e2e17391 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.21.0": +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": version: 7.21.0 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" dependencies: @@ -988,7 +901,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-methods@npm:^7.16.5, @babel/plugin-proposal-private-methods@npm:^7.18.6": +"@babel/plugin-proposal-private-methods@npm:^7.16.5": version: 7.18.6 resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" dependencies: @@ -1009,7 +922,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5, @babel/plugin-proposal-private-property-in-object@npm:^7.21.0": +"@babel/plugin-proposal-private-property-in-object@npm:^7.16.5": version: 7.21.11 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.11" dependencies: @@ -1023,7 +936,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -1289,7 +1202,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.20.7, @babel/plugin-transform-arrow-functions@npm:^7.22.5": +"@babel/plugin-transform-arrow-functions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" dependencies: @@ -1300,9 +1213,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.5" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.5, @babel/plugin-transform-async-generator-functions@npm:^7.22.7": + version: 7.22.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.7" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 @@ -1310,24 +1223,11 @@ __metadata: "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 99ba86cbabb93d6a339398ca8ddaba8fbb40224831daa9ccff692c8532d7ce5de34fd71e60396427d4585ded9484b242aecd042af449f1944ca7b4bbb8ef5b4a + checksum: b9712f47de65d8409625de5cfa4bda6984f9e7065f6170c34b3d11974879276ffa61675c8118de5de7746f5de378c5dfc21efc706664c6f0c652fb58949b53f0 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c98caeafbffbdb40fd5d9d4c7a835d624ba1ada814e8e675d99a9c83bd40780ab6a52e3b873e81dc7ce045a3990427073e634f07cc2f2681d780faee0717d7e9 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.20.7, @babel/plugin-transform-async-to-generator@npm:^7.22.5": +"@babel/plugin-transform-async-to-generator@npm:7.22.5, @babel/plugin-transform-async-to-generator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" dependencies: @@ -1340,7 +1240,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.18.6, @babel/plugin-transform-block-scoped-functions@npm:^7.22.5": +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" dependencies: @@ -1351,7 +1251,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.21.0, @babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.8.3": +"@babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.8.3": version: 7.22.5 resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" dependencies: @@ -1387,26 +1287,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.21.0, @babel/plugin-transform-classes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-classes@npm:7.22.5" +"@babel/plugin-transform-classes@npm:^7.22.5, @babel/plugin-transform-classes@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-classes@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c5ac4a3ea8bf7441246e963c35617c1fe8d6515c94a376ef0b724c6950fbb9e5481c51fc4ff13e5afd8949a6bfe1ef20ab937692054772e2376dfeae3b6b99b5 + checksum: 915f1c0d3a0446a3ebfb099c4a5e714896f773322432b91572e6739d7af82e9743ae2874eb596ef1d26ed94472385eb814e1f33b033fc708155576d566e1f5ff languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.20.7, @babel/plugin-transform-computed-properties@npm:^7.22.5": +"@babel/plugin-transform-computed-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" dependencies: @@ -1418,7 +1318,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.21.3, @babel/plugin-transform-destructuring@npm:^7.22.5": +"@babel/plugin-transform-destructuring@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" dependencies: @@ -1429,7 +1329,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": version: 7.22.5 resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" dependencies: @@ -1441,7 +1341,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9, @babel/plugin-transform-duplicate-keys@npm:^7.22.5": +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" dependencies: @@ -1464,7 +1364,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6, @babel/plugin-transform-exponentiation-operator@npm:^7.22.5": +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" dependencies: @@ -1500,7 +1400,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.21.0, @babel/plugin-transform-for-of@npm:^7.22.5": +"@babel/plugin-transform-for-of@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-for-of@npm:7.22.5" dependencies: @@ -1511,7 +1411,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.9, @babel/plugin-transform-function-name@npm:^7.22.5": +"@babel/plugin-transform-function-name@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-function-name@npm:7.22.5" dependencies: @@ -1536,7 +1436,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.9, @babel/plugin-transform-literals@npm:^7.22.5": +"@babel/plugin-transform-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-literals@npm:7.22.5" dependencies: @@ -1559,7 +1459,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.18.6, @babel/plugin-transform-member-expression-literals@npm:^7.22.5": +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" dependencies: @@ -1570,7 +1470,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.20.11, @babel/plugin-transform-modules-amd@npm:^7.22.5": +"@babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-amd@npm:7.22.5" dependencies: @@ -1582,7 +1482,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.2.0, @babel/plugin-transform-modules-commonjs@npm:^7.21.2, @babel/plugin-transform-modules-commonjs@npm:^7.22.5": +"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.2.0, @babel/plugin-transform-modules-commonjs@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.22.5" dependencies: @@ -1595,7 +1495,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.20.11, @babel/plugin-transform-modules-systemjs@npm:^7.22.5": +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.22.5" dependencies: @@ -1609,7 +1509,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.18.6, @babel/plugin-transform-modules-umd@npm:^7.22.5": +"@babel/plugin-transform-modules-umd@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" dependencies: @@ -1621,7 +1521,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.20.5, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" dependencies: @@ -1633,7 +1533,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.18.6, @babel/plugin-transform-new-target@npm:^7.22.5": +"@babel/plugin-transform-new-target@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-new-target@npm:7.22.5" dependencies: @@ -1694,7 +1594,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.18.6, @babel/plugin-transform-object-super@npm:^7.22.5": +"@babel/plugin-transform-object-super@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-object-super@npm:7.22.5" dependencies: @@ -1718,20 +1618,20 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.5" +"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 73c62d707d47a8a483e81700beef9119e8af7290623b8ac2cf4918fadd7286a700c8fdb846e66b0fb795d4dc67c8e60b13dfed3fa2311129c67314bbe173b82a + checksum: bb8188df57ab46c4c708eea17eddd20238ef9106c0e82016b1eb9565f073746e385e0be0b6ee25148507f3dc849311147a43323109c97106f15e0e7ff3220fdf languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.21.3, @babel/plugin-transform-parameters@npm:^7.22.5": +"@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-parameters@npm:7.22.5" dependencies: @@ -1768,7 +1668,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.18.6, @babel/plugin-transform-property-literals@npm:^7.22.5": +"@babel/plugin-transform-property-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" dependencies: @@ -1850,7 +1750,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.20.5, @babel/plugin-transform-regenerator@npm:^7.22.5": +"@babel/plugin-transform-regenerator@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" dependencies: @@ -1862,7 +1762,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.18.6, @babel/plugin-transform-reserved-words@npm:^7.22.5": +"@babel/plugin-transform-reserved-words@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" dependencies: @@ -1873,39 +1773,39 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.21.4": - version: 7.21.4 - resolution: "@babel/plugin-transform-runtime@npm:7.21.4" +"@babel/plugin-transform-runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" dependencies: - "@babel/helper-module-imports": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0e94e9f0c383a606b9422f3644b06258780b81d1bc5c0d46621de312d46f2601ad864a6801bc04da21a8b8208c10454d152f2e91ad0b92fac80bfa5dab25e167 + checksum: 2dcd59bbf14622c2cc088a311a16073b777e34abe733a940c4df6d48fd58900fb7cb22aa2a4645939162cc717618f8e55e96c227ad61f9ae9bca098078aa7345 languageName: node linkType: hard "@babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.22.0": - version: 7.22.5 - resolution: "@babel/plugin-transform-runtime@npm:7.22.5" + version: 7.22.7 + resolution: "@babel/plugin-transform-runtime@npm:7.22.7" dependencies: "@babel/helper-module-imports": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - semver: ^6.3.0 + "@nicolo-ribaudo/semver-v6": ^6.3.3 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2dcd59bbf14622c2cc088a311a16073b777e34abe733a940c4df6d48fd58900fb7cb22aa2a4645939162cc717618f8e55e96c227ad61f9ae9bca098078aa7345 + checksum: e0768cedf474c3744bedb28f073ef1630f7d1ac33467033ae8ead6a9586cdf007c9d0a63b5d1941c5f29dc95568d700ea0672e17bacb0eb21bf81a49f83346c8 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.18.6, @babel/plugin-transform-shorthand-properties@npm:^7.22.5": +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" dependencies: @@ -1916,7 +1816,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.20.7, @babel/plugin-transform-spread@npm:^7.22.5": +"@babel/plugin-transform-spread@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-spread@npm:7.22.5" dependencies: @@ -1928,7 +1828,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.18.6, @babel/plugin-transform-sticky-regex@npm:^7.22.5": +"@babel/plugin-transform-sticky-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" dependencies: @@ -1939,7 +1839,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.9, @babel/plugin-transform-template-literals@npm:^7.22.5": +"@babel/plugin-transform-template-literals@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" dependencies: @@ -1950,7 +1850,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9, @babel/plugin-transform-typeof-symbol@npm:^7.22.5": +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" dependencies: @@ -1975,7 +1875,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10, @babel/plugin-transform-unicode-escapes@npm:^7.22.5": +"@babel/plugin-transform-unicode-escapes@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" dependencies: @@ -1998,7 +1898,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.18.6, @babel/plugin-transform-unicode-regex@npm:^7.22.5": +"@babel/plugin-transform-unicode-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" dependencies: @@ -2032,37 +1932,25 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.21.4": - version: 7.21.4 - resolution: "@babel/preset-env@npm:7.21.4" +"@babel/preset-env@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/preset-env@npm:7.22.5" dependencies: - "@babel/compat-data": ^7.21.4 - "@babel/helper-compilation-targets": ^7.21.4 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.21.0 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.20.7 - "@babel/plugin-proposal-async-generator-functions": ^7.20.7 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.21.0 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.20.7 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.7 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.21.0 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.21.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 + "@babel/compat-data": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-validator-option": ^7.22.5 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.5 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 "@babel/plugin-syntax-async-generators": ^7.8.4 "@babel/plugin-syntax-class-properties": ^7.12.13 "@babel/plugin-syntax-class-static-block": ^7.14.5 "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 + "@babel/plugin-syntax-import-assertions": ^7.22.5 + "@babel/plugin-syntax-import-attributes": ^7.22.5 + "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/plugin-syntax-json-strings": ^7.8.3 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 @@ -2072,57 +1960,74 @@ __metadata: "@babel/plugin-syntax-optional-chaining": ^7.8.3 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.20.7 - "@babel/plugin-transform-async-to-generator": ^7.20.7 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.21.0 - "@babel/plugin-transform-classes": ^7.21.0 - "@babel/plugin-transform-computed-properties": ^7.20.7 - "@babel/plugin-transform-destructuring": ^7.21.3 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.21.0 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.20.11 - "@babel/plugin-transform-modules-commonjs": ^7.21.2 - "@babel/plugin-transform-modules-systemjs": ^7.20.11 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.20.5 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.21.3 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.20.5 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.20.7 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.5 + "@babel/plugin-transform-async-to-generator": ^7.22.5 + "@babel/plugin-transform-block-scoped-functions": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.5 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-class-static-block": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.5 + "@babel/plugin-transform-computed-properties": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.5 + "@babel/plugin-transform-dotall-regex": ^7.22.5 + "@babel/plugin-transform-duplicate-keys": ^7.22.5 + "@babel/plugin-transform-dynamic-import": ^7.22.5 + "@babel/plugin-transform-exponentiation-operator": ^7.22.5 + "@babel/plugin-transform-export-namespace-from": ^7.22.5 + "@babel/plugin-transform-for-of": ^7.22.5 + "@babel/plugin-transform-function-name": ^7.22.5 + "@babel/plugin-transform-json-strings": ^7.22.5 + "@babel/plugin-transform-literals": ^7.22.5 + "@babel/plugin-transform-logical-assignment-operators": ^7.22.5 + "@babel/plugin-transform-member-expression-literals": ^7.22.5 + "@babel/plugin-transform-modules-amd": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.5 + "@babel/plugin-transform-modules-systemjs": ^7.22.5 + "@babel/plugin-transform-modules-umd": ^7.22.5 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 + "@babel/plugin-transform-new-target": ^7.22.5 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.5 + "@babel/plugin-transform-numeric-separator": ^7.22.5 + "@babel/plugin-transform-object-rest-spread": ^7.22.5 + "@babel/plugin-transform-object-super": ^7.22.5 + "@babel/plugin-transform-optional-catch-binding": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.5 + "@babel/plugin-transform-parameters": ^7.22.5 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/plugin-transform-private-property-in-object": ^7.22.5 + "@babel/plugin-transform-property-literals": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.5 + "@babel/plugin-transform-reserved-words": ^7.22.5 + "@babel/plugin-transform-shorthand-properties": ^7.22.5 + "@babel/plugin-transform-spread": ^7.22.5 + "@babel/plugin-transform-sticky-regex": ^7.22.5 + "@babel/plugin-transform-template-literals": ^7.22.5 + "@babel/plugin-transform-typeof-symbol": ^7.22.5 + "@babel/plugin-transform-unicode-escapes": ^7.22.5 + "@babel/plugin-transform-unicode-property-regex": ^7.22.5 + "@babel/plugin-transform-unicode-regex": ^7.22.5 + "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.21.4 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 + "@babel/types": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + core-js-compat: ^3.30.2 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 20995d58969c4e20fcfd5d80a204008e3312325e002dd353d53811b288b45f9e07d741c9c8935e0298b1ed31b9e6dc1078fdacf78caacda0ebeebf8a50038926 + checksum: dd2b70e96102fc2a64f57c3ab177abeb5aac3f71f47701787b6264d91d7d3ea3d38526d8e1133eb667ca88e87c997ed4a1b8d498ca8be2af07ae4995dfac1b83 languageName: node linkType: hard "@babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.22.0": - version: 7.22.5 - resolution: "@babel/preset-env@npm:7.22.5" + version: 7.22.7 + resolution: "@babel/preset-env@npm:7.22.7" dependencies: - "@babel/compat-data": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/compat-data": ^7.22.6 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 @@ -2147,13 +2052,13 @@ __metadata: "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.5 + "@babel/plugin-transform-async-generator-functions": ^7.22.7 "@babel/plugin-transform-async-to-generator": ^7.22.5 "@babel/plugin-transform-block-scoped-functions": ^7.22.5 "@babel/plugin-transform-block-scoping": ^7.22.5 "@babel/plugin-transform-class-properties": ^7.22.5 "@babel/plugin-transform-class-static-block": ^7.22.5 - "@babel/plugin-transform-classes": ^7.22.5 + "@babel/plugin-transform-classes": ^7.22.6 "@babel/plugin-transform-computed-properties": ^7.22.5 "@babel/plugin-transform-destructuring": ^7.22.5 "@babel/plugin-transform-dotall-regex": ^7.22.5 @@ -2178,7 +2083,7 @@ __metadata: "@babel/plugin-transform-object-rest-spread": ^7.22.5 "@babel/plugin-transform-object-super": ^7.22.5 "@babel/plugin-transform-optional-catch-binding": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.5 + "@babel/plugin-transform-optional-chaining": ^7.22.6 "@babel/plugin-transform-parameters": ^7.22.5 "@babel/plugin-transform-private-methods": ^7.22.5 "@babel/plugin-transform-private-property-in-object": ^7.22.5 @@ -2196,14 +2101,14 @@ __metadata: "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": ^0.1.5 "@babel/types": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.3 - babel-plugin-polyfill-corejs3: ^0.8.1 - babel-plugin-polyfill-regenerator: ^0.5.0 - core-js-compat: ^3.30.2 - semver: ^6.3.0 + "@nicolo-ribaudo/semver-v6": ^6.3.3 + babel-plugin-polyfill-corejs2: ^0.4.4 + babel-plugin-polyfill-corejs3: ^0.8.2 + babel-plugin-polyfill-regenerator: ^0.5.1 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dd2b70e96102fc2a64f57c3ab177abeb5aac3f71f47701787b6264d91d7d3ea3d38526d8e1133eb667ca88e87c997ed4a1b8d498ca8be2af07ae4995dfac1b83 + checksum: 4463c50ccab7aa06a60dde5c1f6e94fdf18e425935b13a1bf168ece9b7bd29dcad015a788581a5c5297bae28a3adcea2472fc74d4e1296aa7195ce0a72a9cac5 languageName: node linkType: hard @@ -2289,12 +2194,12 @@ __metadata: linkType: hard "@babel/runtime-corejs3@npm:^7.10.2": - version: 7.22.5 - resolution: "@babel/runtime-corejs3@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/runtime-corejs3@npm:7.22.6" dependencies: core-js-pure: ^3.30.2 regenerator-runtime: ^0.13.11 - checksum: efd5218f63707b569c01946dc2e88a7ce1f76b1d43bdae0a493b865c56b1d4aa09574463f281b9fc9a46e5abc9f2bea89b6a3e4d2af065931fe703f4daaf6490 + checksum: 5a68532c614dfef051e155460d3090388533871c8180de770e926ee2e01fbc21ef92c0c56d6c5cb6448650068438f6d1eca0e5a5d3ae36269b0ce3b8d2a0f645 languageName: node linkType: hard @@ -2307,12 +2212,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.21.0": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" +"@babel/runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: 8fc28acf3b353390a8188a63d443719847b24b66028fdc8bb301c08e2ee013b52aaeb9d0e9783fa5dcd72bb3c0172fb647419db32392101001738356bdc1f4ab + checksum: 11dcaeecd2246857ccf22f939fcae28a58d29e410607bfa28b95d9b03e298a3e3df8a530e22637d5bfccfc1661fb39cc50c06b404b5d53454bd93889c7dd3eb8 languageName: node linkType: hard @@ -2326,11 +2231,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" dependencies: regenerator-runtime: ^0.13.11 - checksum: 11dcaeecd2246857ccf22f939fcae28a58d29e410607bfa28b95d9b03e298a3e3df8a530e22637d5bfccfc1661fb39cc50c06b404b5d53454bd93889c7dd3eb8 + checksum: 5a273e7d66586582041c68332028db5376d754d483422541fdc904e10474a6f8aef14dd3a5aabcbcb6daea87b64531cc4be993d2943557ede4a2613f5328a981 languageName: node linkType: hard @@ -2343,14 +2248,14 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:7.20.7": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" +"@babel/template@npm:7.22.5, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.7.0, @babel/template@npm:^7.8.6": + version: 7.22.5 + resolution: "@babel/template@npm:7.22.5" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 1c6dcf9ac92769e6ab5e3d9048975537d26ab00b869646462ab4583d45e419c01db5144715ec0d70548835a3098c5d5416148c4a0b996a95e8e0b9dc8d042dd3 + "@babel/code-frame": ^7.22.5 + "@babel/parser": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 languageName: node linkType: hard @@ -2365,36 +2270,25 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.20.7, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3, @babel/template@npm:^7.7.0, @babel/template@npm:^7.8.6": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.22.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.8.6": + version: 7.22.8 + resolution: "@babel/traverse@npm:7.22.8" dependencies: "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.21.4, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.22.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.7.2, @babel/traverse@npm:^7.8.6": - version: 7.22.5 - resolution: "@babel/traverse@npm:7.22.5" - dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 + "@babel/generator": ^7.22.7 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 - "@babel/parser": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.7 "@babel/types": ^7.22.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: 0217ec5ece6e4e3b6fd39dc4a23903d2d8ec76a7163731ae51a8cca03a450fb592782d620b8525219a5df9268b22901f3328a23440646d5ec2db4e3952817121 + checksum: 839014824c210388ed46f92bf5265522bd5bbb4a9a03c700f9d79b151bdd0aa077c2f6448a0cef41132188cc2bc6d8cdcad98a297ba59983401e882bdc256b1f languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.6, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.8.6, @babel/types@npm:^7.8.7, @babel/types@npm:^7.9.6": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.8.6, @babel/types@npm:^7.8.7, @babel/types@npm:^7.9.6": version: 7.22.5 resolution: "@babel/types@npm:7.22.5" dependencies: @@ -2719,156 +2613,156 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/android-arm64@npm:0.18.0" +"@esbuild/android-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm64@npm:0.18.11" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/android-arm@npm:0.18.0" +"@esbuild/android-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm@npm:0.18.11" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/android-x64@npm:0.18.0" +"@esbuild/android-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-x64@npm:0.18.11" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/darwin-arm64@npm:0.18.0" +"@esbuild/darwin-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-arm64@npm:0.18.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/darwin-x64@npm:0.18.0" +"@esbuild/darwin-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-x64@npm:0.18.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/freebsd-arm64@npm:0.18.0" +"@esbuild/freebsd-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-arm64@npm:0.18.11" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/freebsd-x64@npm:0.18.0" +"@esbuild/freebsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-x64@npm:0.18.11" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-arm64@npm:0.18.0" +"@esbuild/linux-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm64@npm:0.18.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-arm@npm:0.18.0" +"@esbuild/linux-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm@npm:0.18.11" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-ia32@npm:0.18.0" +"@esbuild/linux-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ia32@npm:0.18.11" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-loong64@npm:0.18.0" +"@esbuild/linux-loong64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-loong64@npm:0.18.11" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-mips64el@npm:0.18.0" +"@esbuild/linux-mips64el@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-mips64el@npm:0.18.11" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-ppc64@npm:0.18.0" +"@esbuild/linux-ppc64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ppc64@npm:0.18.11" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-riscv64@npm:0.18.0" +"@esbuild/linux-riscv64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-riscv64@npm:0.18.11" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-s390x@npm:0.18.0" +"@esbuild/linux-s390x@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-s390x@npm:0.18.11" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/linux-x64@npm:0.18.0" +"@esbuild/linux-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-x64@npm:0.18.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/netbsd-x64@npm:0.18.0" +"@esbuild/netbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/netbsd-x64@npm:0.18.11" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/openbsd-x64@npm:0.18.0" +"@esbuild/openbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/openbsd-x64@npm:0.18.11" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/sunos-x64@npm:0.18.0" +"@esbuild/sunos-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/sunos-x64@npm:0.18.11" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/win32-arm64@npm:0.18.0" +"@esbuild/win32-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-arm64@npm:0.18.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/win32-ia32@npm:0.18.0" +"@esbuild/win32-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-ia32@npm:0.18.11" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.0": - version: 0.18.0 - resolution: "@esbuild/win32-x64@npm:0.18.0" +"@esbuild/win32-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-x64@npm:0.18.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2891,27 +2785,27 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.3": - version: 2.0.3 - resolution: "@eslint/eslintrc@npm:2.0.3" +"@eslint/eslintrc@npm:^2.1.0": + version: 2.1.0 + resolution: "@eslint/eslintrc@npm:2.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.5.2 + espree: ^9.6.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 46291c33bf580ab12101fb7f20adabaa60326a7de094409ab4a5ca4611552ab2325f8d677d6c1d2d9f45f83f93360b115a0b4488bc48180cca0d0f386804d829 + checksum: 6ffbc3e7867b377754492539af0e2f5b55645a2c67279a70508fe09080bc76d49ba64b579e59a2a04014f84d0768301736fbcdd94c7b3ad4f0e648c32bf21e43 languageName: node linkType: hard -"@eslint/js@npm:8.42.0": - version: 8.42.0 - resolution: "@eslint/js@npm:8.42.0" - checksum: 4ae46df1f32095cf9527d1f6a8a30512151f8eb66dd883a226face17c9e7cfdd2dcb3d4e3124fb67ac5801e0a776b1d7bba368276cfb1e1e4eefb047e38b41d6 +"@eslint/js@npm:8.44.0": + version: 8.44.0 + resolution: "@eslint/js@npm:8.44.0" + checksum: ce7b966f8804228e4d5725d44d3c8fb7fc427176f077401323a02e082f628d207133a25704330e610ebe3254fdf1acb186f779d1242fd145a758fdcc4486a660 languageName: node linkType: hard @@ -3458,29 +3352,29 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/console@npm:29.5.0" +"@jest/console@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/console@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 - checksum: 59dfbdb6c3c15652f8d7267071f24d6335afbed0b1cf71aed70b6ce8deb1d86e7f4aadb978f639435650107fd22476b59e63a3d3a9ac99b1aca739b795a54410 + checksum: d62b089015f06d2ca277d8bff63a2c19b861b12161f5b8a69207498b980659dedfdcdcdcd1c0d5078a73cba5dd270392c65476ba9a48b795d1276517ba30f7ed languageName: node linkType: hard -"@jest/core@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/core@npm:29.5.0" +"@jest/core@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/core@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/reporters": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/reporters": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 @@ -3488,20 +3382,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 + jest-config: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-resolve-dependencies: ^29.5.0 - jest-runner: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 - jest-watcher: ^29.5.0 + jest-resolve: ^29.6.1 + jest-resolve-dependencies: ^29.6.1 + jest-runner: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 + jest-watcher: ^29.6.1 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -3509,7 +3403,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: e4b3e0de48614b2c339083b9159f00a024839984bd89b9afa4cfff4c38f6ce485c2009f2efa1c1e3bb3b87386288bc15798c6aebb7937d7820e8048d75461a4d + checksum: dccd83243af657da9af4c7ae578d55267c85e5bf1755a3a3e189c9ec0d23d409956e0eff7c13b81a388940ab9f294b0afc0241288d5832769687d919fae576fe languageName: node linkType: hard @@ -3522,73 +3416,73 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/environment@npm:29.5.0" +"@jest/environment@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/environment@npm:29.6.1" dependencies: - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - checksum: 1fbe63cbfb9c3f6c9fc9d8f6917a5aceee1828d589569bbffcf5fb4bb56bc021dc3a6f239cde3099144767c97763ae134904ee522f236cd8c0d071bd7f9ef63b + jest-mock: ^29.6.1 + checksum: 9c9fddcbec02b59b9719ede7d51e23e5dcd2230365a1df45ff782ea18af4b51fa0d9f5a3e76fbee6d0b7403ae4cd3fb9c45e9f86177c9be02bbbf84ae7f778c6 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect-utils@npm:29.5.0" +"@jest/expect-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect-utils@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - checksum: e7f44de651b5ef71c6e1b7a0350a704258167c20b6e8165b3100346d5c7f8eb4cd2c229ea2c048e9161666d1c086fbbc422f111f3b77da3fb89a99d52d4b3690 + checksum: e04164280c0b47a6285f39e70323b54eafc42367d9304897d55d70abd50324e060cb81efc7df82b1031eb46b82b85ecf343ed50c72654b11f1492b34c5e1a7b9 languageName: node linkType: hard -"@jest/expect@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/expect@npm:29.5.0" +"@jest/expect@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/expect@npm:29.6.1" dependencies: - expect: ^29.5.0 - jest-snapshot: ^29.5.0 - checksum: 447e7450af8ba61ac34d8a2ca11c56c62f6f0fb33ff13130f11a1ec9526a08d756ee72da622316a2c52ecfe726fe14432bdfb46e45aff5676f8d1a8efc8d201c + expect: ^29.6.1 + jest-snapshot: ^29.6.1 + checksum: 7766e9e02eac18edd2dfdf3481083f1a45b42efdc5fb13e3290132a0379d807a8b892ba1055c6917a3a2ed902240c556ac8704e17652b1b8387a58711867ca2f languageName: node linkType: hard -"@jest/fake-timers@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/fake-timers@npm:29.5.0" +"@jest/fake-timers@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/fake-timers@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: dbf52fd302bf6b3d7ec49499f12835b7d7d4069d61adc62dac233021eba61186bbad3add1ceb3225a23a8745dd04fa0dcc2c38d350ecb0f26eec63f2cf5e6aff + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 112b1f26f48f16dd8732f9842d480b66545cd5226d674e59c758f56680d234fc4debb77497784bf26130b21caab4d8cd39cf09afbbb2863a0a4ee0ccdb4c6e14 languageName: node linkType: hard -"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/globals@npm:29.5.0" +"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0, @jest/globals@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/globals@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/types": ^29.5.0 - jest-mock: ^29.5.0 - checksum: 0c25f07d8125e45cf3c21442e625f6a636eaf7f4cf1cf3f9f66bae059aeb31d3dc61dfff9479eb861a5089dca34c95e231ad88b8925bee42387abecbfe5ecbc2 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/types": ^29.6.1 + jest-mock: ^29.6.1 + checksum: 9ee8a6e476b8e74d4aa16150ea0ba0b8ecc25328062762cb46095fdec9638fc525d0e7f06e3aa1413600749c79d02a4db18da9912675843672242ea44763fa49 languageName: node linkType: hard -"@jest/reporters@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/reporters@npm:29.5.0" +"@jest/reporters@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/reporters@npm:29.6.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -3600,9 +3494,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -3612,74 +3506,74 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 72b771a7749ac2eb9b671f2a886dc98cbe914dfa1a4266854b040e4cc563bf9f5db02b8ff8654b7bfbc3b28caa6d48ca0dde9707454ea4f79d77bd13b6357929 + checksum: fd6e1eab9afee7eebb0a5f461b447b72d227459ce0e96e3ad4024e8795a36d03e1110c91fae9c61a5da50df42978041455f96bf5b09e5b0cead33fb44c63150b languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" +"@jest/schemas@npm:^29.4.3, @jest/schemas@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/schemas@npm:29.6.0" dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 + "@sinclair/typebox": ^0.27.8 + checksum: 8671b1fb59c4296204d335190e8451e1983d9f2db6dbbd38f838c6c273fd222fc11e4e0df04adfb6169d36acfb9693d525db136653ec04e6884180f45a131d8f languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.0": + version: 29.6.0 + resolution: "@jest/source-map@npm:29.6.0" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 353f9989dcb416e8a2559ad2831b4b3e8446a9f8259782cec97f89903b5c00baa76ea3e23a3f1c83c1ccb3999a9e318b8c6a4bab29e4b66a4abdbb760e445a50 + checksum: afa654e3634ad74d5f8388ccffd7ecbd745bdce7f6f0860b69c07827c3ee5bb408f52b6c3136b43157ef5874c099059484e43bd3aa391232ab27d8c330399789 languageName: node linkType: hard -"@jest/test-result@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-result@npm:29.5.0" +"@jest/test-result@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-result@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 5d637c9935ea0438b2a7c106d48756967e5a96fa4426a9b16ea2a3e73e1538eabd10fd4faa8eb46aa4fee710a165e0fd2ce0603dacde5e8a1bba541100854b1d + checksum: 0b460253f092042cb2edaae92f9f22aed150a2dc3eaa8dbd60a31db8a3b12fc14c89784b580e0a678ef52e7438a11b27eaaedd2bc9c4328dbbd6d5d72983de6c languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/test-sequencer@npm:29.5.0" +"@jest/test-sequencer@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/test-sequencer@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 + "@jest/test-result": ^29.6.1 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 slash: ^3.0.0 - checksum: 6fb7549a5dbe2da6817eb853134f76cf2b320b283900c5e63c997ecfadc616379372a49ac8c0f4ffdb9616eed4a5908c74cb7a560a395a6e1dc0d072b865657b + checksum: 411b7fd3a55daaf6f3ce7d3f3cd7114580126df9190a3f27d4e5a5429d91cb56c77899560afefd69451cde4911259c44f9e5fb09d975dc1f1ba597295a64f165 languageName: node linkType: hard -"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/transform@npm:29.5.0" +"@jest/transform@npm:^29.3.1, @jest/transform@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/transform@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.5.0 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.1 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 + jest-util: ^29.6.1 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 113598311d84ec7e4a4aadd340e332bbfbbd66e20eabea8b2f084b80cf97c1bc9e1ff90278c4f04b227afa95e3386d702363715f9923062c370c042c31911d94 + checksum: e34ddd89f372af749e983e29febfbb6f9a96eb677af32b5b299ce36eeab7b1ae55ddda2b64ff91437991f3f9b43cfc7ffa3b511ce7e7c1c23ae2b50d8a65a07f languageName: node linkType: hard @@ -3709,17 +3603,17 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" +"@jest/types@npm:^29.6.1": + version: 29.6.1 + resolution: "@jest/types@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d + checksum: 58de1c2484f6c4968b566fb1661506794d3df79476c0605a71b6e40b8a5a1a9837b9c692782540a179daa424c572c7d0818afa306918e3fcd29c4a962ed34a7b languageName: node linkType: hard @@ -3773,13 +3667,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2, @jridgewell/source-map@npm:^0.3.3": - version: 0.3.3 - resolution: "@jridgewell/source-map@npm:0.3.3" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: f341e3ed1e9dfe5ae95201e9e820bee7c0518f20f2831b9964ce6c4bfe59477fb7e3257a45fac193cb4aea0019f0a4f8ed68abb12fd3956610317946f7341e3f + checksum: b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 languageName: node linkType: hard @@ -3807,7 +3701,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" dependencies: @@ -3979,84 +3873,93 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:13.4.8": - version: 13.4.8 - resolution: "@next/env@npm:13.4.8" - checksum: ac774fde7ec7802f93199db57de5b0ff4642198d7f38d24fa3c8e627bd264c631d405ad17887aed25febc5481f32328b5d345082785ea184acd26240a411450c +"@next/env@npm:13.4.9": + version: 13.4.9 + resolution: "@next/env@npm:13.4.9" + checksum: 712cd2012d42f28bd9af5659cab1cb6e2b33e6ada38f06a83411cbdcc90e39c94c924a4eb7ab3635bf5ef5fa88d24ed856e1e5f07d6c470fef317daf88d5d520 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-darwin-arm64@npm:13.4.8" +"@next/swc-darwin-arm64@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-darwin-arm64@npm:13.4.9" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-darwin-x64@npm:13.4.8" +"@next/swc-darwin-x64@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-darwin-x64@npm:13.4.9" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-linux-arm64-gnu@npm:13.4.8" +"@next/swc-linux-arm64-gnu@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-linux-arm64-gnu@npm:13.4.9" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-linux-arm64-musl@npm:13.4.8" +"@next/swc-linux-arm64-musl@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-linux-arm64-musl@npm:13.4.9" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-linux-x64-gnu@npm:13.4.8" +"@next/swc-linux-x64-gnu@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-linux-x64-gnu@npm:13.4.9" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-linux-x64-musl@npm:13.4.8" +"@next/swc-linux-x64-musl@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-linux-x64-musl@npm:13.4.9" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-win32-arm64-msvc@npm:13.4.8" +"@next/swc-win32-arm64-msvc@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-win32-arm64-msvc@npm:13.4.9" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-win32-ia32-msvc@npm:13.4.8" +"@next/swc-win32-ia32-msvc@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-win32-ia32-msvc@npm:13.4.9" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.4.8": - version: 13.4.8 - resolution: "@next/swc-win32-x64-msvc@npm:13.4.8" +"@next/swc-win32-x64-msvc@npm:13.4.9": + version: 13.4.9 + resolution: "@next/swc-win32-x64-msvc@npm:13.4.9" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@ngtools/webpack@npm:16.0.5": - version: 16.0.5 - resolution: "@ngtools/webpack@npm:16.0.5" +"@ngtools/webpack@npm:16.1.4": + version: 16.1.4 + resolution: "@ngtools/webpack@npm:16.1.4" peerDependencies: "@angular/compiler-cli": ^16.0.0 - typescript: ">=4.9.3 <5.1" + typescript: ">=4.9.3 <5.2" webpack: ^5.54.0 - checksum: 5a8d7694351142f5e55fb01429849bf5182698017814cbc75b3fb5352d9ea1c851ec28698f0caf477e664f6072b81a22df2d5619e667e3957f92c2f7c6e5be87 + checksum: 177301b2b8a6d72dcf12f1ec1efcde88c53e7a2b979d50f9bab1fc3d423caf223c8519d129ab8a8b84d964a02dcdac27b7297c18cfb64a0f9311afc28e5557f4 + languageName: node + linkType: hard + +"@nicolo-ribaudo/semver-v6@npm:^6.3.3": + version: 6.3.3 + resolution: "@nicolo-ribaudo/semver-v6@npm:6.3.3" + bin: + semver: bin/semver.js + checksum: 9ef70305fa9b03709805128611c0d95beec479cdd6f6b608386d6cee7a3d36f61e6f749378b60f1e5fca19fc58da7b06fccfe3540c0dbc40719731827d4eb1df languageName: node linkType: hard @@ -4588,8 +4491,8 @@ __metadata: linkType: hard "@octokit/core@npm:^4.0.0": - version: 4.2.1 - resolution: "@octokit/core@npm:4.2.1" + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" dependencies: "@octokit/auth-token": ^3.0.0 "@octokit/graphql": ^5.0.0 @@ -4598,7 +4501,7 @@ __metadata: "@octokit/types": ^9.0.0 before-after-hook: ^2.2.0 universal-user-agent: ^6.0.0 - checksum: b21f60d1ceb8a1aa8cc1573718de2941aad1d2ca5c46ed4b6a2feec4830463efd32434e9452655455f6e6ea0a9fe030d4a09c1b7e0be7cd194afb51dade405e9 + checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 languageName: node linkType: hard @@ -4776,8 +4679,8 @@ __metadata: linkType: hard "@octokit/request@npm:^6.0.0": - version: 6.2.5 - resolution: "@octokit/request@npm:6.2.5" + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" dependencies: "@octokit/endpoint": ^7.0.0 "@octokit/request-error": ^3.0.0 @@ -4785,7 +4688,7 @@ __metadata: is-plain-object: ^5.0.0 node-fetch: ^2.6.7 universal-user-agent: ^6.0.0 - checksum: 1f9feaedd75156ffc5b05294974e18b1798a3350ed99acb6d7f9d7b76fc338a47cb9d88b927e7d506894edf49e3a1ef1e18d877403a0aa386d0037b734ab59e4 + checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b languageName: node linkType: hard @@ -4862,11 +4765,11 @@ __metadata: linkType: hard "@octokit/types@npm:^9.0.0": - version: 9.3.0 - resolution: "@octokit/types@npm:9.3.0" + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" dependencies: "@octokit/openapi-types": ^18.0.0 - checksum: c6b3410201a0c21be9a7d46add76593a519d5ed8a9e7151ef897d4330b288eff01ed3f9695ce62a054579e643d12dea5f1bac77b7770c7be590ef54bf78004ba + checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 languageName: node linkType: hard @@ -4889,16 +4792,16 @@ __metadata: linkType: hard "@pkgr/utils@npm:^2.3.1": - version: 2.4.1 - resolution: "@pkgr/utils@npm:2.4.1" + version: 2.4.2 + resolution: "@pkgr/utils@npm:2.4.2" dependencies: cross-spawn: ^7.0.3 - fast-glob: ^3.2.12 + fast-glob: ^3.3.0 is-glob: ^4.0.3 open: ^9.1.0 picocolors: ^1.0.0 - tslib: ^2.5.0 - checksum: 0ddbb8265b508bcc4e020054960b88324212e1c4b697153211842b8e85167af430b2761459d5e0b5c960668987e92818343b2bec6ee9140b5b3f560d8e68bbfe + tslib: ^2.6.0 + checksum: 7c3e68f6405a1d4c51f418d8d580e71d7bade2683d5db07e8413d8e57f7e389047eda44a2341f77a1b3085895fca7676a9d45e8812a58312524f8c4c65d501be languageName: node linkType: hard @@ -5007,22 +4910,22 @@ __metadata: linkType: hard "@prefresh/vite@npm:^2.2.8": - version: 2.4.0 - resolution: "@prefresh/vite@npm:2.4.0" + version: 2.4.1 + resolution: "@prefresh/vite@npm:2.4.1" dependencies: - "@babel/core": ^7.9.6 + "@babel/core": ^7.22.1 "@prefresh/babel-plugin": 0.5.0 "@prefresh/core": ^1.5.1 "@prefresh/utils": ^1.2.0 - "@rollup/pluginutils": ^4.1.0 + "@rollup/pluginutils": ^4.2.1 peerDependencies: preact: ^10.4.0 - vite: ">=2.0.0-beta.3" - checksum: c30fee28c5b4e2090fc030cd61fcfbb1140c1524366dddb23350d884cd09ed2f3b4a64ffb3a95c53e91836a0a88807e7237d541cd9655fe03849493794276147 + vite: ">=2.0.0" + checksum: 939b4667ed83acfff6a879c8bff78d028b85c74f9e1cde656cf344768b888f6ba6b9927ee5e5efeecfc877fc6e6088c4c252e3f476604aecedaaf83cdfef7c45 languageName: node linkType: hard -"@rollup/pluginutils@npm:^4.1.0, @rollup/pluginutils@npm:^4.1.1": +"@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.1": version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" dependencies: @@ -5048,14 +4951,14 @@ __metadata: languageName: node linkType: hard -"@schematics/angular@npm:16.0.5": - version: 16.0.5 - resolution: "@schematics/angular@npm:16.0.5" +"@schematics/angular@npm:16.1.4": + version: 16.1.4 + resolution: "@schematics/angular@npm:16.1.4" dependencies: - "@angular-devkit/core": 16.0.5 - "@angular-devkit/schematics": 16.0.5 + "@angular-devkit/core": 16.1.4 + "@angular-devkit/schematics": 16.1.4 jsonc-parser: 3.2.0 - checksum: e7b8c733a0b5fd88bdf4278e89b26bbcc3612f8251f30879e1abe35cc40d863d444f4899e4c69922d315e57655358e7722f5a2b8f0a61e9aff8aa187976a7c9f + checksum: 48b692eed1b0d02bfb506e6ab3eb414c151623efaf5b10783dcf6dc1bd806a5711511ff5a97c74662935a153e50da0510946a75d73b6b8f320ad4d1897034754 languageName: node linkType: hard @@ -5089,21 +4992,20 @@ __metadata: languageName: node linkType: hard -"@sigstore/tuf@npm:^1.0.0": - version: 1.0.0 - resolution: "@sigstore/tuf@npm:1.0.0" +"@sigstore/tuf@npm:^1.0.1": + version: 1.0.2 + resolution: "@sigstore/tuf@npm:1.0.2" dependencies: "@sigstore/protobuf-specs": ^0.1.0 - make-fetch-happen: ^11.0.1 - tuf-js: ^1.1.3 - checksum: 95251d95b42875907863f67637238c4cafe7c24d816ab01f71dc6ac07e275d8fef33c65d49a4165368c208e427119bd57737e4913dd7053cee0021195bc5655f + tuf-js: ^1.1.7 + checksum: de76e20e6c131b118aa721c62efa1f7512ecbe3d94044770ddc06edb5d78be79fef0da1b81b69c2b012ed6fd2ace0fe0080e5dbdc40703d170de550188befb34 languageName: node linkType: hard -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.24 - resolution: "@sinclair/typebox@npm:0.25.24" - checksum: 2faf9878f3a65a1f2855add80b0fe8c6fe83f084ea1ab432fa7506e7c85c55ae121c4af516d089b5737f5fad23b3628fcc83a6a5df29030c3f611185ce0388ac +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard @@ -5140,11 +5042,11 @@ __metadata: linkType: hard "@sinonjs/fake-timers@npm:^10.0.2": - version: 10.2.0 - resolution: "@sinonjs/fake-timers@npm:10.2.0" + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: "@sinonjs/commons": ^3.0.0 - checksum: 9f4726e7799a409d51d6760af3b65dac061b4f5c0b69b3af4caf79ecc3012dacae1f40078d915f9cec1ecd81d84a41619a98d4878bb2ef9f3ed66c16c2f5f833 + checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 languageName: node linkType: hard @@ -7464,13 +7366,13 @@ __metadata: linkType: soft "@storybook/testing-library@npm:next": - version: 0.2.0-next.0 - resolution: "@storybook/testing-library@npm:0.2.0-next.0" + version: 0.2.0-next.1 + resolution: "@storybook/testing-library@npm:0.2.0-next.1" dependencies: - "@testing-library/dom": ^9.3.1 - "@testing-library/user-event": ^14.4.3 + "@testing-library/dom": ^9.0.0 + "@testing-library/user-event": ^14.0.0 ts-dedent: ^2.2.0 - checksum: 342ee91530b77db13c2691c36d7a00efead1af6453b58bbcca4d01afcdbe8e2b12dcaef734bea165838b6e6dd5af7d12032039c12e53955d7026190e56f6dc1b + checksum: 8e9a49cc854e46039a123d35a7c36a5f133f581998f10f4330af1be790fa57dc597caac377939562ba8bf48e551b7d9340e12a1425ca60e1690ff13dca3a89cd languageName: node linkType: hard @@ -7720,121 +7622,121 @@ __metadata: languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte-inspector@npm:^1.0.2": - version: 1.0.2 - resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:1.0.2" +"@sveltejs/vite-plugin-svelte-inspector@npm:^1.0.3": + version: 1.0.3 + resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:1.0.3" dependencies: debug: ^4.3.4 peerDependencies: "@sveltejs/vite-plugin-svelte": ^2.2.0 - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 - checksum: b94d8e6f9fcca6ff5a3c1a07c6bcc3e952410845adbd8f69ec0afc9b7b8c1823b20d92cc90ce00cf38c69d1b5bcbe2a05a54941e30d171b8b3df5ea9782b1c32 + checksum: a64f9a8742cde3f601f6480b56128df8cab553043deab1f96884e34f153ca5020233348ce7ba624900d26b0da4324fef82f4b6a3deec33f9eca7f5938c33c1d7 languageName: node linkType: hard "@sveltejs/vite-plugin-svelte@npm:^2.4.1": - version: 2.4.1 - resolution: "@sveltejs/vite-plugin-svelte@npm:2.4.1" + version: 2.4.2 + resolution: "@sveltejs/vite-plugin-svelte@npm:2.4.2" dependencies: - "@sveltejs/vite-plugin-svelte-inspector": ^1.0.2 + "@sveltejs/vite-plugin-svelte-inspector": ^1.0.3 debug: ^4.3.4 deepmerge: ^4.3.1 kleur: ^4.1.5 magic-string: ^0.30.0 - svelte-hmr: ^0.15.1 + svelte-hmr: ^0.15.2 vitefu: ^0.2.4 peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 - checksum: c5799b9cef9725ca906f8e21f042ac9e5a7023596442eb2fa82b4c9169fa999e2a16b3ef096e8439d09b22acd253ffcbc30a38823807705f213683cf0c771b96 + checksum: 303401055cb4f31407a51e8adaabf9a68dbc9977fa1cf0a9353baadecd4fd0d67ccfc881e29160907d6a3a738a25e6feab9dd638099ff4ced4909f612616850b languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-arm64@npm:1.3.62" +"@swc/core-darwin-arm64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-arm64@npm:1.3.68" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-x64@npm:1.3.62" +"@swc/core-darwin-x64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-x64@npm:1.3.68" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.62" +"@swc/core-linux-arm-gnueabihf@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.62" +"@swc/core-linux-arm64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.62" +"@swc/core-linux-arm64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.62" +"@swc/core-linux-x64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-musl@npm:1.3.62" +"@swc/core-linux-x64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-musl@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.62" +"@swc/core-win32-arm64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.62" +"@swc/core-win32-ia32-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.62" +"@swc/core-win32-x64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.23, @swc/core@npm:^1.3.49": - version: 1.3.62 - resolution: "@swc/core@npm:1.3.62" - dependencies: - "@swc/core-darwin-arm64": 1.3.62 - "@swc/core-darwin-x64": 1.3.62 - "@swc/core-linux-arm-gnueabihf": 1.3.62 - "@swc/core-linux-arm64-gnu": 1.3.62 - "@swc/core-linux-arm64-musl": 1.3.62 - "@swc/core-linux-x64-gnu": 1.3.62 - "@swc/core-linux-x64-musl": 1.3.62 - "@swc/core-win32-arm64-msvc": 1.3.62 - "@swc/core-win32-ia32-msvc": 1.3.62 - "@swc/core-win32-x64-msvc": 1.3.62 + version: 1.3.68 + resolution: "@swc/core@npm:1.3.68" + dependencies: + "@swc/core-darwin-arm64": 1.3.68 + "@swc/core-darwin-x64": 1.3.68 + "@swc/core-linux-arm-gnueabihf": 1.3.68 + "@swc/core-linux-arm64-gnu": 1.3.68 + "@swc/core-linux-arm64-musl": 1.3.68 + "@swc/core-linux-x64-gnu": 1.3.68 + "@swc/core-linux-x64-musl": 1.3.68 + "@swc/core-win32-arm64-msvc": 1.3.68 + "@swc/core-win32-ia32-msvc": 1.3.68 + "@swc/core-win32-x64-msvc": 1.3.68 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -7861,7 +7763,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: aaa0827960f656c762733836938d31b2d596495b8430eb6feb0d1f6b1416b3444e7b59c326ae37ee410d8d3d25fff20ac8ff0f66ebe8a87e7fae1ca651aff915 + checksum: 3788a944fb99934a3280f5d168ca758784d6a6bb554c7282d90db1bb78af9a98420171b5b6abbb4bac9556d0795e4b1332601d7eb528ee6caeffca351b8dabf9 languageName: node linkType: hard @@ -7911,7 +7813,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^9.3.1": +"@testing-library/dom@npm:^9.0.0": version: 9.3.1 resolution: "@testing-library/dom@npm:9.3.1" dependencies: @@ -7968,7 +7870,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:^14.4.3": +"@testing-library/user-event@npm:^14.0.0": version: 14.4.3 resolution: "@testing-library/user-event@npm:14.4.3" peerDependencies: @@ -8255,12 +8157,12 @@ __metadata: linkType: hard "@types/eslint@npm:*": - version: 8.40.1 - resolution: "@types/eslint@npm:8.40.1" + version: 8.44.0 + resolution: "@types/eslint@npm:8.44.0" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: c165328b77d86db3000488bceed1b2dc12c34adb0d9d1224d78d3a328deb0a16a14a8178350216e4f290e147ac885ad54824fc50ddca932a5d890c6d9b082dbe + checksum: feac2a3aafe96844993aa0a3343e9265a13e4dbe2981a215b0103926253ce23adbee4563cef91ef0444f2463658bc10ce69fb6941f4297b4f9a021c77fdf1ec7 languageName: node linkType: hard @@ -8346,17 +8248,7 @@ __metadata: languageName: node linkType: hard -"@types/glob@npm:*": - version: 8.1.0 - resolution: "@types/glob@npm:8.1.0" - dependencies: - "@types/minimatch": ^5.1.2 - "@types/node": "*" - checksum: ded07aa0d7a1caf3c47b85e262be82989ccd7933b4a14712b79c82fd45a239249811d9fc3a135b3e9457afa163e74a297033d7245b0dc63cd3d032f3906b053f - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3": +"@types/glob@npm:*, @types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" dependencies: @@ -8398,6 +8290,13 @@ __metadata: languageName: node linkType: hard +"@types/http-errors@npm:*": + version: 2.0.1 + resolution: "@types/http-errors@npm:2.0.1" + checksum: 3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 + languageName: node + linkType: hard + "@types/http-proxy@npm:^1.17.8": version: 1.17.11 resolution: "@types/http-proxy@npm:1.17.11" @@ -8462,12 +8361,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:>=26.0.0": - version: 29.5.2 - resolution: "@types/jest@npm:29.5.2" + version: 29.5.3 + resolution: "@types/jest@npm:29.5.3" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: e85525fe83a0792632a31ca32968b33a0014d617442e9a515357d2aa8890052ef622b1f6fd25d48f4f1a3ab806bed94e6d9b056dea23a897464e0e35957ff654 + checksum: ba5a28569368db62eeff85ea53661c7dff79a5be739a59926c37868888cc69f8b7d0c7c6209139ecca5b83056843ba67fa764f7e7fc9c8d1c4e1f80351ede0f4 languageName: node linkType: hard @@ -8575,7 +8474,7 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:*, @types/minimatch@npm:^5.1.2": +"@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" checksum: 83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 @@ -8622,17 +8521,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8": - version: 20.2.5 - resolution: "@types/node@npm:20.2.5" - checksum: 1c3db8a4ceb5e5d12e7cb140e37c14a16ce013084c6d65579b91cefbe0ecaca57d85093d968172b11c3d1d95bcbc5d972b08aa3dc3935206fb39bc6c10751102 - languageName: node - linkType: hard - -"@types/node@npm:^16.0.0": - version: 16.18.34 - resolution: "@types/node@npm:16.18.34" - checksum: d6572e12b2200a813b2e0944add0abb8ac59d51a0cf28651dd1dde9de4d43e9d4c2c41fd7cf910d0c3bd8e13d10047f58211a53e76780279fc6d284137d3b001 +"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:^16.0.0": + version: 16.18.38 + resolution: "@types/node@npm:16.18.38" + checksum: 02631f1cfe0c111024e4bf0909c3bfc7476e65e03cb32dc48b2f71f000590b244d239b349b91a6b03667c33f31fbd3200c8fc5838623fcaadce3e92d60efee1a languageName: node linkType: hard @@ -8778,13 +8670,13 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:>=16, @types/react@npm:^16, @types/react@npm:^16.14.34": - version: 16.14.42 - resolution: "@types/react@npm:16.14.42" + version: 16.14.43 + resolution: "@types/react@npm:16.14.43" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 44e6113f492ffffce4158b771bbb6f7ec2253961d53e873fcafd8b315b16c739dd4649932800c9414beed1fd3382aa90b6f3a41b74e4adc0b63f5c51e8ad1c09 + checksum: 1878039ed0d81bcfcdb7e389e221f7e3f0470e82007c60e58196b160c733ff194f6784e104e8071a96ec93d14998875c88c2dcf48aa49b73d16c5fc75d1bb602 languageName: node linkType: hard @@ -8857,12 +8749,13 @@ __metadata: linkType: hard "@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.13.8": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" + version: 1.15.2 + resolution: "@types/serve-static@npm:1.15.2" dependencies: + "@types/http-errors": "*" "@types/mime": "*" "@types/node": "*" - checksum: dc934e2adce730480af5af6081b99f50be4dfb7f44537893444bcf1dc97f5d5ffb16b38350ecd89dd114184d751ba3271500631fa56cf1faa35be56f8e45971b + checksum: 5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb languageName: node linkType: hard @@ -8927,11 +8820,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.6 - resolution: "@types/testing-library__jest-dom@npm:5.14.6" + version: 5.14.7 + resolution: "@types/testing-library__jest-dom@npm:5.14.7" dependencies: "@types/jest": "*" - checksum: f681d1af71b969b84cb2bfbf6e09f97a951eed577f983f4c0335e9175bc94b0721217fa10d06f30fabc3b09ccbcfb3c1f5957fa1d3a8becf04c1536bd8364948 + checksum: 793a8505e8551d6567271aa1999e7b41447c9ca6e00ffc4a26e62b6cf732b473c2d91ccf38d000c794a79975089a8c941cb775756c6135ffb00d65457480c5c1 languageName: node linkType: hard @@ -9091,15 +8984,15 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.45.0": - version: 5.59.9 - resolution: "@typescript-eslint/eslint-plugin@npm:5.59.9" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.59.9 - "@typescript-eslint/type-utils": 5.59.9 - "@typescript-eslint/utils": 5.59.9 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/type-utils": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 - grapheme-splitter: ^1.0.4 + graphemer: ^1.4.0 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 semver: ^7.3.7 @@ -9110,54 +9003,54 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 4bb9981bcc009c044ffd6b64288309480df2b6c9cdf6b345987e4b565d0973d1d98b7209f6b46b92880735d788f564e17553641087aa59f67990c84526622a27 + checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.45.0": - version: 5.59.9 - resolution: "@typescript-eslint/experimental-utils@npm:5.59.9" + version: 5.62.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" dependencies: - "@typescript-eslint/utils": 5.59.9 + "@typescript-eslint/utils": 5.62.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 55b443a2b62f1736babb1f463175d9903267a423b4ba1f0e4f5092018805cf6f8ba0ffcbab4cf963f85fe219497870cdd41c4c7b222efafc1a52502e262da501 + checksum: f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.45.0": - version: 5.59.9 - resolution: "@typescript-eslint/parser@npm:5.59.9" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.59.9 - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/typescript-estree": 5.59.9 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: af0e041e8a541734ff237ec0eac47e355c2f78dd2b0db4eb4ab0c10ba1b6d5d70f84ddc16f856bc72c4cacd53ef04b5f4948baffb5c8cb2d9a0ffd83a8fbc547 + checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/scope-manager@npm:5.59.9" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/visitor-keys": 5.59.9 - checksum: 41622fd270e5b8574347ed5dd020bbb9752d85e6f40df180e944c1110d9bd2227a949067feb23dd4117dd2be0623c05a47bc363abe605c96deb295753f6dd080 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 + checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/type-utils@npm:5.59.9" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": 5.59.9 - "@typescript-eslint/utils": 5.59.9 + "@typescript-eslint/typescript-estree": 5.62.0 + "@typescript-eslint/utils": 5.62.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -9165,23 +9058,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: c3a9773d2b81350923025933623e1572538f79bf119b40bed17389eda11632f6d364a49b385aa6d915d85f7c3d45376085cc55263d865dbc2b753598bba6473b + checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/types@npm:5.59.9" - checksum: 951046891bcc9fa27d72a5489b496291e44cedcff204d3ce6c10c8916fc5e255332738efd4d7555200a55b49ff4ba1204e186960d216d51fea89fe92a982180e +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/typescript-estree@npm:5.59.9" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/visitor-keys": 5.59.9 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/visitor-keys": 5.62.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -9190,35 +9083,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 2f3d8df6d454fbc52d305abfe8447bff8e8d63294ce47e4679c920f647643f5d15a1f693caf74f4fabece12d5ba27ebdb156d507b16fbd2751fc01ba6c4df3c8 + checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.59.9, @typescript-eslint/utils@npm:^5.45.0": - version: 5.59.9 - resolution: "@typescript-eslint/utils@npm:5.59.9" +"@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.45.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.59.9 - "@typescript-eslint/types": 5.59.9 - "@typescript-eslint/typescript-estree": 5.59.9 + "@typescript-eslint/scope-manager": 5.62.0 + "@typescript-eslint/types": 5.62.0 + "@typescript-eslint/typescript-estree": 5.62.0 eslint-scope: ^5.1.1 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: b8a04a83c121faa3e36abb2b6113f2e0ec5cf86884d0cb8619bfc50f7442341ee17e4495d69f8abeb6edad9e0347de8382ea1708a5fd6da1e4c80b7b8215c6ab + checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.59.9": - version: 5.59.9 - resolution: "@typescript-eslint/visitor-keys@npm:5.59.9" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.59.9 + "@typescript-eslint/types": 5.62.0 eslint-visitor-keys: ^3.3.0 - checksum: 882fd03830cbe0eca8f9a547aecc6519ddbec10e55f5f3de66e605a3f3d42a6237abd3c09b34d9cc3343c8e11386e999876aec384efe523e1478cb22752d326d + checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard @@ -9273,61 +9166,30 @@ __metadata: languageName: node linkType: hard -"@volar/language-core@npm:1.4.1": - version: 1.4.1 - resolution: "@volar/language-core@npm:1.4.1" - dependencies: - "@volar/source-map": 1.4.1 - checksum: 0dd7286b316f973f42060e955a4232ee16cfc20cf76242dda12e6dadd0e8517bff01fd3af429b164e9bd04f4218a3314bfe1ab0d213051c39ab15aa65d2bf7bc - languageName: node - linkType: hard - -"@volar/source-map@npm:1.4.1": - version: 1.4.1 - resolution: "@volar/source-map@npm:1.4.1" - dependencies: - muggle-string: ^0.2.2 - checksum: 0d677235157a76793606d85818a5616ddca37453423fc37c3648c442200a7ef9beeb2467a762ed4741adbad506cae559e9b8a034469dc8f15a77b8722ab55bd5 - languageName: node - linkType: hard - -"@volar/typescript@npm:1.4.1-patch.2": - version: 1.4.1-patch.2 - resolution: "@volar/typescript@npm:1.4.1-patch.2" +"@volar/language-core@npm:1.8.0, @volar/language-core@npm:~1.8.0": + version: 1.8.0 + resolution: "@volar/language-core@npm:1.8.0" dependencies: - "@volar/language-core": 1.4.1 - peerDependencies: - typescript: "*" - checksum: 1169e57ae294f001a89b31cfbdb136f0bc98f294c30a28f16fdc9e628adaf12f493ee33d4feed2215b7ea58979188930f54d90e0274abe0de7795920ae82ea22 + "@volar/source-map": 1.8.0 + checksum: fe59ff005e1c0b4e03f3606c56922d849850a135edeeee78615859e0185303e0e13ded69dc2d2b01532ed49a4198f4e4ebbec3ccc8f1b88f61b8b217e17badf8 languageName: node linkType: hard -"@volar/vue-language-core@npm:1.6.5": - version: 1.6.5 - resolution: "@volar/vue-language-core@npm:1.6.5" - dependencies: - "@volar/language-core": 1.4.1 - "@volar/source-map": 1.4.1 - "@vue/compiler-dom": ^3.3.0 - "@vue/compiler-sfc": ^3.3.0 - "@vue/reactivity": ^3.3.0 - "@vue/shared": ^3.3.0 - minimatch: ^9.0.0 - muggle-string: ^0.2.2 - vue-template-compiler: ^2.7.14 - checksum: b9354a2d7452dbbe8a8500723f5d118be3acc6edb45ca4c29829869d94454f89ff61fe6db87c83ba3e42f6f0ab33b60329d0e9fcb219a860eacffa621c9f22f5 +"@volar/source-map@npm:1.8.0, @volar/source-map@npm:~1.8.0": + version: 1.8.0 + resolution: "@volar/source-map@npm:1.8.0" + dependencies: + muggle-string: ^0.3.1 + checksum: e2ae0901e81d0ea2c44deb08559752987a242ac4f3ff7950e83500882ff828863dc07f669cf06717aff7becfd4a521c0b91c8a1b083efb99fa419ee477ce8730 languageName: node linkType: hard -"@volar/vue-typescript@npm:1.6.5": - version: 1.6.5 - resolution: "@volar/vue-typescript@npm:1.6.5" +"@volar/typescript@npm:~1.8.0": + version: 1.8.0 + resolution: "@volar/typescript@npm:1.8.0" dependencies: - "@volar/typescript": 1.4.1-patch.2 - "@volar/vue-language-core": 1.6.5 - peerDependencies: - typescript: "*" - checksum: 3b90e266d5ae67c4b94a57dba501ff890cc42ce41fcb9827bcd97041bbab574c70ac7f2331e3f60e7b41e82a33606ca3f3d0027a2d2fe081489889ba0e83f18e + "@volar/language-core": 1.8.0 + checksum: 874cbca7612a5f2330a51c8bb7d66aa4e2d99dc63ed456cb486933bc5c72035cf1299fdf7292ceae83ffb042ddf073de02a71810ed07f33b030a3d1daf9284c6 languageName: node linkType: hard @@ -9413,7 +9275,7 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-sfc@npm:3.3.4, @vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33, @vue/compiler-sfc@npm:^3.3.0": +"@vue/compiler-sfc@npm:3.3.4, @vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33": version: 3.3.4 resolution: "@vue/compiler-sfc@npm:3.3.4" dependencies: @@ -9471,6 +9333,27 @@ __metadata: languageName: node linkType: hard +"@vue/language-core@npm:1.8.4": + version: 1.8.4 + resolution: "@vue/language-core@npm:1.8.4" + dependencies: + "@volar/language-core": ~1.8.0 + "@volar/source-map": ~1.8.0 + "@vue/compiler-dom": ^3.3.0 + "@vue/reactivity": ^3.3.0 + "@vue/shared": ^3.3.0 + minimatch: ^9.0.0 + muggle-string: ^0.3.1 + vue-template-compiler: ^2.7.14 + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 694ab54766d6899ac4a0574f394041e8018388edb3873480982a8fd2bde7bd8dc13df6e944de7605a38623897da7737eb334f77c2e90923df56dca2f35e171a3 + languageName: node + linkType: hard + "@vue/reactivity-transform@npm:3.3.4": version: 3.3.4 resolution: "@vue/reactivity-transform@npm:3.3.4" @@ -9570,6 +9453,16 @@ __metadata: languageName: node linkType: hard +"@vue/typescript@npm:1.8.4": + version: 1.8.4 + resolution: "@vue/typescript@npm:1.8.4" + dependencies: + "@volar/typescript": ~1.8.0 + "@vue/language-core": 1.8.4 + checksum: ce00b60d87d912308dbb27b2aea1799961dad479ae43afee0574ef9d7ba70be137eb20d052519a667beedf30f2539c71e9f99beb6c43ee85ded2bc051eacba3f + languageName: node + linkType: hard + "@vue/vue3-jest@npm:29": version: 29.2.4 resolution: "@vue/vue3-jest@npm:29.2.4" @@ -9797,12 +9690,12 @@ __metadata: linkType: hard "@yarnpkg/parsers@npm:^3.0.0-rc.18": - version: 3.0.0-rc.45 - resolution: "@yarnpkg/parsers@npm:3.0.0-rc.45" + version: 3.0.0-rc.48.1 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.48.1" dependencies: js-yaml: ^3.10.0 tslib: ^2.4.0 - checksum: 64dfeae26c5782a722bcb3e936a43280ff46861f09042e32add6f1b7a1845ef3081ee515b60dd09ae9cd77cc28a85877bdcd9ba4b143bc1413edf71553698041 + checksum: 05197a056e9817f9fe059df303f7e0cb9b1740ffd18b4f5bc831366f8284f638973f1ae324e99300c463540ecb5a3c189c1b36f96c320d782c8224ff2954e8c2 languageName: node linkType: hard @@ -9879,7 +9772,7 @@ __metadata: languageName: node linkType: hard -"acorn-import-assertions@npm:^1.7.6, acorn-import-assertions@npm:^1.9.0": +"acorn-import-assertions@npm:^1.9.0": version: 1.9.0 resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: @@ -9920,12 +9813,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" bin: acorn: bin/acorn - checksum: b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 + checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 languageName: node linkType: hard @@ -10268,7 +10161,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.1.3, aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": +"aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -10287,12 +10180,12 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.2.1": - version: 5.2.1 - resolution: "aria-query@npm:5.2.1" +"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3, aria-query@npm:^5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" dependencies: dequal: ^2.0.3 - checksum: 898031f69f8e9d63c914b73f45e50316fef157aae41af682fe64e8f10c9a9d623952929df01f6524b4ce37c3b21806b04e7617e38909720fbc0fad3f207d9e09 + checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 languageName: node linkType: hard @@ -10362,7 +10255,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -10718,16 +10611,7 @@ __metadata: languageName: node linkType: hard -"axobject-query@npm:^3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" - dependencies: - deep-equal: ^2.0.5 - checksum: fff3175a22fd1f41fceb7ae0cd25f6594a0d7fba28c2335dd904538b80eb4e1040432564a3c643025cd2bb748f68d35aaabffb780b794da97ecfc748810b25ad - languageName: node - linkType: hard - -"axobject-query@npm:^3.2.1": +"axobject-query@npm:^3.1.1, axobject-query@npm:^3.2.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" dependencies: @@ -10761,11 +10645,11 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-jest@npm:29.5.0" +"babel-jest@npm:^29.6.1": + version: 29.6.1 + resolution: "babel-jest@npm:29.6.1" dependencies: - "@jest/transform": ^29.5.0 + "@jest/transform": ^29.6.1 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -10774,11 +10658,11 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 1114d3935e0f62b72e155ac79916214c078e798561be3b03d12ddd862f2849becc8516f89046719161ec457bded35d2e1fd7ddfb207a6169dd18bbb2a67ee987 + checksum: a32ac32f3b5bd66f3f8370cfd6244b0f7b18c2dd367d5829e86dea9f8516ffda63edfb2743d3e1768db93a0698b4db09cd9d22961447e0ed6fd309b5b9c22764 languageName: node linkType: hard -"babel-loader@npm:9.1.2, babel-loader@npm:^7.0.0 || ^8.0.0 || ^9.0.0, babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": +"babel-loader@npm:9.1.2": version: 9.1.2 resolution: "babel-loader@npm:9.1.2" dependencies: @@ -10791,6 +10675,19 @@ __metadata: languageName: node linkType: hard +"babel-loader@npm:^7.0.0 || ^8.0.0 || ^9.0.0, babel-loader@npm:^9.0.0, babel-loader@npm:^9.1.2": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: ^4.0.0 + schema-utils: ^4.0.0 + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + languageName: node + linkType: hard + "babel-plugin-add-react-displayname@npm:^0.0.5": version: 0.0.5 resolution: "babel-plugin-add-react-displayname@npm:0.0.5" @@ -10905,75 +10802,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 21e34d4ba961de66d3fe31f3fecca5612d5db99638949766a445d37de72c1f736552fe436f3bd3792e5cc307f48e8f78a498a01e858c84946627ddb662415cc4 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.3": - version: 0.4.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.4.0 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 27e014ab6116704a201a71aefa2a377f26d0e5432d0dcb7f71930773ef0ddac7a693f3a6699721efa15ae4c83631a35dcc52cc8b3032878b2dadd0a33aeabc59 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 58f7d16c1fbc5e4a68cc58126039cb997edc9b9d29adf1bc4124eb6a12ec31eb9e1da8df769b7219714748af7916cfbb194b2f15bd55571b3b43cdcd7839fe8f - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.8.1": - version: 0.8.1 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.1" +"babel-plugin-polyfill-corejs2@npm:^0.4.3, babel-plugin-polyfill-corejs2@npm:^0.4.4": + version: 0.4.4 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.4" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 - core-js-compat: ^3.30.1 + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.4.1 + "@nicolo-ribaudo/semver-v6": ^6.3.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 90320f5e5a27bcaf9a370d86ff3a9c72fd28618e51f83a7c1e31e34f9a2d671f5ca446b1c4af806cdee6388a6868da38299b3167dd860985981feeda3f2bf1c3 + checksum: 4bb3056ae17002776e3003314068bdd7dd8e5d4b038ce1198db84346b953e73beb8d2b4445bff831c09ff217e533466eb28e771a80c3696decc2dae1347164e3 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" +"babel-plugin-polyfill-corejs3@npm:^0.8.1, babel-plugin-polyfill-corejs3@npm:^0.8.2": + version: 0.8.2 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.2" dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 + "@babel/helper-define-polyfill-provider": ^0.4.1 + core-js-compat: ^3.31.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bd915d51e30259201b289a58dfa46c8c1bc8827a38c275ff3134c8194d27e634d5c32ec62137d489d81c7dd5f6ea46b04057eb44b7180d06c19388e3a5f4f8c6 + checksum: de094cc9d703a3bf6518f4312491b6f033f2db45791825499c905173b2d7d0f8ab9b1919a607eb76833907c6533a2106c951108da7689c0929354d38c661f346 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.0": - version: 0.5.0 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.0" +"babel-plugin-polyfill-regenerator@npm:^0.5.0, babel-plugin-polyfill-regenerator@npm:^0.5.1": + version: 0.5.1 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.1" dependencies: - "@babel/helper-define-polyfill-provider": ^0.4.0 + "@babel/helper-define-polyfill-provider": ^0.4.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d33f4e6f5b925754175d4058ede4d400ea92b9ad465f07a4211e4ad01a6cdb60e3a04428150eb9dd5fb7ba9c1d0cba9e22278206462b432d46d7d851b3c3cb19 + checksum: 5ec9e2ab2f031028a36f8d611f3fc3bc8347e2842e4354a28ac303e81697968549ea0ebea79cf0c28658e1e09d3a55a2a2085bb5a53d00f28bd688daa301fd6b languageName: node linkType: hard @@ -11650,31 +11511,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:4.21.5": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" - dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 - bin: - browserslist: cli.js - checksum: 903040d2c45b733e1177c288b4f146ff21d45e8a44ccc87d1d7fc2f6a8d021c7ee54b514fd7722529c282381969382a54bd2ab4263f5b6c8981a856b457ea162 - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": - version: 4.21.7 - resolution: "browserslist@npm:4.21.7" +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9": + version: 4.21.9 + resolution: "browserslist@npm:4.21.9" dependencies: - caniuse-lite: ^1.0.30001489 - electron-to-chromium: ^1.4.411 + caniuse-lite: ^1.0.30001503 + electron-to-chromium: ^1.4.431 node-releases: ^2.0.12 update-browserslist-db: ^1.0.11 bin: browserslist: cli.js - checksum: c523a982ef5d4141907795bbb72d7e2c5df79b2c6e495ef8ff6405b6734a2f16529a7f54c86b113085cad8a3359ac2fc6a478e86ae715084ba7384b9344b2ef5 + checksum: 903189787141f645f47ec46ec482dc85985d1297948062690dc2ea8480eb98fd6213507234eb17177825acaae49c53888445910f1af984abce5373fb65c270b8 languageName: node linkType: hard @@ -11828,9 +11675,9 @@ __metadata: languageName: node linkType: hard -"cacache@npm:17.0.6": - version: 17.0.6 - resolution: "cacache@npm:17.0.6" +"cacache@npm:17.1.3, cacache@npm:^17.0.0, cacache@npm:^17.0.4": + version: 17.1.3 + resolution: "cacache@npm:17.1.3" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 @@ -11841,11 +11688,10 @@ __metadata: minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 p-map: ^4.0.0 - promise-inflight: ^1.0.1 ssri: ^10.0.0 tar: ^6.1.11 unique-filename: ^3.0.0 - checksum: 576a41de27ec74a371e95b4ab650df719bbfbe4c48b621cd9a6ed0b67c9125b4540f0535456495910eae31b2eff5227a91796afe39d423eaa45575e6604d11e3 + checksum: fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 languageName: node linkType: hard @@ -11875,26 +11721,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^17.0.0, cacache@npm:^17.0.4": - version: 17.1.3 - resolution: "cacache@npm:17.1.3" - dependencies: - "@npmcli/fs": ^3.1.0 - fs-minipass: ^3.0.0 - glob: ^10.2.2 - lru-cache: ^7.7.1 - minipass: ^5.0.0 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 - languageName: node - linkType: hard - "cache-base@npm:^1.0.1": version: 1.0.1 resolution: "cache-base@npm:1.0.1" @@ -12006,10 +11832,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001449, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001489": - version: 1.0.30001497 - resolution: "caniuse-lite@npm:1.0.30001497" - checksum: 1581f6e6a3f4ea0be000d7d7bf3f2b92d0205d6637b6f12f7add3f9472b0c5e6c11f09175f6edd59496d702b251f999c4591933eb2267511a2eac52b759c2f58 +"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001503": + version: 1.0.30001514 + resolution: "caniuse-lite@npm:1.0.30001514" + checksum: 61e775d64dc992ba2b912fb74d2816c69fe7e1c3ab94f92bd94afcd44328ad9737e003872f85c1b9a0bd7a231eb6a260962297de2d3094dc106c4ed444cde03e languageName: node linkType: hard @@ -12037,7 +11863,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:5.2.0, chalk@npm:^5.2.0": +"chalk@npm:5.2.0": version: 5.2.0 resolution: "chalk@npm:5.2.0" checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 @@ -12075,6 +11901,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -12269,9 +12102,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab languageName: node linkType: hard @@ -12530,9 +12363,9 @@ __metadata: linkType: hard "collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -13048,19 +12881,19 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.25.1, core-js-compat@npm:^3.30.1, core-js-compat@npm:^3.30.2": - version: 3.30.2 - resolution: "core-js-compat@npm:3.30.2" +"core-js-compat@npm:^3.30.2, core-js-compat@npm:^3.31.0": + version: 3.31.1 + resolution: "core-js-compat@npm:3.31.1" dependencies: - browserslist: ^4.21.5 - checksum: 7cb984fc6bcdd2f28c2f2f19fc8fc874a303adf7f835720b9937f0b1d40793819ed744dc14dff28ddb7735404b02a43f08493c3e2f227b27090cd6d64d28c5f9 + browserslist: ^4.21.9 + checksum: 2f05c5d5b04e8a69cf50f538ef3fb1932ab83bd7dc690c438c7b876049cb1515eb4ca9fa29400ed7cd5885f34c901bf6a26d9149dfff8665d8302cace7e96d72 languageName: node linkType: hard "core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": - version: 3.30.2 - resolution: "core-js-pure@npm:3.30.2" - checksum: 4035947addee484227e99281fc594837387f4c4e209a5996c9d6c1609cbbe11e1a583133414c6685974ebcf228e620011ad4edcad8991882f69ff1663cbbfd82 + version: 3.31.1 + resolution: "core-js-pure@npm:3.31.1" + checksum: 58e126c2fb3d2758f29f947edc9a561b367189d158f98bfdf6169a7fafbbafc61ae4a9c69df6ed48a7b3985727c60eead82b2072f66f5ca0d911b9b4c74cbb8c languageName: node linkType: hard @@ -13072,9 +12905,9 @@ __metadata: linkType: hard "core-js@npm:^3.8.2": - version: 3.30.2 - resolution: "core-js@npm:3.30.2" - checksum: 864d7dc908d4ece507d27e6c6d2830300dcb775d88cfefeec31e34ab95be5016bb23abb29c8b1c4a930bada01318af009276199d75dcab1a230c3cebdf8d3a70 + version: 3.31.1 + resolution: "core-js@npm:3.31.1" + checksum: 17b44ddc675d7e924ecf0da21dcae3dc9e26758048e3275ba05fcd1a8805d45e6bacee1335b781e9d59d0c38302d5cbfc49073ef33232387459f432852fb6cd9 languageName: node linkType: hard @@ -13092,18 +12925,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^4.3.0": - version: 4.3.0 - resolution: "cosmiconfig-typescript-loader@npm:4.3.0" - peerDependencies: - "@types/node": "*" - cosmiconfig: ">=7" - ts-node: ">=10" - typescript: ">=3" - checksum: 15a0bad3befdc3bf1fddda4876068971508f8dc7e2fb24b16aa0641e1d629bf48f35ff23b87a01177d25e7d5ad8522b995eab76bf44180a27b9245b9eeb4f140 - languageName: node - linkType: hard - "cosmiconfig@npm:7.0.0": version: 7.0.0 resolution: "cosmiconfig@npm:7.0.0" @@ -13130,7 +12951,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^8.1.3": +"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": version: 8.2.0 resolution: "cosmiconfig@npm:8.2.0" dependencies: @@ -13186,17 +13007,18 @@ __metadata: languageName: node linkType: hard -"critters@npm:0.0.16": - version: 0.0.16 - resolution: "critters@npm:0.0.16" +"critters@npm:0.0.19": + version: 0.0.19 + resolution: "critters@npm:0.0.19" dependencies: chalk: ^4.1.0 - css-select: ^4.2.0 - parse5: ^6.0.1 - parse5-htmlparser2-tree-adapter: ^6.0.1 - postcss: ^8.3.7 + css-select: ^5.1.0 + dom-serializer: ^2.0.0 + domhandler: ^5.0.2 + htmlparser2: ^8.0.2 + postcss: ^8.4.23 pretty-bytes: ^5.3.0 - checksum: c8f4734ed73636c671f2640e64e560507fb67bcbd03e3d46b398c2011e31c225e641369c1d40c37b3c773ba7076ff4ec004393b51acc3cafc537eb671bf3325d + checksum: facaed781d44aba3d55e92a6e280b397b4c393f8756fe8233afb5bf35ff1cb01562258eb4c910c534c8c7746a27b48a65ab111416733d9fb3f35fe50e65ac363 languageName: node linkType: hard @@ -13262,25 +13084,7 @@ __metadata: languageName: node linkType: hard -"css-loader@npm:6.7.3": - version: 6.7.3 - resolution: "css-loader@npm:6.7.3" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.19 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 - postcss-modules-scope: ^3.0.0 - postcss-modules-values: ^4.0.0 - postcss-value-parser: ^4.2.0 - semver: ^7.3.8 - peerDependencies: - webpack: ^5.0.0 - checksum: 20f435f73d6d776ade4b8dd6c83e7eee65a139f510b2c7575e45d7500ce1b72618b408f4841afc7f34e1aaeef25603ddd10fd4920461907483e1e1e4472bff1f - languageName: node - linkType: hard - -"css-loader@npm:^6.7.1, css-loader@npm:^6.7.3": +"css-loader@npm:6.8.1, css-loader@npm:^6.7.1, css-loader@npm:^6.7.3": version: 6.8.1 resolution: "css-loader@npm:6.8.1" dependencies: @@ -13298,7 +13102,7 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^4.1.3, css-select@npm:^4.2.0": +"css-select@npm:^4.1.3": version: 4.3.0 resolution: "css-select@npm:4.3.0" dependencies: @@ -13621,13 +13425,13 @@ __metadata: linkType: hard "deep-equal@npm:^2.0.5": - version: 2.2.1 - resolution: "deep-equal@npm:2.2.1" + version: 2.2.2 + resolution: "deep-equal@npm:2.2.2" dependencies: array-buffer-byte-length: ^1.0.0 call-bind: ^1.0.2 es-get-iterator: ^1.1.3 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 is-arguments: ^1.1.1 is-array-buffer: ^3.0.2 is-date-object: ^1.0.5 @@ -13642,11 +13446,11 @@ __metadata: which-boxed-primitive: ^1.0.2 which-collection: ^1.0.1 which-typed-array: ^1.1.9 - checksum: 9e32606f0e24ef4d6b100c68cadae81495c3638944e933afc4b8389b042e95c5fe1381492cf7a6d385bcbae564c9cfb7086f37f277e37521a632b008a6b208dc + checksum: 07b46a9a848efdab223abc7e3ba612ef9168d88970c3400df185d5840a30ca384749c996ae5d7af844d6b27c42587fb73a4445c63e38aac77c2d0ed9a63faa87 languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -14194,9 +13998,9 @@ __metadata: linkType: hard "dotenv@npm:^16.0.0": - version: 16.1.4 - resolution: "dotenv@npm:16.1.4" - checksum: 47cf5ce136bf2a5e8402fc9855d95848973cfee423fe0adf1a7cd565c842c51e5b8c95889b075140c26b092b74dd2a319970ff496cd7159ab3f1fc58edfc0ede + version: 16.3.1 + resolution: "dotenv@npm:16.3.1" + checksum: b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 languageName: node linkType: hard @@ -14305,10 +14109,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.284, electron-to-chromium@npm:^1.4.411": - version: 1.4.426 - resolution: "electron-to-chromium@npm:1.4.426" - checksum: 245c8a706d4c4f7c22fb56db0baa9416a5732b8c3dd4d1578da2bf1781d285ecdc79c4ad1efc97c38a337cfbe50dd6982f8aaa04f0f1437ff5eb10fb58d77730 +"electron-to-chromium@npm:^1.4.431": + version: 1.4.455 + resolution: "electron-to-chromium@npm:1.4.455" + checksum: 4436a41a91530a254d86c49fe41dc2842e84097be459679134a153104886f162d025eb4907619dac19eac1d48ccc96c0d2d86c96fb5818dab29b6237c1f5ffbd languageName: node linkType: hard @@ -14554,13 +14358,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.13.0, enhanced-resolve@npm:^5.14.1, enhanced-resolve@npm:^5.7.0": - version: 5.14.1 - resolution: "enhanced-resolve@npm:5.14.1" +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.14.1, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.7.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: 65edb495492817fcdc2f8755f911835c4a5ea706377e9a57bbdacace14167c1413ad4d12630d23b850e80e2671b9a46603e562b9321546d1eca664ac24170906 + checksum: 69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a languageName: node linkType: hard @@ -14623,11 +14427,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3, envinfo@npm:^7.7.4": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" bin: envinfo: dist/cli.js - checksum: 01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 + checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf languageName: node linkType: hard @@ -14832,9 +14636,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: 6e0a9095e0abe38f480e0f366cdeca19db64d85a533da9332739a64d70e97a61e68c1f98a2396468ae6229245b8e5edcb1e48c4d3615ae4da9052a1bdc2367e2 + version: 1.3.0 + resolution: "es-module-lexer@npm:1.3.0" + checksum: cbd9bdc65458d4c4bd0d22a1c792926bfdf7bb6a96a9ed04da7d31f317159bd4945d2dbeb318717f9214f9695ee85a8fae64a5d25bf360baa82b58079032fc7a languageName: node linkType: hard @@ -14915,50 +14719,50 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:0.17.18": - version: 0.17.18 - resolution: "esbuild-wasm@npm:0.17.18" +"esbuild-wasm@npm:0.17.19": + version: 0.17.19 + resolution: "esbuild-wasm@npm:0.17.19" bin: esbuild: bin/esbuild - checksum: 1462acb7603b6351f5c204c57ec1c5550cb90da9e09ffb4cf9dced8692e3d89b2f882846b1780ac24141b19cb8008c3bdd1362d8fb3a0cd9df03a3e14633b5ef + checksum: 42b1800031cd3e9504ef328de225b36af61d995c000c1b2dcfb9f6c7b9bb35b43a531d19fa285ecadf4584cc4db940ad59ba666b4b9b6011670302ceb8b52273 languageName: node linkType: hard "esbuild-wasm@npm:>=0.13.8": - version: 0.17.19 - resolution: "esbuild-wasm@npm:0.17.19" + version: 0.18.11 + resolution: "esbuild-wasm@npm:0.18.11" bin: esbuild: bin/esbuild - checksum: 42b1800031cd3e9504ef328de225b36af61d995c000c1b2dcfb9f6c7b9bb35b43a531d19fa285ecadf4584cc4db940ad59ba666b4b9b6011670302ceb8b52273 + checksum: 2f987f9b725b68e454fd6c8a0f98601bb80c366f32995374666c00a1097f3aa40f9bef754e6fb1c3bfe80999816c56473c15ae56f65a58cf66f4a088a09368ed languageName: node linkType: hard "esbuild@npm:^0.18.0": - version: 0.18.0 - resolution: "esbuild@npm:0.18.0" - dependencies: - "@esbuild/android-arm": 0.18.0 - "@esbuild/android-arm64": 0.18.0 - "@esbuild/android-x64": 0.18.0 - "@esbuild/darwin-arm64": 0.18.0 - "@esbuild/darwin-x64": 0.18.0 - "@esbuild/freebsd-arm64": 0.18.0 - "@esbuild/freebsd-x64": 0.18.0 - "@esbuild/linux-arm": 0.18.0 - "@esbuild/linux-arm64": 0.18.0 - "@esbuild/linux-ia32": 0.18.0 - "@esbuild/linux-loong64": 0.18.0 - "@esbuild/linux-mips64el": 0.18.0 - "@esbuild/linux-ppc64": 0.18.0 - "@esbuild/linux-riscv64": 0.18.0 - "@esbuild/linux-s390x": 0.18.0 - "@esbuild/linux-x64": 0.18.0 - "@esbuild/netbsd-x64": 0.18.0 - "@esbuild/openbsd-x64": 0.18.0 - "@esbuild/sunos-x64": 0.18.0 - "@esbuild/win32-arm64": 0.18.0 - "@esbuild/win32-ia32": 0.18.0 - "@esbuild/win32-x64": 0.18.0 + version: 0.18.11 + resolution: "esbuild@npm:0.18.11" + dependencies: + "@esbuild/android-arm": 0.18.11 + "@esbuild/android-arm64": 0.18.11 + "@esbuild/android-x64": 0.18.11 + "@esbuild/darwin-arm64": 0.18.11 + "@esbuild/darwin-x64": 0.18.11 + "@esbuild/freebsd-arm64": 0.18.11 + "@esbuild/freebsd-x64": 0.18.11 + "@esbuild/linux-arm": 0.18.11 + "@esbuild/linux-arm64": 0.18.11 + "@esbuild/linux-ia32": 0.18.11 + "@esbuild/linux-loong64": 0.18.11 + "@esbuild/linux-mips64el": 0.18.11 + "@esbuild/linux-ppc64": 0.18.11 + "@esbuild/linux-riscv64": 0.18.11 + "@esbuild/linux-s390x": 0.18.11 + "@esbuild/linux-x64": 0.18.11 + "@esbuild/netbsd-x64": 0.18.11 + "@esbuild/openbsd-x64": 0.18.11 + "@esbuild/sunos-x64": 0.18.11 + "@esbuild/win32-arm64": 0.18.11 + "@esbuild/win32-ia32": 0.18.11 + "@esbuild/win32-x64": 0.18.11 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -15006,7 +14810,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: f40bd01dd3125d0a4831aeddf16b65f4f7ee402e52f61f85c0672a580c4c7623da30e339e3ab997fac95978c4d41baaaf4704a85b4bf76e01038e825942a0c97 + checksum: f038043facb479fc26e14eef203c8ddda2aeffeb18e82af74d0eb3daea0c3d6184d343ab62c86e5b036b3a7ae87e02388f4c60379777bf1e8f3e26156c906802 languageName: node linkType: hard @@ -15053,13 +14857,12 @@ __metadata: linkType: hard "escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -15067,7 +14870,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 + checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -15383,13 +15186,13 @@ __metadata: linkType: hard "eslint@npm:^8.28.0": - version: 8.42.0 - resolution: "eslint@npm:8.42.0" + version: 8.44.0 + resolution: "eslint@npm:8.44.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.3 - "@eslint/js": 8.42.0 + "@eslint/eslintrc": ^2.1.0 + "@eslint/js": 8.44.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -15401,7 +15204,7 @@ __metadata: escape-string-regexp: ^4.0.0 eslint-scope: ^7.2.0 eslint-visitor-keys: ^3.4.1 - espree: ^9.5.2 + espree: ^9.6.0 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -15421,13 +15224,13 @@ __metadata: lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 - optionator: ^0.9.1 + optionator: ^0.9.3 strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 8ab5a3c1619008c946497a16b88a811b1f6c49a750a9bd0f81085dff4166418b9da4e46108b09d920877ab2f5981e3613332653b7f5e3917d8088bc4b8d40b5a + checksum: a31ca4571a67012629936d891141a4a5747d5902fb7f4e10119a5acd632e0976b9ba1b761d8c81cff8a9cc3e796df2c56f86c02535fd977de962a98ce585624a languageName: node linkType: hard @@ -15442,14 +15245,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.5.2": - version: 9.5.2 - resolution: "espree@npm:9.5.2" +"espree@npm:^9.6.0": + version: 9.6.0 + resolution: "espree@npm:9.6.0" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: 6885e57b3dcea3f65211403a10077a80a57f03e6c8b45c1e1db4bc5958e0fdb5c358819c88898ea67655d25fb646836182f688156e124a05610e714d3fcb6822 + checksum: f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be languageName: node linkType: hard @@ -15723,16 +15526,24 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.5.0": - version: 29.5.0 - resolution: "expect@npm:29.5.0" +"expect@npm:^29.0.0, expect@npm:^29.6.1": + version: 29.6.1 + resolution: "expect@npm:29.6.1" dependencies: - "@jest/expect-utils": ^29.5.0 + "@jest/expect-utils": ^29.6.1 + "@types/node": "*" jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 - checksum: 3c9382967217ad1453e9271e0da3f83c4aeb12272968007b90fc5873340e7fb64bf4852e1522bdf27556623d031ce62f82aaac09e485a15c6d0589d50999422d + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 + checksum: 8ffdd2c8c09d6d632ae85a1172a7e785e75f187ac0009330fa5bcb00e07a06d781b8016579952a1f0ef43e1604068fcdaade3029c8b5ffb99931f79bff57e778 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 languageName: node linkType: hard @@ -15882,6 +15693,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:3.2.12": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + languageName: node + linkType: hard + "fast-glob@npm:3.2.7": version: 3.2.7 resolution: "fast-glob@npm:3.2.7" @@ -15895,16 +15719,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.0 + resolution: "fast-glob@npm:3.3.0" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + checksum: 4700063a2d7c9aae178f575648580bee1fc3f02ab3f358236d77811f52332bc10a398e75c6d5ecde61216996f3308247b37d70e2ee605a0748abe147f01b8f64 languageName: node linkType: hard @@ -15929,7 +15753,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -16163,6 +15987,16 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + "find-index@npm:^1.1.0": version: 1.1.1 resolution: "find-index@npm:1.1.1" @@ -16215,6 +16049,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + "find-versions@npm:^4.0.0": version: 4.0.0 resolution: "find-versions@npm:4.0.0" @@ -16274,9 +16118,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.208.0 - resolution: "flow-parser@npm:0.208.0" - checksum: ee7fe5899dda11073056fb13783ad7f3512c1d6c4ff3b728403f5ba3d20d1bbfaee0bebff34ff6fec5e6e28eec89917d0e35f0db2f647043adf85ebd65aa57ee + version: 0.211.1 + resolution: "flow-parser@npm:0.211.1" + checksum: dcfeff46aab22f7c36c59cc787b9d97a4c23b1e9805aa05b0d940eab2c8de61da411cde2f83866adb2b1b941ba896ae02119514abe6e223e2721afce426e723e languageName: node linkType: hard @@ -16404,8 +16248,8 @@ __metadata: linkType: hard "formik@npm:^2.2.9": - version: 2.4.1 - resolution: "formik@npm:2.4.1" + version: 2.4.2 + resolution: "formik@npm:2.4.2" dependencies: deepmerge: ^2.1.1 hoist-non-react-statics: ^3.3.0 @@ -16413,10 +16257,10 @@ __metadata: lodash-es: ^4.17.21 react-fast-compare: ^2.0.1 tiny-warning: ^1.0.2 - tslib: ^1.10.0 + tslib: ^2.0.0 peerDependencies: react: ">=16.8.0" - checksum: 9a870145cc00ad9640f46251db56bdb1356e759e6794e8c2350e67ce90aa1beb7cda7890fa914d44468f984351fe34660a909e46556a76b06ef63be80e317433 + checksum: ef17db09ba54d1bc30989e5797a07dc9335388c76235616e10d16b3a8acf33efa0f7f742e66179f910c84c8734a5103ac7dc67c778666a4088e8b1efd53f84b3 languageName: node linkType: hard @@ -16761,7 +16605,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" dependencies: @@ -16865,11 +16709,11 @@ __metadata: linkType: hard "get-tsconfig@npm:^4.4.0, get-tsconfig@npm:^4.5.0": - version: 4.6.0 - resolution: "get-tsconfig@npm:4.6.0" + version: 4.6.2 + resolution: "get-tsconfig@npm:4.6.2" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: 6480197512fc97e4bc049fc23943d78ef5f034e6a3c7c7dbc1d16d8a2091aa08b72122ebf29c2dc815842266f966cf0c12000dc9151e632296feb9e1a285b854 + checksum: 352c7313720b0f1172de5b6697da55c02744bacd8587f4cd989bfa25d8bb1af702128c2869121e6e4eef06c5c2f013406d2840905a8e898fd35351a305298ee1 languageName: node linkType: hard @@ -17049,31 +16893,18 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.1.0, glob@npm:^8.0.1": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - "glob@npm:^10.0.0, glob@npm:^10.2.2": - version: 10.2.7 - resolution: "glob@npm:10.2.7" + version: 10.3.3 + resolution: "glob@npm:10.3.3" dependencies: foreground-child: ^3.1.0 jackspeak: ^2.0.3 minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 - path-scurry: ^1.7.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 bin: glob: dist/cjs/src/bin.js - checksum: 15b742f933c4302cca278527a720c1300ba67b92975005e54e0fb85fee85aff1c45e71fbac386a2e190e64b7b17897b5ae1bc6cbd2cdd96a62c0dc55c8fb076f + checksum: 50effa4208762e508def5688e4d88242db80b5913f65e9c5d5aefb707c59e66a27e845fbf18127157189f6ed0f055e2c94d7112c97a065b9cbfe002e1b26d330 languageName: node linkType: hard @@ -17104,6 +16935,19 @@ __metadata: languageName: node linkType: hard +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + "glob@npm:^9.2.0": version: 9.3.5 resolution: "glob@npm:9.3.5" @@ -17172,15 +17016,15 @@ __metadata: linkType: hard "globby@npm:^13.1.1, globby@npm:^13.1.3": - version: 13.1.4 - resolution: "globby@npm:13.1.4" + version: 13.2.2 + resolution: "globby@npm:13.2.2" dependencies: dir-glob: ^3.0.1 - fast-glob: ^3.2.11 - ignore: ^5.2.0 + fast-glob: ^3.3.0 + ignore: ^5.2.4 merge2: ^1.4.1 slash: ^4.0.0 - checksum: cbf4ce32ea7fba37be8c4749a2f69c2803b70a57e40a968b57343cc74daced8c87a7cdea038f69eda95fe17df8ebf75346d18e188c2bc4948f081bbbc655c323 + checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard @@ -17275,13 +17119,6 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a - languageName: node - linkType: hard - "graphemer@npm:^1.4.0": version: 1.4.0 resolution: "graphemer@npm:1.4.0" @@ -17714,9 +17551,9 @@ __metadata: linkType: hard "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": - version: 2.3.5 - resolution: "html-entities@npm:2.3.5" - checksum: ef3cc70691bf4b4422f4ba37e84aaa9084f45791d62459c9b485a3b4e9e29ceda35a6b2cd6dcee64f17101fa2ab0f03db57acf3184993a90626d09e615301cab + version: 2.4.0 + resolution: "html-entities@npm:2.4.0" + checksum: 42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d languageName: node linkType: hard @@ -17764,8 +17601,8 @@ __metadata: linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.5.2 - resolution: "html-webpack-plugin@npm:5.5.2" + version: 5.5.3 + resolution: "html-webpack-plugin@npm:5.5.3" dependencies: "@types/html-minifier-terser": ^6.0.0 html-minifier-terser: ^6.0.2 @@ -17774,7 +17611,7 @@ __metadata: tapable: ^2.0.0 peerDependencies: webpack: ^5.20.0 - checksum: 6cde8c03ab8f2f218a95ae6916348396681c2a0053f0d1af97d27bd3aec18387dafb67e869552858eb0237701a79550528c889d864663d1d5a7e01440dc627fc + checksum: 7ba0d0f87d08f5c4c51f821842d736ec1762940bc39798932528adaec1e9cca8f52944987b88789007f5706d15110edbdfa30df445d61c6628b02ebe163c4f42 languageName: node linkType: hard @@ -17828,7 +17665,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^8.0.1": +"htmlparser2@npm:^8.0.1, htmlparser2@npm:^8.0.2": version: 8.0.2 resolution: "htmlparser2@npm:8.0.2" dependencies: @@ -18112,7 +17949,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 @@ -18220,10 +18057,10 @@ __metadata: languageName: node linkType: hard -"ini@npm:4.0.0": - version: 4.0.0 - resolution: "ini@npm:4.0.0" - checksum: 8dfe21c1486cfc945a24b37fcf8d699772bf83cea75a9ef1ec38e00c9c6939aad81f0c4537f6ff1374fa226126d4f93d29c7e7cdabf020db919f39ef0204cee9 +"ini@npm:4.1.1": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 languageName: node linkType: hard @@ -19173,48 +19010,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-circus@npm:29.5.0" +"jest-circus@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-circus@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/expect": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/expect": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.5.0 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-runtime: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-each: ^29.6.1 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-runtime: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 p-limit: ^3.1.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 77f77b826941f67e9794e185072ee612cbddf53a1cfbf736de86176b7dc54e54aef151cf31b492adaef221f550924fd60dbaa01c9b939c3a4bfb46d8392c60a8 + checksum: 9321dfabfa6fe41d4495f4fd21d1a840baacdfe9f0cc7c2346b89cd4f775ee37cc839c6d6aaac415059852bbdfafca1ed8c392999f7fbd152d6b231ca0920d1d languageName: node linkType: hard -"jest-cli@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-cli@npm:29.5.0" +"jest-cli@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-cli@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-config: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -19224,34 +19061,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: d63df7e329760bc036d11980883399de86b41a7fa93bbc2e79feef28284b096dec40afc21796504555ccbf32806bfc78cf64a63eac9093bb4f036b282b409863 + checksum: 37850378efcb5bea2d000d4c78eac5af871bcd53d3f8e60902f33f116ec847f9a3641ca78f1ca046b4c1c6e2031e084d78b01eba3592788b3e3c983c0d5a4b21 languageName: node linkType: hard -"jest-config@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-config@npm:29.5.0" +"jest-config@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-config@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.5.0 - "@jest/types": ^29.5.0 - babel-jest: ^29.5.0 + "@jest/test-sequencer": ^29.6.1 + "@jest/types": ^29.6.1 + babel-jest: ^29.6.1 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.5.0 - jest-environment-node: ^29.5.0 + jest-circus: ^29.6.1 + jest-environment-node: ^29.6.1 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-runner: ^29.5.0 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-resolve: ^29.6.1 + jest-runner: ^29.6.1 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -19262,19 +19099,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 01780eb66815e3d31d237aab5d7611ea59e0cdf159cbab2a7c682cb08bde6d053c17a528547440fb1b0294c26ebfd5b54ad35d8c9439f6fae76960ee0bc90197 + checksum: 6f3c3ac7587b651d22b199fdc3c4ad17a08397c2fcae05543a7a81e03a7e12355aaa3c75ce39e6df5c8fd8efcd65518cf05f528f7724cb8df17aa4e44dd74ecf languageName: node linkType: hard -"jest-diff@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-diff@npm:29.5.0" +"jest-diff@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-diff@npm:29.6.1" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 00fda597fa6ee22774453c3cd35c2210bd7f749cf48ad7a41c13b898b2943c9c047842720eb928cdb949b9de87204d8d8987bf12aefdb2f0504f5f4112cab5b0 + pretty-format: ^29.6.1 + checksum: f067d977937744df7dd8a269e2948620e4bcb35ff70d9ea1d0fe75a47fa603ce3edc350961b671c94f8de5adb65d6bdeb0002569b59983fba56f02dd4b47d171 languageName: node linkType: hard @@ -19287,51 +19124,51 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-each@npm:29.5.0" +"jest-each@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-each@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.5.0 - pretty-format: ^29.5.0 - checksum: 214f6b5adfc0d6a3e837769018b7a7b69f41e99aac939fe4730bcca23f69e3566ed23706f95a396b20e63e6b9f90990053fc3c1662808036d4f41e4d6d32641d + jest-util: ^29.6.1 + pretty-format: ^29.6.1 + checksum: b2cbea027a7d68c6a22afff1d460c866389e5c3ec1fece930b3fa79df24fb39f3ca258679de9ca0c2af4a6a70e5aa542ff6779f32d21289bdf981a7c1470aa0e languageName: node linkType: hard "jest-environment-jsdom@npm:^29.0.0, jest-environment-jsdom@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-jsdom@npm:29.5.0" + version: 29.6.1 + resolution: "jest-environment-jsdom@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 972a1bdfb1d508a359951ec11ade5dfad7cfabea0ab9f7746737ba10e0c6381e34f2b4acb03c7e5eb623611813310dfb0775eb0607c5537b7618234d04aab2ac + checksum: 457ac6f78b9b98d1a86af944469fd2cce6d16d40afa748a8226c77850b98fd376d5bbcbf2b68a72ee3748091b95321fedc4044d3def45c47b139a9b57d4757be languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-environment-node@npm:29.5.0" +"jest-environment-node@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-environment-node@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.5.0 - jest-util: ^29.5.0 - checksum: 2e636a095ff9a9e0aa20fda5b4c06eebed8f3ba2411062bdf724b114eedafd49b880167998af9f77aa8aa68231621aebe3998389d73433e9553ea5735cad1e14 + jest-mock: ^29.6.1 + jest-util: ^29.6.1 + checksum: 2e168708553f45c2afc42234dd78c4677d1bd34a11e0c8d43e8ca6da8e68cd55acb2215cdfc46cba8c5b1dbc0061783006ecbc214a02a5ae962602f80232d7fc languageName: node linkType: hard @@ -19342,11 +19179,11 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-haste-map@npm:29.5.0" +"jest-haste-map@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-haste-map@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 @@ -19354,14 +19191,14 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.5.0 - jest-worker: ^29.5.0 + jest-util: ^29.6.1 + jest-worker: ^29.6.1 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 162edfa185478db9ebe7dff73f3475ef2c205d94fa2b0fc3b41aba4fc29bab274d4a76ca41ca20ea7d9d6ed2b0d8519e298cfffbf5cad6631412d8961c190612 + checksum: 6d100cd80c89d2c45175e6504eafe40ba4dfb1e77a4e204204a5f2905a4840e73ff66cee187b39e33a1af2406831a48f1f945efdf872071e19ac417eb0a3aac1 languageName: node linkType: hard @@ -19396,42 +19233,42 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-leak-detector@npm:29.5.0" +"jest-leak-detector@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-leak-detector@npm:29.6.1" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: d7db5d4a7cb676fc151f533d6887f3d6bbb4e35346346cbed0b5583c296b13af2d3c8434b30f62b0eb9c711718c7f4bd48496c47af3a20320ee162e33d64aaf2 + pretty-format: ^29.6.1 + checksum: 17e702b3a790e37dd76b93e2f782de228bb332030e478264f2eb081e1d13907f414a6ec2271b173b2516e7faa4c7b0ddd1c9c5ae9b9293ed921a9ee943fafd1a languageName: node linkType: hard -"jest-matcher-utils@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-matcher-utils@npm:29.5.0" +"jest-matcher-utils@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-matcher-utils@npm:29.6.1" dependencies: chalk: ^4.0.0 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - pretty-format: ^29.5.0 - checksum: 0a3ae95ef5c5c4ac2b2c503c2f57e173fa82725722e1fadcd902fd801afe17d9d36e9366820959465f553627bf1e481a0e4a540125f3b4371eec674b3557f7f3 + pretty-format: ^29.6.1 + checksum: 4425bcb900bd25dbd679c220ef978f80aab11a7b6bed0e178cf8fe3c7167ecefdb6f522e3cf3e877a622160f781cea02aac43a3e243dc8afca917e90418434b8 languageName: node linkType: hard -"jest-message-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-message-util@npm:29.5.0" +"jest-message-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-message-util@npm:29.6.1" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.5.0 + pretty-format: ^29.6.1 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 706e89cacc89c090af584f4687c4e7f0616706481e468ec7c88270e07ae7458a829e477b7b3dff56b75d801f799d65eb2c28d6453c25dd02bea0fd98f0809dbb + checksum: 7a34c7ee4efada36aa385a07e1d22f8b6183dda37f7bca15fcf2e9575e9b91ce6ea88429a0b749bc59d934327492e622913d7cd9ab23ca78c29353184795a68d languageName: node linkType: hard @@ -19445,14 +19282,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-mock@npm:29.5.0" +"jest-mock@npm:^29.5.0, jest-mock@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-mock@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.5.0 - checksum: c5b71d397d6acd44d99cd48dad8ca76334fc5a27e120da72d264d7527a9efc7c6fc431d79de64d0b73aa0ab26a2d0712498e323d42b9e03bee05e983b0d2035c + jest-util: ^29.6.1 + checksum: 26e666787d04f341887d7612b2ada7a9c86868dac319056dac46709a00fc2ee694e7a64fad8f0d5450690d779ddaacaff7a35aaf1716a165b3e1eaf56d0aa300 languageName: node linkType: hard @@ -19507,89 +19344,89 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve-dependencies@npm:29.5.0" +"jest-resolve-dependencies@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve-dependencies@npm:29.6.1" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.5.0 - checksum: fbe513b7d905c4a70be17fd1cb4bd83da1e82cceb47ed7ceababbe11c75f1d0c18eadeb3f4ebb6997ba979f35fa18dfd02e1d57eb556675e47b35675fde0aac7 + jest-snapshot: ^29.6.1 + checksum: 330fdc103dd1c01ae73e9e4fc4ae11d341569187a82c09aea41d50cdf9e5353d00b0405177db020b3af76cb0e402c98f2dab129afde7bcd5d99f5123d6182321 languageName: node linkType: hard -"jest-resolve@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-resolve@npm:29.5.0" +"jest-resolve@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-resolve@npm:29.6.1" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 + jest-haste-map: ^29.6.1 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.5.0 - jest-validate: ^29.5.0 + jest-util: ^29.6.1 + jest-validate: ^29.6.1 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: e7ea3b1cf865a7e63ad297d0f43a093dde145f9ca72dc8e75b6c7eb3af60fe78e4f7d024fd92fa280419a4ca038d42a9268d4d5d512958d11347e680daca1f12 + checksum: 809ee25be7a97ed33755dbe536617cb83a0a8218c81310f5927f1a2f9e82e48353d60a5b0b630b6c25bc66825d0b2197c6c569d043a8431bae01ba6e226b5a57 languageName: node linkType: hard -"jest-runner@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runner@npm:29.5.0" +"jest-runner@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runner@npm:29.6.1" dependencies: - "@jest/console": ^29.5.0 - "@jest/environment": ^29.5.0 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/console": ^29.6.1 + "@jest/environment": ^29.6.1 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.5.0 - jest-haste-map: ^29.5.0 - jest-leak-detector: ^29.5.0 - jest-message-util: ^29.5.0 - jest-resolve: ^29.5.0 - jest-runtime: ^29.5.0 - jest-util: ^29.5.0 - jest-watcher: ^29.5.0 - jest-worker: ^29.5.0 + jest-environment-node: ^29.6.1 + jest-haste-map: ^29.6.1 + jest-leak-detector: ^29.6.1 + jest-message-util: ^29.6.1 + jest-resolve: ^29.6.1 + jest-runtime: ^29.6.1 + jest-util: ^29.6.1 + jest-watcher: ^29.6.1 + jest-worker: ^29.6.1 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 96f47976b9bcc0554455c200d02ebc1547b9a7749b05353c0d55aff535509032c0c12ea25ccc294350f62c14665dbc1e00b15e0d1c52207edfb807e4fec4a36a + checksum: 69d4f22c06d06498ffacf658460c3b40d87d77ac924a9f1e5c176f56e49d696b86234473463a764bd227f056d6e4e3852a2e10f95c74d5861d7fc4c17101ab55 languageName: node linkType: hard -"jest-runtime@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-runtime@npm:29.5.0" +"jest-runtime@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-runtime@npm:29.6.1" dependencies: - "@jest/environment": ^29.5.0 - "@jest/fake-timers": ^29.5.0 - "@jest/globals": ^29.5.0 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/environment": ^29.6.1 + "@jest/fake-timers": ^29.6.1 + "@jest/globals": ^29.6.1 + "@jest/source-map": ^29.6.0 + "@jest/test-result": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.5.0 - jest-message-util: ^29.5.0 - jest-mock: ^29.5.0 + jest-haste-map: ^29.6.1 + jest-message-util: ^29.6.1 + jest-mock: ^29.6.1 jest-regex-util: ^29.4.3 - jest-resolve: ^29.5.0 - jest-snapshot: ^29.5.0 - jest-util: ^29.5.0 + jest-resolve: ^29.6.1 + jest-snapshot: ^29.6.1 + jest-util: ^29.6.1 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 9b5c0a97e1f24945059695e056188041730a3f1dc5924153e323eb7429244e10e7cc877b13d057869d6621c460deae11b77a2a2e9ab56e22b56864a3e44c4448 + checksum: 79850c21fb630cb35fe23e7688daa67d387735cf2912febcd95ef4195bcc4931699d28e3b16e705fa8c2843fca958524133b1fa3fe0361bc2dac17192b40125b languageName: node linkType: hard @@ -19602,34 +19439,32 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.0.0, jest-snapshot@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-snapshot@npm:29.5.0" +"jest-snapshot@npm:^29.0.0, jest-snapshot@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-snapshot@npm:29.6.1" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.5.0 - "@jest/transform": ^29.5.0 - "@jest/types": ^29.5.0 - "@types/babel__traverse": ^7.0.6 + "@jest/expect-utils": ^29.6.1 + "@jest/transform": ^29.6.1 + "@jest/types": ^29.6.1 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.5.0 + expect: ^29.6.1 graceful-fs: ^4.2.9 - jest-diff: ^29.5.0 + jest-diff: ^29.6.1 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.5.0 - jest-message-util: ^29.5.0 - jest-util: ^29.5.0 + jest-matcher-utils: ^29.6.1 + jest-message-util: ^29.6.1 + jest-util: ^29.6.1 natural-compare: ^1.4.0 - pretty-format: ^29.5.0 - semver: ^7.3.5 - checksum: db9957d9c8607d75bb08302605331b5d90fa738fafeed820ab8ebcb2c90f9e62fb4fec0b4c826c04a37557cbb7a9ed26a10b0c74d46ffedce2d6ae8a9c891b00 + pretty-format: ^29.6.1 + semver: ^7.5.3 + checksum: 1322fb9b23e7316b5f83d467ce2f46a65fdfa84a67e0000825fd9ef4910e66bdc732cb16e6da406f94c18905b2a8c6bbc29000c79f31e1e3eeb57508ac233bb4 languageName: node linkType: hard @@ -19644,31 +19479,31 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" +"jest-util@npm:^29.0.0, jest-util@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-util@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 + checksum: c4765afe8769239aef6a76aa69d9c98d383e171e4745eb65c4abb2e776f7965ab762c758f740bf726ebab428bc52b099c23f37e93dc30cf1ec46b915543f80af languageName: node linkType: hard -"jest-validate@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-validate@npm:29.5.0" +"jest-validate@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-validate@npm:29.6.1" dependencies: - "@jest/types": ^29.5.0 + "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.5.0 - checksum: 7aabde27a9b736df65902a1bb4ec63af518d4c95e12a910e7658140784168f08c662d5babe67dfa70d843dd2096bc08aa7090fef83c7a9d6bb0893793c3a599a + pretty-format: ^29.6.1 + checksum: 4f6889852b0167f9087c3a67b598365be0807d4e8cce77e246b97df3e3cd1c13d3c98c18de07080d670c9e52b81b81d0ee48fa0544eddc987d32796f50f86371 languageName: node linkType: hard @@ -19704,19 +19539,19 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-watcher@npm:29.5.0" +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-watcher@npm:29.6.1" dependencies: - "@jest/test-result": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/test-result": ^29.6.1 + "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.5.0 + jest-util: ^29.6.1 string-length: ^4.0.1 - checksum: 6a2e71e720183303913fc34fc24a3f87fca7fcfa638bc6c9109a4808b36251a1cb7fe98b956eb0d9c9ead1ad47c3dc3745289ee89e62c6c615168e92282069ca + checksum: bf007eb358f27c4f180202a8ec4bae2948a9563a84da073a185375b6a5251fe6cf9bf3f02f0682d2b8c343bcc5c1c2f185703009b6a47883ef1daeefed55881c languageName: node linkType: hard @@ -19731,26 +19566,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" +"jest-worker@npm:^29.6.1": + version: 29.6.1 + resolution: "jest-worker@npm:29.6.1" dependencies: "@types/node": "*" - jest-util: ^29.5.0 + jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d + checksum: 15a5c699e6074401aac85bcc869e3be95353767f127fd41cccc97c9b38e62596a1ec336866eab180beec305da2cc7da75a663f3a5ddf63b6838ff839ef5073ec languageName: node linkType: hard "jest@npm:^29.3.1, jest@npm:^29.5.0": - version: 29.5.0 - resolution: "jest@npm:29.5.0" + version: 29.6.1 + resolution: "jest@npm:29.6.1" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.6.1 + "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.6.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -19758,16 +19593,16 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 32e29cfa2373530ed323ea65dfb4fd5172026349be48ebb7a2dc5660adadd1c68f6b0fe2b67cc3ee723cc34e2d4552a852730ac787251b406cf58e37a90f6dac + checksum: 2c161c63cb502265805c4982b8b722307f6a7016afdcff267eab33e727b9b737baaf8c22e0a8fedfc19634e903421a0352f0c056d26a8f24b908aaed335283c8 languageName: node linkType: hard "jiti@npm:^1.18.2": - version: 1.18.2 - resolution: "jiti@npm:1.18.2" + version: 1.19.1 + resolution: "jiti@npm:1.19.1" bin: jiti: bin/jiti.js - checksum: 578343e883838a5d6775350925d9e1a647e00132ade9c8cc318c163b692988612472f0af3cd9d92b8d8ca61e623092e86ab89563cbf6394900a5a39962e3c4e8 + checksum: c09f15b3ef81f0fcda45f96aaecd130213c81d8a9b8a92f5eb4f8d21972b833b2ef494db8fb3e819b258ceb569b9d5cfa3facbd2d786ecf0bc0fd0e98cc862f7 languageName: node linkType: hard @@ -20136,14 +19971,14 @@ __metadata: linkType: hard "jsonwebtoken@npm:^9.0.0": - version: 9.0.0 - resolution: "jsonwebtoken@npm:9.0.0" + version: 9.0.1 + resolution: "jsonwebtoken@npm:9.0.1" dependencies: jws: ^3.2.2 lodash: ^4.17.21 ms: ^2.1.1 semver: ^7.3.8 - checksum: 60c30d90d8a69b8e7148306e0c299ac120dbde9c032add48d26df928fe349e952cf4b09f12d7942257681a936e3374e4d49280ab20f8a4578688c7f08d87f9bc + checksum: 3508912a0fb5ad06a09a79f655681f6fc389376fb8e7fdcaf367fbdd02e9fb5e11a7a4ff715cbe44d8be0e7a99319b03a7d34ef5daede61cf1f8d3519bbb08d6 languageName: node linkType: hard @@ -20158,12 +19993,14 @@ __metadata: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" + version: 3.3.4 + resolution: "jsx-ast-utils@npm:3.3.4" dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: fb69ce100931e50d42c8f72a01495b7d090064824ce481cf7746449609c148a29aae6984624cf9066ac14bdf7978f8774461e120d5b50fa90b3bfe0a0e21ff77 + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: 6761ccd830deab6a4cb8ca182c7b3627f4478138b6f4e2b680afc2b5e954635feb460ff75218b67f8694a9f8a0da6f0833a013e34961a16fbe4457fb34a0a7b2 languageName: node linkType: hard @@ -20484,17 +20321,7 @@ __metadata: dependencies: prelude-ls: ^1.2.1 type-check: ~0.4.0 - checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 + checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e languageName: node linkType: hard @@ -20580,8 +20407,8 @@ __metadata: linkType: hard "lint-staged@npm:^13.2.2": - version: 13.2.2 - resolution: "lint-staged@npm:13.2.2" + version: 13.2.3 + resolution: "lint-staged@npm:13.2.3" dependencies: chalk: 5.2.0 cli-truncate: ^3.1.0 @@ -20598,7 +20425,7 @@ __metadata: yaml: ^2.2.2 bin: lint-staged: bin/lint-staged.js - checksum: a3f43ad7a88b57cbdd5e15a6b484955092ecf8bfbb38b009ec47d52ef8d16961785ce85fd6fb49a2d57ec7feb54d6724f1b0b2732f425d0e39b17206a88f7f96 + checksum: 4907d2e60c8bd4b7ba354464a914e9db61d3e121232a3111bfe3e9f24d1ae8c9bd89c8ff19f819227a97fce0d797a33a62bcc29adebb37fb937e012a0a8b358b languageName: node linkType: hard @@ -20635,11 +20462,11 @@ __metadata: linkType: hard "lit-html@npm:^2.3.0, lit-html@npm:^2.7.0": - version: 2.7.4 - resolution: "lit-html@npm:2.7.4" + version: 2.7.5 + resolution: "lit-html@npm:2.7.5" dependencies: "@types/trusted-types": ^2.0.2 - checksum: c1773c2b7e6e4585778d821463c2bc87589d4a4a2fb4032c8df0b28e6e3aa1f6238c8f6913d773564ef06eabc37b3b08f0eff4128f7df55bc159a444bfc47ce5 + checksum: 8fbcd71a5dbcc60e23d2f3a3c6f0a0265b5faa4f2d43615d86242177d338a4b2e62ac31004d351631753e662d501638b23eb8a64c16e378376a9d193d1c08ef6 languageName: node linkType: hard @@ -20780,6 +20607,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" @@ -21047,10 +20883,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.1.1": - version: 9.1.2 - resolution: "lru-cache@npm:9.1.2" - checksum: 886811ab451332c899c230274e7e51507c15e5b3b18f0b39fb55f558978d58799a0b1a50e04d60a448d8c970ff4e6ee718bb119083ca88abb78930284f1e0900 +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.0 + resolution: "lru-cache@npm:10.0.0" + checksum: 347b7b391091e9f91182b6f683ce04329932a542376a2d7d300637213b99f06c222a3bb0f0db59adf246dac6cef1bb509cab352451a96621d07c41b10a20495f languageName: node linkType: hard @@ -21070,7 +20906,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.0, magic-string@npm:^0.30.0": +"magic-string@npm:0.30.0": version: 0.30.0 resolution: "magic-string@npm:0.30.0" dependencies: @@ -21106,6 +20942,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.0": + version: 0.30.1 + resolution: "magic-string@npm:0.30.1" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.15 + checksum: 30471bbe363196a57795f903025166ba9930f9a98ea4e23d2cfbb379756414aff01309eaa06d3ae23d3cc0497babf5c5d7d98c7aeca726335cddf2d9cd873e1c + languageName: node + linkType: hard + "make-dir@npm:3.1.0, make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -21132,7 +20977,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": +"make-fetch-happen@npm:^10.0.6": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: @@ -21156,7 +21001,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.1.0": +"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.0.3, make-fetch-happen@npm:^11.1.1": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" dependencies: @@ -22220,14 +22065,14 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:2.7.5": - version: 2.7.5 - resolution: "mini-css-extract-plugin@npm:2.7.5" +"mini-css-extract-plugin@npm:2.7.6": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" dependencies: schema-utils: ^4.0.0 peerDependencies: webpack: ^5.0.0 - checksum: ff13746bc1987c5f9736b990fd8fb1e673502ce2083631b21e3bf97142b9427b9f98c434d78f64464c61a84a0fa9d01701b52b36b0fa0eac5ac7d1310b843178 + checksum: 4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 languageName: node linkType: hard @@ -22291,11 +22136,11 @@ __metadata: linkType: hard "minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": - version: 9.0.1 - resolution: "minimatch@npm:9.0.1" + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: ^2.0.1 - checksum: aa043eb8822210b39888a5d0d28df0017b365af5add9bd522f180d2a6962de1cbbf1bdeacdb1b17f410dc3336bc8d76fb1d3e814cdc65d00c2f68e01f0010096 + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard @@ -22416,10 +22261,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2": - version: 6.0.2 - resolution: "minipass@npm:6.0.2" - checksum: 3878076578f44ef4078ceed10af2cfebbec1b6217bf9f7a3d8b940da8153769db29bf88498b2de0d1e0c12dfb7b634c5729b7ca03457f46435e801578add210a +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.1 + resolution: "minipass@npm:7.0.1" + checksum: 47e4f3567c4d4c20b4a6e04ec99397d606f25038fa5490b60b05b1e104285e7001d7e19c0af2b74fe500823d808eb03fe70652a7ded2753afd748c75d3fd2624 languageName: node linkType: hard @@ -22571,10 +22416,10 @@ __metadata: languageName: node linkType: hard -"muggle-string@npm:^0.2.2": - version: 0.2.2 - resolution: "muggle-string@npm:0.2.2" - checksum: 808aadd73c2356ace166813d94a12b28d42f759c26c79058d1ed4960246ea62b287123598a395537bd36b022229057d29ea585b1fec88aa254f890c196f4f5e2 +"muggle-string@npm:^0.3.1": + version: 0.3.1 + resolution: "muggle-string@npm:0.3.1" + checksum: 489b0575fa76e30914393915a36638590052409fca2206a6bef0fb0ad7b181c1cbf99761191bfd16fe402c6f5a3164897965422fa32ef20ada1b44024ba46ab6 languageName: node linkType: hard @@ -22706,19 +22551,19 @@ __metadata: linkType: hard "next@npm:^13.4.8": - version: 13.4.8 - resolution: "next@npm:13.4.8" - dependencies: - "@next/env": 13.4.8 - "@next/swc-darwin-arm64": 13.4.8 - "@next/swc-darwin-x64": 13.4.8 - "@next/swc-linux-arm64-gnu": 13.4.8 - "@next/swc-linux-arm64-musl": 13.4.8 - "@next/swc-linux-x64-gnu": 13.4.8 - "@next/swc-linux-x64-musl": 13.4.8 - "@next/swc-win32-arm64-msvc": 13.4.8 - "@next/swc-win32-ia32-msvc": 13.4.8 - "@next/swc-win32-x64-msvc": 13.4.8 + version: 13.4.9 + resolution: "next@npm:13.4.9" + dependencies: + "@next/env": 13.4.9 + "@next/swc-darwin-arm64": 13.4.9 + "@next/swc-darwin-x64": 13.4.9 + "@next/swc-linux-arm64-gnu": 13.4.9 + "@next/swc-linux-arm64-musl": 13.4.9 + "@next/swc-linux-x64-gnu": 13.4.9 + "@next/swc-linux-x64-musl": 13.4.9 + "@next/swc-win32-arm64-msvc": 13.4.9 + "@next/swc-win32-ia32-msvc": 13.4.9 + "@next/swc-win32-x64-msvc": 13.4.9 "@swc/helpers": 0.5.1 busboy: 1.6.0 caniuse-lite: ^1.0.30001406 @@ -22760,7 +22605,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 2a91f5118a81f6922331ea5dcb3b95cceb4e97dca7b5d6c9d72f2e843afbd95c0c20daa9f8a5c1df257d9ef9e7b064ae41d650fed48e09c8a284f9a210cac0cb + checksum: 75e05ab1b3ce854031ef788df45ab378dd8c38a7eedf9562b5526b6cdd7552bf0c5e8d81ef8a479f49d665590deff5a42e2c6b61e9e0a676fb72dc48a88292fb languageName: node linkType: hard @@ -22853,8 +22698,8 @@ __metadata: linkType: hard "node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -22862,7 +22707,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 3ec847ca43f678d07b80abfd85bdf06523c2554ee9a494c992c5fc61f5d9cde9f9f16aa33ff09a62f19eee9d54813b8850d7f054cdfee8b2daf789c57f8eeaea + checksum: 10372e4b5ee07acadc15e6b2bc6fd8940582eea7b9b2a331f4e3665fdcd968498c1656f79f2fa572080ebb37ea80e1474a6478b3b36057ef901b63f4be8fd899 languageName: node linkType: hard @@ -22896,13 +22741,14 @@ __metadata: linkType: hard "node-gyp@npm:^9.0.0, node-gyp@npm:^9.3.1, node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" dependencies: env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 + make-fetch-happen: ^11.0.3 nopt: ^6.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 @@ -22911,7 +22757,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 3285c110768eb65aadd9aa1d056f917e594ea22611d21fd535ab3677ea433d0a281e7f09bc73d53e64b02214f4379dbca476dc33faffe455b0ac1d5ba92802f4 + checksum: e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad languageName: node linkType: hard @@ -22964,10 +22810,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.12, node-releases@npm:^2.0.8": - version: 2.0.12 - resolution: "node-releases@npm:2.0.12" - checksum: 01f9a7c135be5c8bc989b6c10b9840a7aee09040d46ba4e64b5ea0174fb8891f1277514aef75033ce42031f6cb72a04d4a7e99c70ca25488ad63ad6fc5a5b6a0 +"node-releases@npm:^2.0.12": + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 languageName: node linkType: hard @@ -22983,13 +22829,13 @@ __metadata: linkType: hard "nopt@npm:^7.0.0": - version: 7.1.0 - resolution: "nopt@npm:7.1.0" + version: 7.2.0 + resolution: "nopt@npm:7.2.0" dependencies: abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: f6dc14b7ae956d561798ed98e40ab5354ace6b6b23a74c7fd5f60036b5d734a6a99e4873c7a76dccda1b0326f0e3cdd432536fe8d1eab4d96fe525b53830f674 + checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff languageName: node linkType: hard @@ -23307,9 +23153,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.5 - resolution: "nwsapi@npm:2.2.5" - checksum: bc1cffd006ac9648085b89550be6083cdde7d7d4bd93139d4f1d7183c8cc6ca8878d8274c9f00456fd02701928d14df4f4ab2ff5422f172b9e9c1fa845dd49ce + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard @@ -23552,7 +23398,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -23714,31 +23560,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -23791,19 +23623,19 @@ __metadata: linkType: hard "overlayscrollbars-react@npm:^0.5.0": - version: 0.5.0 - resolution: "overlayscrollbars-react@npm:0.5.0" + version: 0.5.1 + resolution: "overlayscrollbars-react@npm:0.5.1" peerDependencies: overlayscrollbars: ^2.0.0 react: ">=16.8.0" - checksum: 2d70c41e8f171c0e701825b17a3184e403f8173a7124112834feec8f90d3633337acfffdeaf41583b2f948191b855d8a468ebd0990d8437a792ca4899801abd0 + checksum: 3a8717d19ab54f6762a92c07ffa1f44d1b7ae72a8b60eaf88877efa9289409171eff840b0374d94935ee586f7c92e4f15a134ddb72d4b7a143defb69039fa6ca languageName: node linkType: hard "overlayscrollbars@npm:^2.2.0": - version: 2.2.0 - resolution: "overlayscrollbars@npm:2.2.0" - checksum: 25a2b5cc6c5cd5276bb82b7338ceed307815c3d0ee8ea8053f4b19898189b955d00da4f03e1615b8e330fdf61275e02791818937901fff17cc5462d7bb9b8edc + version: 2.2.1 + resolution: "overlayscrollbars@npm:2.2.1" + checksum: 718dd563ee17a8c92a54f0b67989806edadd5b999e36d2ab322e7813b369d1cf0198d7267ca42ca9e879023f0658825e2b050d2845e751d876285d1d3549cb5e languageName: node linkType: hard @@ -23871,6 +23703,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -23907,6 +23748,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + "p-map-series@npm:2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" @@ -24017,35 +23867,7 @@ __metadata: languageName: node linkType: hard -"pacote@npm:15.1.3": - version: 15.1.3 - resolution: "pacote@npm:15.1.3" - dependencies: - "@npmcli/git": ^4.0.0 - "@npmcli/installed-package-contents": ^2.0.1 - "@npmcli/promise-spawn": ^6.0.1 - "@npmcli/run-script": ^6.0.0 - cacache: ^17.0.0 - fs-minipass: ^3.0.0 - minipass: ^5.0.0 - npm-package-arg: ^10.0.0 - npm-packlist: ^7.0.0 - npm-pick-manifest: ^8.0.0 - npm-registry-fetch: ^14.0.0 - proc-log: ^3.0.0 - promise-retry: ^2.0.1 - read-package-json: ^6.0.0 - read-package-json-fast: ^3.0.0 - sigstore: ^1.3.0 - ssri: ^10.0.0 - tar: ^6.1.11 - bin: - pacote: lib/bin.js - checksum: c23663846a3db76dfa78944fea137e230363ad30f336f76aea53c8eee315aafd26fb7fe126dd69243173a6cbe86a9b525397727fa65e10e08b9ea71e1981702b - languageName: node - linkType: hard - -"pacote@npm:^15.0.0, pacote@npm:^15.0.8": +"pacote@npm:15.2.0, pacote@npm:^15.0.0, pacote@npm:^15.0.8": version: 15.2.0 resolution: "pacote@npm:15.2.0" dependencies: @@ -24261,15 +24083,6 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^6.0.1": - version: 6.0.1 - resolution: "parse5-htmlparser2-tree-adapter@npm:6.0.1" - dependencies: - parse5: ^6.0.1 - checksum: dfa5960e2aaf125707e19a4b1bc333de49232eba5a6ffffb95d313a7d6087c3b7a274b58bee8d3bd41bdf150638815d1d601a42bbf2a0345208c3c35b1279556 - languageName: node - linkType: hard - "parse5-htmlparser2-tree-adapter@npm:^7.0.0": version: 7.0.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" @@ -24350,6 +24163,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -24408,13 +24228,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.6.1, path-scurry@npm:^1.7.0": - version: 1.9.2 - resolution: "path-scurry@npm:1.9.2" +"path-scurry@npm:^1.10.1, path-scurry@npm:^1.6.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" dependencies: - lru-cache: ^9.1.1 - minipass: ^5.0.0 || ^6.0.2 - checksum: 99a3461a1ebc5269165170a744367a900802dc1ecc8a17a8c9700cca9b00b0938c8a06d57ec9bc9a485e430fd37c647f4029ccaf31b5f9dacedaf685cef3e69a + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard @@ -24579,9 +24399,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.4, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: 58b6ff0f137a3d70ff34ac4802fd19819cdc19b53e9c95adecae6c7cfc77719a11f561ad85d46e79e520ef57c31145a564c8bc3bee8cfee75d441fab2928a51d + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -24638,6 +24458,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + "pkg-up@npm:^2.0.0": version: 2.0.0 resolution: "pkg-up@npm:2.0.0" @@ -24733,40 +24562,32 @@ __metadata: languageName: node linkType: hard -"postcss-loader@npm:7.2.4": - version: 7.2.4 - resolution: "postcss-loader@npm:7.2.4" +"postcss-loader@npm:7.3.2": + version: 7.3.2 + resolution: "postcss-loader@npm:7.3.2" dependencies: cosmiconfig: ^8.1.3 - cosmiconfig-typescript-loader: ^4.3.0 + jiti: ^1.18.2 klona: ^2.0.6 semver: ^7.3.8 peerDependencies: postcss: ^7.0.0 || ^8.0.1 - ts-node: ">=10" - typescript: ">=4" webpack: ^5.0.0 - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - checksum: c9d87fc5cd561508d18e746cdf29405438dba8c8ac83022245c3c05bec0841fe9cd4039ba84348fa02cb3b37c515415a0db40e5f2bfd0dd9afe7edb3ff3a21a7 + checksum: 635975cd6620a251eaf19ae27e13fcb777391d68083c71551467f3fd1aec80648d444a46c9c91018e0eb0e6eb3d02cdba44ffe15eff41cf48756092766ebec4b languageName: node linkType: hard "postcss-loader@npm:^7.0.2": - version: 7.3.2 - resolution: "postcss-loader@npm:7.3.2" + version: 7.3.3 + resolution: "postcss-loader@npm:7.3.3" dependencies: - cosmiconfig: ^8.1.3 + cosmiconfig: ^8.2.0 jiti: ^1.18.2 - klona: ^2.0.6 semver: ^7.3.8 peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - checksum: 635975cd6620a251eaf19ae27e13fcb777391d68083c71551467f3fd1aec80648d444a46c9c91018e0eb0e6eb3d02cdba44ffe15eff41cf48756092766ebec4b + checksum: d039654273f858be1f75dfdf8b550869d88905b73a7684b3e48a2937a6087619e84fd1a3551cdef78685a965a2573e985b29a532c3878d834071ecd2da0eb304 languageName: node linkType: hard @@ -24800,7 +24621,7 @@ __metadata: languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.3": +"postcss-modules-local-by-default@npm:^4.0.3": version: 4.0.3 resolution: "postcss-modules-local-by-default@npm:4.0.3" dependencies: @@ -24900,14 +24721,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.23": - version: 8.4.23 - resolution: "postcss@npm:8.4.23" +"postcss@npm:8.4.24": + version: 8.4.24 + resolution: "postcss@npm:8.4.24" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 35c2e26496be286a63706a0b8240fc4d2075a746466df530989208f60ea33cbc80c89420221cffb7d4fdd605afc385993f5f60302447e3047a7c0a8756b6471d + checksum: 37704ee03a2cbdebf2c99a76d399d6e0250742b5f6c699a12d475c84cedfcbeb26e180d9c780e0219dd2ad70cac963ceaf1d6763a1aec3e63d0c19fceb0eab23 languageName: node linkType: hard @@ -24921,14 +24742,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.3.7, postcss@npm:^8.4.14, postcss@npm:^8.4.19, postcss@npm:^8.4.21, postcss@npm:^8.4.23": - version: 8.4.24 - resolution: "postcss@npm:8.4.24" +"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.4.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24": + version: 8.4.25 + resolution: "postcss@npm:8.4.25" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 37704ee03a2cbdebf2c99a76d399d6e0250742b5f6c699a12d475c84cedfcbeb26e180d9c780e0219dd2ad70cac963ceaf1d6763a1aec3e63d0c19fceb0eab23 + checksum: aa2143cb5ed6eef6cb1d38236f158c5fe11bfd1f338c930cf4901f09586874e05fa006e3fd329ca51c61202c7e90d0705379e6310251c9311116e65cb6a08c18 languageName: node linkType: hard @@ -24944,9 +24765,9 @@ __metadata: linkType: hard "preact@npm:^10.5.13": - version: 10.15.1 - resolution: "preact@npm:10.15.1" - checksum: 4eb7da6dbc560d517277043c0be83e19829ade595fac6eb009b7fcf0153ae471eae02deab9a2d73b1a4248df1cc6514c9d9a505fbf302bfbc254756a395a095c + version: 10.16.0 + resolution: "preact@npm:10.16.0" + checksum: 719d0a51dfda0149390b3f65aefd54bdc231f1f821b42ae17bc3fd5e9652d0a30d8a44c455921353e375bfed5d91d74054936827e7d780aee519e07fa84db4ac languageName: node linkType: hard @@ -24957,13 +24778,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -25042,14 +24856,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0": - version: 29.5.0 - resolution: "pretty-format@npm:29.5.0" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": + version: 29.6.1 + resolution: "pretty-format@npm:29.6.1" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.0 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: bcc0190d050196b64e501e5c2b44beb802d79a2b70b6fe6b24ae2d5e0f31237dfcb1f0ab2ada4678829b6ee38507ba292396301aff0a8122e575ffd45d5d037c + checksum: decb4ca86b34e53a08e525d2b50be19ef4bffa4bb4122787740b012c11490311879de53dee8b669a82376b6fec06040ec546831f2c3ce0df963c00d743cce664 languageName: node linkType: hard @@ -25465,10 +25279,10 @@ __metadata: languageName: node linkType: hard -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: 281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 languageName: node linkType: hard @@ -25538,7 +25352,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.10.0, qs@npm:^6.4.0": +"qs@npm:^6.10.0, qs@npm:^6.11.0, qs@npm:^6.4.0": version: 6.11.2 resolution: "qs@npm:6.11.2" dependencies: @@ -25566,13 +25380,6 @@ __metadata: languageName: node linkType: hard -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed - languageName: node - linkType: hard - "querystring@npm:^0.2.0": version: 0.2.1 resolution: "querystring@npm:0.2.1" @@ -25981,15 +25788,15 @@ __metadata: linkType: hard "react-textarea-autosize@npm:^8.3.0": - version: 8.4.1 - resolution: "react-textarea-autosize@npm:8.4.1" + version: 8.5.2 + resolution: "react-textarea-autosize@npm:8.5.2" dependencies: "@babel/runtime": ^7.20.13 use-composed-ref: ^1.3.0 use-latest: ^1.2.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 76d77ccfaf6515daba0b6e711bb1930dfc3f01494a71a0fc0f76b686af6847f071837eb3b2ae066cfa51dfcb223f8fc9d951971e1e87ef86bbf018bbfb25ce0d + checksum: c93f9ae320af990f2adadb6c55c5040d6e61cb649027b00c88c8679237c9dbffd3909c7114f2d68f420db9f7a641ec304561f28bb0b53dc2e0a1e9efea10685b languageName: node linkType: hard @@ -26165,14 +25972,15 @@ __metadata: linkType: hard "readable-stream@npm:^4.0.0, readable-stream@npm:^4.1.0": - version: 4.4.0 - resolution: "readable-stream@npm:4.4.0" + version: 4.4.2 + resolution: "readable-stream@npm:4.4.2" dependencies: abort-controller: ^3.0.0 buffer: ^6.0.3 events: ^3.3.0 process: ^0.11.10 - checksum: 83f5a11285e5ebefb7b22a43ea77a2275075639325b4932a328a1fb0ee2475b83b9cc94326724d71c6aa3b60fa87e2b16623530b1cac34f3825dcea0996fdbe4 + string_decoder: ^1.3.0 + checksum: cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c languageName: node linkType: hard @@ -27111,9 +26919,9 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^3.20.1, rollup@npm:^3.21.0": - version: 3.24.0 - resolution: "rollup@npm:3.24.0" +"rollup@npm:^3.20.1, rollup@npm:^3.21.0, rollup@npm:^3.25.2": + version: 3.26.2 + resolution: "rollup@npm:3.26.2" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -27121,7 +26929,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: b9c2d72937af906ddffcc4a9e66936912a391c7b20cd89ed5afd50dfb0350f8efac4f58f9087cf09a982183b7adf2b6a2bd461080f775891a1d145e77672f5d6 + checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 languageName: node linkType: hard @@ -27275,15 +27083,15 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:13.2.2": - version: 13.2.2 - resolution: "sass-loader@npm:13.2.2" +"sass-loader@npm:13.3.1": + version: 13.3.1 + resolution: "sass-loader@npm:13.3.1" dependencies: klona: ^2.0.6 neo-async: ^2.6.2 peerDependencies: fibers: ">= 3.1.0" - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: "*" webpack: ^5.0.0 @@ -27296,7 +27104,7 @@ __metadata: optional: true sass-embedded: optional: true - checksum: 3d474ca1e7c607a905c2220afb25cf117ff025264de7b4b54f0e2a4763f99c9eefbe8f7712a883bc025ecf06661bd242d74ac18d5e04f223f1fc2c94987e8c94 + checksum: 68ffb7ad626a27e44b0f68cd549549e75460fa6a5100e0808b89a8b775264b98fdb8e2e1a39b7f97308a94cf87b3d7a1b42acc461cf504e83f36030a07ee95db languageName: node linkType: hard @@ -27325,16 +27133,16 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.62.1": - version: 1.62.1 - resolution: "sass@npm:1.62.1" +"sass@npm:1.63.2": + version: 1.63.2 + resolution: "sass@npm:1.63.2" dependencies: chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 19c3a945bd71d9c9ab3b01a97b0d218c92815b7f3e45a9bba37265b4c43e4ef12ab029c7257e02c1db2b85f7da91974af81e31d58940c9a54b50787ee4a50a3c + checksum: 22dfb77f2c2707a67adef382a448899a5d0577bfa8f4cd5560ab1f3b0d492bdfee78b753f130bccef3647dfa7be3585c936fbfbfd110ee4f96d3916e937f655e languageName: node linkType: hard @@ -27374,26 +27182,26 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": - version: 3.2.0 - resolution: "schema-utils@npm:3.2.0" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 287e83374ca4c763cd17a532055cab479629584fd872db2c6d75075f46f5758721241ae83a856977643a06b4c449d8db329de6b2d169bfcc1797b4cf45447970 + checksum: fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 languageName: node linkType: hard "schema-utils@npm:^4.0.0": - version: 4.1.0 - resolution: "schema-utils@npm:4.1.0" + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" dependencies: "@types/json-schema": ^7.0.9 ajv: ^8.9.0 ajv-formats: ^2.1.1 ajv-keywords: ^5.1.0 - checksum: bb1b387936c5d98f8a7fbd21a158259af9c981fb07460b39052f8bddd068297ec06c41629177a3be54eac017ce077c9d71b01773502b99caad6be167c2a9b82c + checksum: 8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 languageName: node linkType: hard @@ -27435,11 +27243,11 @@ __metadata: linkType: hard "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.0, semver@npm:^5.7.1": - version: 5.7.1 - resolution: "semver@npm:5.7.1" + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 + semver: bin/semver + checksum: e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 languageName: node linkType: hard @@ -27465,29 +27273,18 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.4.0": - version: 7.4.0 - resolution: "semver@npm:7.4.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 6bcdd77e3f8fd5a0463358ede593f5b88fb9cf6d1c5f185fb5e1d0e516993cd1ec99b628e300935650d2af39decc3bb67b3101627340de6c39043ea96dfcbd61 - languageName: node - linkType: hard - -"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.5.1 - resolution: "semver@npm:7.5.1" +"semver@npm:7.5.3": + version: 7.5.3 + resolution: "semver@npm:7.5.3" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: ae6aca3cfba9b4d0e0a8fa789c7fa4a8412e39f24ecc19500db291a0a31bb43c151021e4fdbb68a85dcd06c1297f6daeeb09647cea4253eba0ccc0106eb7cd67 + checksum: 4cf3bab7e8cf8c2ae521fc4bcc50a4d6912a836360796b23b9f1c26f45d27a73f870e47664df4770bde0dd60dc4d4781a05fd49fe91d72376ea5519b9e791459 languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -27496,6 +27293,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + "semver@npm:~7.0.0": version: 7.0.0 resolution: "semver@npm:7.0.0" @@ -27708,16 +27516,15 @@ __metadata: linkType: hard "sigstore@npm:^1.0.0, sigstore@npm:^1.3.0, sigstore@npm:^1.4.0": - version: 1.6.0 - resolution: "sigstore@npm:1.6.0" + version: 1.7.0 + resolution: "sigstore@npm:1.7.0" dependencies: "@sigstore/protobuf-specs": ^0.1.0 - "@sigstore/tuf": ^1.0.0 + "@sigstore/tuf": ^1.0.1 make-fetch-happen: ^11.0.1 - tuf-js: ^1.1.3 bin: sigstore: bin/sigstore.js - checksum: d0dd051774765ded57d19652a115ddebd2bd3253b1db11ce6cb83f32ab86c3f200bfe83138c577ea179236e148d93d3480430561081eef7cb0d8deab1b466f75 + checksum: 2cf2b7fe40323ef7a664627ac9e862cad985685bbc14528355d7a0813916dd4c96d94ffd3149de08d2ea33a86dfd4b073908d995cfcedba510cdb5073a49382c languageName: node linkType: hard @@ -28701,8 +28508,8 @@ __metadata: linkType: hard "svelte-check@npm:^3.4.3": - version: 3.4.3 - resolution: "svelte-check@npm:3.4.3" + version: 3.4.5 + resolution: "svelte-check@npm:3.4.5" dependencies: "@jridgewell/trace-mapping": ^0.3.17 chokidar: ^3.4.1 @@ -28716,7 +28523,7 @@ __metadata: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 bin: svelte-check: bin/svelte-check - checksum: 10e56387f9f7f0c2b2ebd091a785e05429bfa197bc45e51925aab991e4ad129f2bba48038ee0ecc1b3b28f8b9c32eb61709ce7426b1e02f909dfeeba12647fb9 + checksum: 7f6ebacc0a3251a9e6cbcdc5aa47e2198d08117bcf87ddebdfd7e761e942c90b4a1d057d453e1e79296045963dc0e6607aa9ec913f4c34b70d5509b30f000645 languageName: node linkType: hard @@ -28736,7 +28543,7 @@ __metadata: languageName: node linkType: hard -"svelte-hmr@npm:^0.15.1": +"svelte-hmr@npm:^0.15.2": version: 0.15.2 resolution: "svelte-hmr@npm:0.15.2" peerDependencies: @@ -28805,14 +28612,14 @@ __metadata: linkType: hard "svelte@npm:^4.0.0": - version: 4.0.0 - resolution: "svelte@npm:4.0.0" + version: 4.0.5 + resolution: "svelte@npm:4.0.5" dependencies: "@ampproject/remapping": ^2.2.1 "@jridgewell/sourcemap-codec": ^1.4.15 "@jridgewell/trace-mapping": ^0.3.18 - acorn: ^8.8.2 - aria-query: ^5.2.1 + acorn: ^8.9.0 + aria-query: ^5.3.0 axobject-query: ^3.2.1 code-red: ^1.0.3 css-tree: ^2.3.1 @@ -28821,7 +28628,7 @@ __metadata: locate-character: ^3.0.0 magic-string: ^0.30.0 periscopic: ^3.1.0 - checksum: fb0bf76904d3f5c4a72a91d6db7fbbabf1bfbeaeb99e4cd29a90bfc5d9cb784f994fc4249c7635f27cb1890e7313de533e0d7931ff409297cdd2a2374d0f9d53 + checksum: 905a468aa5396763989579138cd8d6aa1d330edc0741650dd928568a1c3e7df24478373a33005498c7896a57abe8c2b52e8cacf82739301561c494d577d50fc5 languageName: node linkType: hard @@ -29050,23 +28857,23 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.17.1": - version: 5.17.1 - resolution: "terser@npm:5.17.1" +"terser@npm:5.17.7": + version: 5.17.7 + resolution: "terser@npm:5.17.7" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 00d4712b954307709b4e14cf17e0ab2fc2d527b480a50f212414aad12a739fb374d7b3391da2b73f82e21c9d469111ad2cd1d054861759624bd67c6dea4bd76a + checksum: 864154a1750daf516012e5add4f0749bfc71e8f4f918973ec3d504db6a148be976adf46ae490e795173eeff59ec579d7d464bb6354c1bb71f8e14ff398409aed languageName: node linkType: hard "terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.17.7 - resolution: "terser@npm:5.17.7" + version: 5.18.2 + resolution: "terser@npm:5.18.2" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -29074,7 +28881,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 864154a1750daf516012e5add4f0749bfc71e8f4f918973ec3d504db6a148be976adf46ae490e795173eeff59ec579d7d464bb6354c1bb71f8e14ff398409aed + checksum: 7a7203eceef379c6381f5b43aaed509d12381c7453baee28b320fcd968523347f1bf4ba297cd3155ec860e9604279a1c9bc7060b35d9c34fae94c80cfa2738c2 languageName: node linkType: hard @@ -29401,8 +29208,8 @@ __metadata: linkType: hard "ts-jest@npm:^29.0.0": - version: 29.1.0 - resolution: "ts-jest@npm:29.1.0" + version: 29.1.1 + resolution: "ts-jest@npm:29.1.1" dependencies: bs-logger: 0.x fast-json-stable-stringify: 2.x @@ -29410,7 +29217,7 @@ __metadata: json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - semver: 7.x + semver: ^7.5.3 yargs-parser: ^21.0.1 peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" @@ -29429,13 +29236,13 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 504d77b13157a4d2f1eebbd0e0f21f2db65fc28039f107fd73453655c029adccba5b22bdd4de0efa58707c1bbd34a67a1a5cceb794e91c3c2c7be4f904c79f9f + checksum: 6c45e0aeeff9cc54a64f931c43e1b99f4a1f0ddf44786cc128e7e55603ab7473c8c8f62fd83bd7e51bfe83e3c0c683132152efaeb844516bf7c923f4e92d157d languageName: node linkType: hard "ts-loader@npm:^9.2.8": - version: 9.4.3 - resolution: "ts-loader@npm:9.4.3" + version: 9.4.4 + resolution: "ts-loader@npm:9.4.4" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 @@ -29444,7 +29251,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 01f49cb016a14f9502ce34d2c8ec370694f16b627a85867e074654f495458047a90574190c592aa2a28a30fd7d01ef83cdd39a61075268058b3a2f3bceaab868 + checksum: 11dba0651d7177eba9af38c43c79a28898ffcdfe7e73079fe48716dd93ca6634d3140dbbbc3ac34907be564be2429f0299ebdc7b58ce09482fad54333ccf611c languageName: node linkType: hard @@ -29556,24 +29363,24 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e +"tslib@npm:2.5.3": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 languageName: node linkType: hard -"tslib@npm:^1.10.0, tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": + version: 2.6.0 + resolution: "tslib@npm:2.6.0" + checksum: 8d18020a8b9e70ecc529a744c883c095f177805efdbc9786bd50bd82a46c17547923133c5444fbcaf1f7f1c44e0e29c89f73ecf6d8fd1039668024a073a81dc6 languageName: node linkType: hard @@ -29595,14 +29402,14 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^1.1.3": - version: 1.1.6 - resolution: "tuf-js@npm:1.1.6" +"tuf-js@npm:^1.1.7": + version: 1.1.7 + resolution: "tuf-js@npm:1.1.7" dependencies: "@tufjs/models": 1.0.4 debug: ^4.3.4 - make-fetch-happen: ^11.1.0 - checksum: bb34127ba88d842a8c186e297bebeb75e2cd27cb4a39b51996294da34f9e6b72b3aa052ab2dbeb87f2ad061076bddca879ca9f8250cc94c382204fffce536c27 + make-fetch-happen: ^11.1.1 + checksum: 7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b languageName: node linkType: hard @@ -29615,15 +29422,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -29632,9 +29430,9 @@ __metadata: linkType: hard "type-fest@npm:^3.11.0": - version: 3.11.1 - resolution: "type-fest@npm:3.11.1" - checksum: 55c0ba11e8b494684bf63f76e762ac44a95a9243a873cfc03c97f909477938d4a80f0c6265bfae92074072305447428748726385bbf2be4484b8451d73c84881 + version: 3.13.0 + resolution: "type-fest@npm:3.13.0" + checksum: 8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c languageName: node linkType: hard @@ -29694,12 +29492,12 @@ __metadata: linkType: hard "typescript@npm:^5.0.3, typescript@npm:^5.0.4": - version: 5.1.3 - resolution: "typescript@npm:5.1.3" + version: 5.1.6 + resolution: "typescript@npm:5.1.6" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1faba8d5ffd4717864ddce767613c5ab77c1c8510c1ce21dc9b112a4c662357b9338dc0a6121615266d3a44ebec699f115ef2dabf18d9d7341ea1675692b9b24 + checksum: 45ac28e2df8365fd28dac42f5d62edfe69a7203d5ec646732cadc04065331f34f9078f81f150fde42ed9754eed6fa3b06a8f3523c40b821e557b727f1992e025 languageName: node linkType: hard @@ -29724,12 +29522,12 @@ __metadata: linkType: hard "typescript@patch:typescript@^5.0.3#~builtin<compat/typescript>, typescript@patch:typescript@^5.0.4#~builtin<compat/typescript>": - version: 5.1.3 - resolution: "typescript@patch:typescript@npm%3A5.1.3#~builtin<compat/typescript>::version=5.1.3&hash=77c9e2" + version: 5.1.6 + resolution: "typescript@patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=77c9e2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 6219383250b585b201c9ea10576164c9d5760c7a167bc761b118692c9fb8e88610f37730c0a1169d96ac19b29ed80418048763d0c1ff00ce48e051abbc213a9b + checksum: c134abcd9fc5c393db30498db18d8e89453efae14e11a39c1adb6238138d4c152472e497499b8a67b0c87ca6eafcb26b0eb02f962f240c233c2e0ad3785f8742 languageName: node linkType: hard @@ -30135,14 +29933,14 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.3.1 - resolution: "unplugin@npm:1.3.1" + version: 1.3.2 + resolution: "unplugin@npm:1.3.2" dependencies: - acorn: ^8.8.2 + acorn: ^8.9.0 chokidar: ^3.5.3 webpack-sources: ^3.2.3 webpack-virtual-modules: ^0.5.0 - checksum: a4be4450979b4a3c36650fbd32e6f49abb7e08a9e6c15a706d3f7a218443a0f77f0ba45e1a8469e87679789205dbd0b679525b1e587b3f9ae3a22e4ceac82006 + checksum: 8c3152b8329db2f5d671ec37c1222ffebf0f4f68abadc7d9c7f80336e543d477e97f176a7e0862b830bc3c9334ed340bf13da29fd2d332c3113fdd85584c6c4d languageName: node linkType: hard @@ -30170,7 +29968,7 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.10, update-browserslist-db@npm:^1.0.11": +"update-browserslist-db@npm:^1.0.11": version: 1.0.11 resolution: "update-browserslist-db@npm:1.0.11" dependencies: @@ -30218,12 +30016,12 @@ __metadata: linkType: hard "url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" + version: 0.11.1 + resolution: "url@npm:0.11.1" dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: bbe05f9f570ec5c06421c50ca63f287e61279092eed0891db69a9619323703ccd3987e6eed234c468794cf25680c599680d5c1f58d26090f1956c8e9ed8346a2 + punycode: ^1.4.1 + qs: ^6.11.0 + checksum: 9e18c57b854d6a8e0288c4ddf21f9e30273a0ef2efb28a7e3e3d6eac392637dbdecce0d8f616586d58ff43154997150ecc2c9873e6c845d1e742e24c940b6e12 languageName: node linkType: hard @@ -30518,7 +30316,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:4.3.9, vite@npm:^4.0.0, vite@npm:^4.0.4": +"vite@npm:4.3.9": version: 4.3.9 resolution: "vite@npm:4.3.9" dependencies: @@ -30555,6 +30353,46 @@ __metadata: languageName: node linkType: hard +"vite@npm:^4.0.0, vite@npm:^4.0.4": + version: 4.4.2 + resolution: "vite@npm:4.4.2" + dependencies: + esbuild: ^0.18.10 + fsevents: ~2.3.2 + postcss: ^8.4.24 + rollup: ^3.25.2 + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 8c505f45cc28a67a31a6b944d1a319c63f6cda98e1e38c6da46e604f7981cdb3fb08c022d4887a190dd88f9d0d6155e992f2206f0cacb301103f5eec53182c3b + languageName: node + linkType: hard + "vitefu@npm:^0.2.4": version: 0.2.4 resolution: "vitefu@npm:0.2.4" @@ -30632,15 +30470,15 @@ __metadata: linkType: hard "vue-component-type-helpers@npm:latest": - version: 1.6.5 - resolution: "vue-component-type-helpers@npm:1.6.5" - checksum: 205d520c05e53d1cc6f53fe920c64b4c6883249cbfe15026fcda250980bf4ddfc004292e0c9ecaa7fcf983bd143482ffbc4191e0b84f6d3f996a0a07ca3396c4 + version: 1.8.4 + resolution: "vue-component-type-helpers@npm:1.8.4" + checksum: b18ffe06e4834e6df2ff08ec1ddff19eb730b6b68a40727f937eb80fcb20bf523c1f8f0884ac17e5d72f4612f34da9dbd4aba9659a34f89e70c73e7e5f818de9 languageName: node linkType: hard "vue-docgen-api@npm:^4.40.0, vue-docgen-api@npm:^4.44.23, vue-docgen-api@npm:^4.46.0": - version: 4.72.5 - resolution: "vue-docgen-api@npm:4.72.5" + version: 4.73.0 + resolution: "vue-docgen-api@npm:4.73.0" dependencies: "@babel/parser": ^7.21.4 "@babel/types": ^7.21.4 @@ -30653,7 +30491,7 @@ __metadata: recast: ^0.23.1 ts-map: ^1.0.3 vue-inbrowser-compiler-independent-utils: ^4.69.0 - checksum: 67fde90f1f8eac12a63a1fc71bbc45ab58e608f462be959313ca9379e08367bf74a70fcb0ce0eb0bfa95084a1eeedb58e9a8e6c0823d8ad3afae523b82c99ed8 + checksum: 0d2f164aec9e1fa811bab0338ca1539a67d65ee44318052eb0f44c4c9df633c8228b06cf57895897019cfa803356563f4b151be59d8f964f49f4ff1b61be6dad languageName: node linkType: hard @@ -30785,17 +30623,17 @@ __metadata: linkType: hard "vue-tsc@npm:latest": - version: 1.6.5 - resolution: "vue-tsc@npm:1.6.5" + version: 1.8.4 + resolution: "vue-tsc@npm:1.8.4" dependencies: - "@volar/vue-language-core": 1.6.5 - "@volar/vue-typescript": 1.6.5 + "@vue/language-core": 1.8.4 + "@vue/typescript": 1.8.4 semver: ^7.3.8 peerDependencies: typescript: "*" bin: vue-tsc: bin/vue-tsc.js - checksum: aee0e66dc1962a2ac628a23ee35da9eac4862bfb68ab151a58bc527647d4231ca92044380e4ce77356fe5735624dba874ebbf7eb320c2b23ebafbeef6562741c + checksum: ecaa78564b40fa694fac74f8bd656a9e31139a2e7eef18416b2ca7359a300f004be195ea675d10f4b72e153709101cf976558460815faf17562bc745cbbaaa3f languageName: node linkType: hard @@ -30986,9 +30824,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:6.0.2": - version: 6.0.2 - resolution: "webpack-dev-middleware@npm:6.0.2" +"webpack-dev-middleware@npm:6.1.1, webpack-dev-middleware@npm:^6.1.1": + version: 6.1.1 + resolution: "webpack-dev-middleware@npm:6.1.1" dependencies: colorette: ^2.0.10 memfs: ^3.4.12 @@ -31000,7 +30838,7 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: fabc2eccc96884b5ef41ca58e9a23454745f891f76feee67de4ade371008fc5a0ed1e7b86af59f5eabed4e6d89e8d394245830e4f8de7639a891411542b090a1 + checksum: f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 languageName: node linkType: hard @@ -31019,27 +30857,9 @@ __metadata: languageName: node linkType: hard -"webpack-dev-middleware@npm:^6.1.1": - version: 6.1.1 - resolution: "webpack-dev-middleware@npm:6.1.1" - dependencies: - colorette: ^2.0.10 - memfs: ^3.4.12 - mime-types: ^2.1.31 - range-parser: ^1.2.1 - schema-utils: ^4.0.0 - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - checksum: f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 - languageName: node - linkType: hard - -"webpack-dev-server@npm:4.13.2": - version: 4.13.2 - resolution: "webpack-dev-server@npm:4.13.2" +"webpack-dev-server@npm:4.15.0": + version: 4.15.0 + resolution: "webpack-dev-server@npm:4.15.0" dependencies: "@types/bonjour": ^3.5.9 "@types/connect-history-api-fallback": ^1.3.5 @@ -31080,28 +30900,28 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: e787f3122ccf376f4a3f5e981c37aad32686f2fa9f8fdda65938689dc6a43372b88ae98f751ab87df282a12e34effe376828c9ed57103b6831e037228b9d433a + checksum: 7e4555b687071f2f4c6d7ff0faa1c7fc155bc35983c703b6fd250f3fb3e387a18394e0bd43ce0ede9bb433efe0947bc05ad55996b3ac5669a8adb64d6c1abba0 languageName: node linkType: hard "webpack-hot-middleware@npm:^2.25.1": - version: 2.25.3 - resolution: "webpack-hot-middleware@npm:2.25.3" + version: 2.25.4 + resolution: "webpack-hot-middleware@npm:2.25.4" dependencies: ansi-html-community: 0.0.8 html-entities: ^2.1.0 strip-ansi: ^6.0.0 - checksum: dca26d6d32eb684469830b4074dcd11c298036fe3ec8276ea5a69bc14bc8a53aab2494e02871ada146ec0881965d7018d559683cbcc73bcafcfa4da1184e92b5 + checksum: c0702d308a39bdbc9277d66df50272e8c358c2238cecb0881df57136f54cb7a3d8291320b13075325b58f7a3cbf7a1ef10829554a5bc2ddfa3effbf416dc8e8c languageName: node linkType: hard -"webpack-merge@npm:5.8.0": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" +"webpack-merge@npm:5.9.0": + version: 5.9.0 + resolution: "webpack-merge@npm:5.9.0" dependencies: clone-deep: ^4.0.1 wildcard: ^2.0.0 - checksum: 400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb + checksum: 74935a4b03612ee65c0867ca1050788ccfec3efa6d17bb5acceacbd4fbbd0356a073997723eff7380deccd88f13a55c52cb004e80e34f3a67808ac455da6ad64 languageName: node linkType: hard @@ -31145,8 +30965,8 @@ __metadata: linkType: hard "webpack@npm:5, webpack@npm:^5, webpack@npm:^5.65.0": - version: 5.86.0 - resolution: "webpack@npm:5.86.0" + version: 5.88.1 + resolution: "webpack@npm:5.88.1" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -31157,7 +30977,7 @@ __metadata: acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.14.1 + enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 @@ -31167,7 +30987,7 @@ __metadata: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.2 + schema-utils: ^3.2.0 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 @@ -31177,13 +30997,13 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 138cd2f9d6ddd028ce7deec8958e9bc6092471c6514a3429a2383dcf9a33b4060b05de1337c461f1d3038b066f62198e5e820497f8f618441ec63108c83b8711 + checksum: 03389ad02342becf527c2f603b46bedb27f5352703e6a625daa9a1f80ed84417e135fbcd8a2a79d6aaf37aafb8b8b571cd920bad4b068ca76c629252b3bfc9d7 languageName: node linkType: hard -"webpack@npm:5.80.0": - version: 5.80.0 - resolution: "webpack@npm:5.80.0" +"webpack@npm:5.86.0": + version: 5.86.0 + resolution: "webpack@npm:5.86.0" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -31191,10 +31011,10 @@ __metadata: "@webassemblyjs/wasm-edit": ^1.11.5 "@webassemblyjs/wasm-parser": ^1.11.5 acorn: ^8.7.1 - acorn-import-assertions: ^1.7.6 + acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.13.0 + enhanced-resolve: ^5.14.1 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 @@ -31214,7 +31034,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: a5d5c0b738efd0dd84da05f5546ac5d41954cd294bce85ba4bb9f8e7d301b7bfd2dfb75f527a73e5a85fe46d0280c82f028172464f00a5a34ca53f70431f8a2d + checksum: 138cd2f9d6ddd028ce7deec8958e9bc6092471c6514a3429a2383dcf9a33b4060b05de1337c461f1d3038b066f62198e5e820497f8f618441ec63108c83b8711 languageName: node linkType: hard @@ -31312,8 +31132,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" + version: 1.1.10 + resolution: "which-typed-array@npm:1.1.10" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 @@ -31321,7 +31141,7 @@ __metadata: gopd: ^1.0.1 has-tostringtag: ^1.0.0 is-typed-array: ^1.1.10 - checksum: 7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 + checksum: e85918fa7ee060b37e264996f560bbdfe0b1c7029772d0986f3a72ff62b6bd42ba624c4b80218b498aa42472b54f4514e46dbe869691730e0c6c025bcb25fe2b languageName: node linkType: hard @@ -31404,13 +31224,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -31841,6 +31654,13 @@ __metadata: languageName: node linkType: hard +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + "zod@npm:3.21.4": version: 3.21.4 resolution: "zod@npm:3.21.4" @@ -31849,11 +31669,11 @@ __metadata: linkType: hard "zone.js@npm:^0.13.0": - version: 0.13.0 - resolution: "zone.js@npm:0.13.0" + version: 0.13.1 + resolution: "zone.js@npm:0.13.1" dependencies: tslib: ^2.3.0 - checksum: 6b19d56360354d267de2e762ba6d3f8af1b4f9db55def46b976d9fd865b413a1ef6b033e3fc9a677905af02d691d289228f4a468d5d950b5abe901fec708ebcd + checksum: 3f04ded7d2f5496befbce030aa57ba58d1c604795445e555af1a0079fc9938d0a0a9c128fdbff13563423ea2e2956549383629e39c59a7f1d8d3362deacc5e5b languageName: node linkType: hard From 7e0843c9dab7966e8e4cb754b5971b64d578201c Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 10 Jul 2023 23:02:39 +0100 Subject: [PATCH 070/135] Add missing props --- .../components/src/Button/Button.stories.tsx | 103 +++++++++++++----- code/ui/components/src/Button/Button.tsx | 29 +++-- code/ui/components/src/Button/styles.ts | 26 ++--- 3 files changed, 100 insertions(+), 58 deletions(-) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index 324997a11a73..09264b6b8c48 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -2,6 +2,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import React from 'react'; import { Button } from './Button'; +import { Icons } from '../icon/icon'; const meta: Meta<typeof Button> = { title: 'Button', @@ -30,44 +31,92 @@ export const Base = { export const Types: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary">Primary Button</Button> - <Button type="secondary">Secondary Button</Button> + <Button type="primary">Primary</Button> + <Button type="secondary">Secondary</Button> + <Button type="tertiary">Tertiary</Button> </div> ), }; -export const Sizes: Story = { +export const Active: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small">Small Button</Button> - <Button size="medium">Medium Button</Button> + <Button type="primary" active> + Primary + </Button> + <Button type="secondary" active> + Secondary + </Button> + <Button type="tertiary" active> + Tertiary + </Button> </div> ), }; -export const Variants: Story = { +export const WithIcon: Story = { render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '3rem' }}> - <div - style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start', gap: '1rem' }} - > - <Button variant="solid" type="primary"> - Button Primary Solid - </Button> - <Button variant="solid" type="secondary"> - Button Secondary Solid - </Button> - </div> - <div - style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start', gap: '1rem' }} - > - <Button variant="outline" type="primary"> - Button Primary Outline - </Button> - <Button variant="outline" type="secondary"> - Button Secondary Outline - </Button> - </div> + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary" icon={<Icons icon="bell" />}> + Primary + </Button> + <Button type="secondary" icon={<Icons icon="bell" />}> + Secondary + </Button> + <Button type="tertiary" icon={<Icons icon="bell" />}> + Tertiary + </Button> + </div> + ), +}; + +export const IconOnly: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary" iconOnly icon={<Icons icon="bell" />}> + Primary + </Button> + <Button type="secondary" iconOnly icon={<Icons icon="bell" />}> + Secondary + </Button> + <Button type="tertiary" iconOnly icon={<Icons icon="bell" />}> + Tertiary + </Button> + </div> + ), +}; + +export const IconOnlyActive: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary" iconOnly icon={<Icons icon="bell" />} active> + Primary + </Button> + <Button type="secondary" iconOnly icon={<Icons icon="bell" />} active> + Secondary + </Button> + <Button type="tertiary" iconOnly icon={<Icons icon="bell" />} active> + Tertiary + </Button> + </div> + ), +}; + +export const Sizes: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button size="small" icon={<Icons icon="bell" />}> + Small Button + </Button> + <Button size="small" icon={<Icons icon="bell" />} iconOnly> + Small Button + </Button> + <Button size="medium" icon={<Icons icon="bell" />}> + Medium Button + </Button> + <Button size="medium" icon={<Icons icon="bell" />} iconOnly> + Medium Button + </Button> </div> ), }; diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index c3c60d01a4e6..f92372074054 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -6,12 +6,12 @@ export interface ButtonProps { children?: ReactNode; href?: string; size?: 'small' | 'medium'; - variant?: 'solid' | 'outline'; - type?: 'primary' | 'secondary'; - leftIcon?: ReactNode; - rightIcon?: ReactNode; + type?: 'primary' | 'secondary' | 'tertiary'; + icon?: ReactNode; + iconOnly?: boolean; onClick?: () => void; disabled?: boolean; + active?: boolean; /** * @deprecated This property will be removed in SB 8.0 * Use `as='a'` property instead. @@ -75,8 +75,10 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( containsIcon, size = 'medium', type = 'primary', - variant = 'solid', + icon, + iconOnly = false, disabled = false, + active = false, href, children, ...props @@ -128,21 +130,16 @@ export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( if (href) return ( - <NewButtonLink - ref={ref} - size={size} - btnType={type} - variant={variant} - disabled={disabled} - href={href} - > - {children} + <NewButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + {icon} + {!iconOnly && children} </NewButtonLink> ); return ( - <ButtonWrapper ref={ref} size={size} btnType={type} variant={variant} disabled={disabled}> - {children} + <ButtonWrapper ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + {icon} + {!iconOnly && children} </ButtonWrapper> ); } diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts index ed19540f799c..86546a53c4a8 100644 --- a/code/ui/components/src/Button/styles.ts +++ b/code/ui/components/src/Button/styles.ts @@ -6,9 +6,9 @@ import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ btnType: ButtonProps['type']; size: ButtonProps['size']; - variant: ButtonProps['variant']; disabled: ButtonProps['disabled']; -}>(({ theme, btnType, size, variant, disabled }) => ({ + active: ButtonProps['active']; +}>(({ theme, btnType, size, disabled, active }) => ({ border: 0, cursor: disabled ? 'not-allowed !important' : 'pointer', display: 'inline-flex', @@ -31,29 +31,25 @@ export const ButtonWrapper = styled.button<{ fontWeight: theme.typography.weight.bold, lineHeight: '1', background: `${(() => { - if (btnType === 'primary' && variant === 'solid') return theme.color.secondary; - if (btnType === 'secondary' && variant === 'solid') return theme.button.background; + if (btnType === 'primary') return theme.color.secondary; + if (btnType === 'secondary') return theme.button.background; + if (btnType === 'tertiary' && active) return theme.background.hoverable; return 'transparent'; })()}`, color: `${(() => { - if (btnType === 'primary' && variant === 'solid') return theme.color.lightest; + if (btnType === 'primary') return theme.color.lightest; if (btnType === 'secondary') return theme.input.color; - if (variant === 'outline') return theme.input.color; + if (btnType === 'tertiary') return theme.color.mediumdark; return theme.input.color; })()}`, - boxShadow: - variant === 'solid' && btnType === 'primary' - ? 'none' - : `${theme.button.border} 0 0 0 1px inset`, + boxShadow: btnType === 'primary' ? 'none' : `${theme.button.border} 0 0 0 1px inset`, borderRadius: theme.input.borderRadius, '&:hover': { background: `${(() => { let bgColor = theme.color.secondary; - if (btnType === 'primary' && variant === 'solid') bgColor = theme.color.secondary; - if (btnType === 'secondary' && variant === 'solid') bgColor = theme.button.background; - if (btnType === 'primary' && variant === 'outline') bgColor = theme.button.background; - if (btnType === 'secondary' && variant === 'outline') bgColor = theme.button.background; + if (btnType === 'primary') bgColor = theme.color.secondary; + if (btnType === 'secondary') bgColor = theme.button.background; return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); })()}`, @@ -62,7 +58,7 @@ export const ButtonWrapper = styled.button<{ '&:active': { background: `${(() => { let bgColor = theme.color.secondary; - if (btnType === 'primary' && variant === 'solid') bgColor = theme.color.secondary; + if (btnType === 'primary') bgColor = theme.color.secondary; if (btnType === 'secondary') bgColor = theme.button.background; return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); From 92924652f6e2c4d074135a64529ffa2d935f348b Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 10 Jul 2023 23:07:26 +0100 Subject: [PATCH 071/135] Update Button.stories.tsx --- .../components/src/Button/Button.stories.tsx | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index 09264b6b8c48..b4450000c6c8 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -70,52 +70,70 @@ export const WithIcon: Story = { ), }; -export const IconOnly: Story = { +export const Sizes: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" iconOnly icon={<Icons icon="bell" />}> - Primary + <Button size="small" icon={<Icons icon="bell" />}> + Small Button </Button> - <Button type="secondary" iconOnly icon={<Icons icon="bell" />}> - Secondary + <Button size="small" icon={<Icons icon="bell" />} iconOnly> + Small Button </Button> - <Button type="tertiary" iconOnly icon={<Icons icon="bell" />}> - Tertiary + <Button size="medium" icon={<Icons icon="bell" />}> + Medium Button + </Button> + <Button size="medium" icon={<Icons icon="bell" />} iconOnly> + Medium Button </Button> </div> ), }; -export const IconOnlyActive: Story = { +export const IconOnly: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" iconOnly icon={<Icons icon="bell" />} active> + <Button size="small" type="primary" iconOnly icon={<Icons icon="bell" />}> + Primary + </Button> + <Button size="small" type="secondary" iconOnly icon={<Icons icon="bell" />}> + Secondary + </Button> + <Button size="small" type="tertiary" iconOnly icon={<Icons icon="bell" />}> + Tertiary + </Button> + <Button size="medium" type="primary" iconOnly icon={<Icons icon="bell" />}> Primary </Button> - <Button type="secondary" iconOnly icon={<Icons icon="bell" />} active> + <Button size="medium" type="secondary" iconOnly icon={<Icons icon="bell" />}> Secondary </Button> - <Button type="tertiary" iconOnly icon={<Icons icon="bell" />} active> + <Button size="medium" type="tertiary" iconOnly icon={<Icons icon="bell" />}> Tertiary </Button> </div> ), }; -export const Sizes: Story = { +export const IconOnlyActive: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small" icon={<Icons icon="bell" />}> - Small Button + <Button size="small" type="primary" iconOnly icon={<Icons icon="bell" />} active> + Primary </Button> - <Button size="small" icon={<Icons icon="bell" />} iconOnly> - Small Button + <Button size="small" type="secondary" iconOnly icon={<Icons icon="bell" />} active> + Secondary </Button> - <Button size="medium" icon={<Icons icon="bell" />}> - Medium Button + <Button size="small" type="tertiary" iconOnly icon={<Icons icon="bell" />} active> + Tertiary </Button> - <Button size="medium" icon={<Icons icon="bell" />} iconOnly> - Medium Button + <Button size="medium" type="primary" iconOnly icon={<Icons icon="bell" />} active> + Primary + </Button> + <Button size="medium" type="secondary" iconOnly icon={<Icons icon="bell" />} active> + Secondary + </Button> + <Button size="medium" type="tertiary" iconOnly icon={<Icons icon="bell" />} active> + Tertiary </Button> </div> ), @@ -128,11 +146,11 @@ export const Disabled: Story = { }, }; -export const Link: Story = { +export const WithHref: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button onClick={() => console.log('Hello')}>I am a button</Button> - <Button href="https://storybook.js.org/">I am a link</Button> + <Button onClick={() => console.log('Hello')}>I am a button using onClick</Button> + <Button href="https://storybook.js.org/">I am an anchor using Href</Button> </div> ), }; From e7755c632d0684c612e0029571724ecf74f50f87 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 09:00:06 +0100 Subject: [PATCH 072/135] Update Button.tsx --- code/ui/components/src/Button/Button.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index f92372074054..2931230f811a 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -1,4 +1,4 @@ -import type { FC, ReactNode } from 'react'; +import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; import { ButtonWrapper, ButtonWrapperDepreciated } from './styles'; @@ -61,7 +61,7 @@ export interface ButtonProps { const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); const NewButtonLink = ButtonWrapper.withComponent('a'); -export const Button: FC<ButtonProps> = forwardRef<any, ButtonProps>( +export const Button = forwardRef<any, ButtonProps>( ( { isLink = false, From 870d4d72dc09bcdafd29801b40061382f2cb9183 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 11:34:03 +0200 Subject: [PATCH 073/135] fix typing --- code/presets/create-react-app/src/helpers/mergePlugins.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/presets/create-react-app/src/helpers/mergePlugins.ts b/code/presets/create-react-app/src/helpers/mergePlugins.ts index d315a29f24cb..4c3ff84ead18 100644 --- a/code/presets/create-react-app/src/helpers/mergePlugins.ts +++ b/code/presets/create-react-app/src/helpers/mergePlugins.ts @@ -1,7 +1,7 @@ -import type { WebpackPluginInstance } from 'webpack'; +import type { Configuration } from 'webpack'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; -export const mergePlugins = (...args: WebpackPluginInstance[]): WebpackPluginInstance[] => +export const mergePlugins = (...args: Configuration['plugins']): Configuration['plugins'] => args.reduce((plugins, plugin) => { if ( plugins.some( @@ -23,4 +23,4 @@ export const mergePlugins = (...args: WebpackPluginInstance[]): WebpackPluginIns }); } return [...plugins, updatedPlugin]; - }, [] as WebpackPluginInstance[]); + }, [] as Configuration['plugins']); From ad444c750b2e1949ddcadd72fd25f13047e06180 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 11:49:56 +0200 Subject: [PATCH 074/135] Update code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx Co-authored-by: Tom Coleman <tom@chromatic.com> --- .../src/modules/preview-web/PreviewWithSelection.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx index 042c01a4c4d1..7b20e20c8ba1 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx @@ -221,9 +221,8 @@ export class PreviewWithSelection<TFramework extends Renderer> extends Preview<T async onSetCurrentStory(selection: { storyId: StoryId; viewMode?: ViewMode }) { /** - * set state immediately. - * If the store is still in the init phase, we'll read it from the URL. - * But we might be receiving a SET_CURRENT_STORY event and we should load that story when we init. + * At the end of the initialization promise we will read the current story from the selection store, + * so make sure we've updated it with the new selection or we'll lose track of it at the end of init. */ this.selectionStore.setSelection({ viewMode: 'story', ...selection }); From 7ede443ee9386429e141b203dc4ce19f32a8b422 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 12:18:34 +0200 Subject: [PATCH 075/135] fixes --- code/addons/a11y/tsconfig.json | 1 + code/addons/interactions/tsconfig.json | 1 + code/addons/links/tsconfig.json | 1 + code/frameworks/nextjs/src/css/webpack.ts | 7 ++++++- code/frameworks/nextjs/src/images/webpack.ts | 3 ++- .../stories_nextjs-default-ts/Navigation.stories.tsx | 2 ++ code/ui/blocks/tsconfig.json | 1 + code/ui/components/tsconfig.json | 1 + code/ui/manager/tsconfig.json | 1 + 9 files changed, 16 insertions(+), 2 deletions(-) diff --git a/code/addons/a11y/tsconfig.json b/code/addons/a11y/tsconfig.json index 0535ece33606..2713b9288c15 100644 --- a/code/addons/a11y/tsconfig.json +++ b/code/addons/a11y/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["jest", "@testing-library/jest-dom"], + "skipLibCheck": true, "strict": true }, "include": ["src/**/*"] diff --git a/code/addons/interactions/tsconfig.json b/code/addons/interactions/tsconfig.json index aff8c3b01d62..4bc2c0bffe1f 100644 --- a/code/addons/interactions/tsconfig.json +++ b/code/addons/interactions/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] diff --git a/code/addons/links/tsconfig.json b/code/addons/links/tsconfig.json index 6643cdc7da8e..a774dc60331e 100644 --- a/code/addons/links/tsconfig.json +++ b/code/addons/links/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "strict": true, + "skipLibCheck": true, "types": ["testing-library__jest-dom"] }, "include": ["src/**/*"] diff --git a/code/frameworks/nextjs/src/css/webpack.ts b/code/frameworks/nextjs/src/css/webpack.ts index f673aeaf36f8..8f5ed1bfcae3 100644 --- a/code/frameworks/nextjs/src/css/webpack.ts +++ b/code/frameworks/nextjs/src/css/webpack.ts @@ -11,7 +11,12 @@ import { scopedResolve } from '../utils'; export const configureCss = (baseConfig: WebpackConfig, nextConfig: NextConfig): void => { const rules = baseConfig.module?.rules; rules?.forEach((rule, i) => { - if (typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.css')) { + if ( + rule && + typeof rule !== 'string' && + rule.test instanceof RegExp && + rule.test.test('test.css') + ) { rules[i] = { test: /\.css$/, use: [ diff --git a/code/frameworks/nextjs/src/images/webpack.ts b/code/frameworks/nextjs/src/images/webpack.ts index 6f1f24208563..e6b91f0712d3 100644 --- a/code/frameworks/nextjs/src/images/webpack.ts +++ b/code/frameworks/nextjs/src/images/webpack.ts @@ -44,7 +44,8 @@ const configureStaticImageImport = (baseConfig: WebpackConfig, nextConfig: NextC const rules = baseConfig.module?.rules; const assetRule = rules?.find( - (rule) => typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.jpg') + (rule) => + rule && typeof rule !== 'string' && rule.test instanceof RegExp && rule.test.test('test.jpg') ) as RuleSetRule; if (!assetRule) { diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx index 8bb209bd9d45..39efad27c256 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx @@ -24,6 +24,7 @@ function Component() { name: 'Prefetch', }, { + // @ts-expect-error (old-api) cb: () => router.push('/push-html', { forceOptimisticNavigation: true }), name: 'Push HTML', }, @@ -32,6 +33,7 @@ function Component() { name: 'Refresh', }, { + // @ts-expect-error (old-api) cb: () => router.replace('/replaced-html', { forceOptimisticNavigation: true }), name: 'Replace', }, diff --git a/code/ui/blocks/tsconfig.json b/code/ui/blocks/tsconfig.json index af6084057dc0..fcad33be23fa 100644 --- a/code/ui/blocks/tsconfig.json +++ b/code/ui/blocks/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "module": "esnext", + "skipLibCheck": true, "rootDir": "./src", "types": ["jest"], "strict": false diff --git a/code/ui/components/tsconfig.json b/code/ui/components/tsconfig.json index 8ee47dbfcd6e..a2bea817d943 100644 --- a/code/ui/components/tsconfig.json +++ b/code/ui/components/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["react-syntax-highlighter", "jest", "testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] diff --git a/code/ui/manager/tsconfig.json b/code/ui/manager/tsconfig.json index aff8c3b01d62..4bc2c0bffe1f 100644 --- a/code/ui/manager/tsconfig.json +++ b/code/ui/manager/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "types": ["testing-library__jest-dom"], + "skipLibCheck": true, "strict": false }, "include": ["src/**/*"] From 8b3397329d248cb35c23e5ec2edffd9f3b4f901a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 12:36:46 +0200 Subject: [PATCH 076/135] remove the fake generic type argument --- code/lib/manager-api/src/modules/addons.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/lib/manager-api/src/modules/addons.ts b/code/lib/manager-api/src/modules/addons.ts index cfbed62e1b93..a9f22244da75 100644 --- a/code/lib/manager-api/src/modules/addons.ts +++ b/code/lib/manager-api/src/modules/addons.ts @@ -19,15 +19,11 @@ export interface SubAPI { /** * Returns a collection of elements of a specific type. * @protected This is used internally in storybook's manager. - * @template FAKE - The type of the elements in the collection. * @template T - The type of the elements in the collection. * @param {Addon_Types | Addon_TypesEnum.experimental_PAGE} type - The type of the elements to retrieve. * @returns {API_Collection<T>} - A collection of elements of the specified type. */ - getElements: < - FAKE = any, - T extends Addon_Types | Addon_TypesEnum.experimental_PAGE = Addon_Types - >( + getElements: <T extends Addon_Types | Addon_TypesEnum.experimental_PAGE = Addon_Types>( type: T ) => T extends Addon_TypesEnum.experimental_PAGE ? Addon_Collection<Addon_PageType> From dde330ced09531f39f2e72454ae5421532440452 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 12:54:48 +0200 Subject: [PATCH 077/135] improve readability of api's stories module init --- code/lib/manager-api/src/modules/stories.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index c0704af9b30f..be5094434ea4 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -602,6 +602,10 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ if (sourceType === 'local') { const state = store.getState(); + const isCanvasRoute = + state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs'; + const stateHasSelection = state.viewMode && state.storyId; + const stateSelectionDifferent = state.viewMode !== viewMode || state.storyId !== storyId; /** * When storybook starts, we want to navigate to the first story. * But there are a few exceptions: @@ -609,15 +613,12 @@ export const init: ModuleFn<SubAPI, SubState, true> = ({ * - If the user has navigated away already. * - If the user started storybook with a specific page-URL like "/settings/about" */ - if (state.path === '/' || state.viewMode === 'story' || state.viewMode === 'docs') { - if ( - state.viewMode && - state.storyId && - state.viewMode !== viewMode && - state.storyId !== storyId - ) { + if (isCanvasRoute) { + if (stateHasSelection && stateSelectionDifferent) { + // The manager state is correct, the preview state is lagging behind fullAPI.emit(SET_CURRENT_STORY, { storyId: state.storyId, viewMode: state.viewMode }); - } else if (state.storyId !== storyId || state.viewMode !== viewMode) { + } else if (stateSelectionDifferent) { + // The preview state is correct, the manager state is lagging behind navigate(`/${viewMode}/${storyId}`); } } From 8c636e0d0eb32d52caa734bfbfe6b71285de836f Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 12:27:03 +0100 Subject: [PATCH 078/135] Add new command line --- code/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/code/package.json b/code/package.json index 375acf60b75e..401ba280dd12 100644 --- a/code/package.json +++ b/code/package.json @@ -49,6 +49,7 @@ "storybook:blocks": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui", "storybook:blocks:build": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:build", "storybook:blocks:chromatic": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:chromatic --project-token=${CHROMATIC_TOKEN_STORYBOOK_BLOCKS:-MISSING_PROJECT_TOKEN}", + "storybook:experimental-ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/experimental-ui/.storybook", "storybook:ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/.storybook", "storybook:ui:build": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js build --config-dir ./ui/.storybook", "storybook:ui:chromatic": "yarn chromatic --build-script-name storybook:ui:build --storybook-config-dir ./ui/.storybook --storybook-base-dir ./code --project-token=${CHROMATIC_TOKEN_STORYBOOK_UI:-MISSING_PROJECT_TOKEN} --only-changed --exit-zero-on-changes --exit-once-uploaded", From 7c73321ac5932256cbceedc33e580e931de46847 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 12:28:31 +0100 Subject: [PATCH 079/135] Add package.json --- code/ui/experimental-ui/package.json | 76 ++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 code/ui/experimental-ui/package.json diff --git a/code/ui/experimental-ui/package.json b/code/ui/experimental-ui/package.json new file mode 100644 index 000000000000..58e23c1d4523 --- /dev/null +++ b/code/ui/experimental-ui/package.json @@ -0,0 +1,76 @@ +{ + "name": "@storybook/experimental-ui", + "version": "7.1.0-rc.0", + "description": "Core Storybook Components", + "keywords": [ + "storybook" + ], + "homepage": "https://github.com/storybookjs/storybook/tree/next/code/ui/components", + "bugs": { + "url": "https://github.com/storybookjs/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybookjs/storybook.git", + "directory": "code/ui/components" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "license": "MIT", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "node": "./dist/index.js", + "require": "./dist/index.js", + "import": "./dist/index.mjs" + }, + "./html": { + "types": "./dist/html.d.ts", + "require": "./dist/html.js", + "import": "./dist/html.mjs" + }, + "./package.json": "./package.json" + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts" + ], + "scripts": { + "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "prep": "../../../scripts/prepare/bundle.ts" + }, + "dependencies": { + "@storybook/theming": "7.1.0-rc.0" + }, + "devDependencies": { + "@storybook/preview-api": "7.1.0-rc.0", + "chromatic": "^6.19.9", + "polished": "^4.2.2", + "prettier": "^2.8.0", + "typescript": "~4.9.3", + "vite": "^4.4.2", + "vite-plugin-turbosnap": "^1.0.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "publishConfig": { + "access": "public" + }, + "bundler": { + "entries": [ + "./src/index.ts" + ], + "platform": "neutral" + }, + "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" +} From fad952023e88bd7fbc79ebce26a6c02b202e1da6 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 12:28:56 +0100 Subject: [PATCH 080/135] Add new button --- .../src/Button/Button.stories.tsx | 168 ++++++++++ code/ui/experimental-ui/src/Button/Button.tsx | 148 +++++++++ code/ui/experimental-ui/src/Button/styles.ts | 300 ++++++++++++++++++ 3 files changed, 616 insertions(+) create mode 100644 code/ui/experimental-ui/src/Button/Button.stories.tsx create mode 100644 code/ui/experimental-ui/src/Button/Button.tsx create mode 100644 code/ui/experimental-ui/src/Button/styles.ts diff --git a/code/ui/experimental-ui/src/Button/Button.stories.tsx b/code/ui/experimental-ui/src/Button/Button.stories.tsx new file mode 100644 index 000000000000..404fcc02b6f4 --- /dev/null +++ b/code/ui/experimental-ui/src/Button/Button.stories.tsx @@ -0,0 +1,168 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; + +import { Button } from './Button'; + +const meta: Meta<typeof Button> = { + title: 'Button', + component: Button, + tags: ['autodocs'], + argTypes: { + isLink: { table: { disable: true } }, + primary: { table: { disable: true } }, + secondary: { table: { disable: true } }, + tertiary: { table: { disable: true } }, + gray: { table: { disable: true } }, + inForm: { table: { disable: true } }, + small: { table: { disable: true } }, + outline: { table: { disable: true } }, + containsIcon: { table: { disable: true } }, + }, +}; + +export default meta; +type Story = StoryObj<typeof Button>; + +export const Base = { + args: { children: 'Button' }, +}; + +export const Types: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary">Primary</Button> + <Button type="secondary">Secondary</Button> + <Button type="tertiary">Tertiary</Button> + </div> + ), +}; + +export const Active: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary" active> + Primary + </Button> + <Button type="secondary" active> + Secondary + </Button> + <Button type="tertiary" active> + Tertiary + </Button> + </div> + ), +}; + +export const WithIcon: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button type="primary" icon={<div>Hello</div>}> + Primary + </Button> + <Button type="secondary" icon={<div>Hello</div>}> + Secondary + </Button> + <Button type="tertiary" icon={<div>Hello</div>}> + Tertiary + </Button> + </div> + ), +}; + +export const Sizes: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button size="small" icon={<div>Hello</div>}> + Small Button + </Button> + <Button size="small" icon={<div>Hello</div>} iconOnly> + Small Button + </Button> + <Button size="medium" icon={<div>Hello</div>}> + Medium Button + </Button> + <Button size="medium" icon={<div>Hello</div>} iconOnly> + Medium Button + </Button> + </div> + ), +}; + +export const IconOnly: Story = { + parameters: { + docs: { + description: { + story: 'This is a story that shows how to use the `iconOnly` prop.', + }, + source: { + type: 'dynamic', + }, + }, + }, + render: () => ( + <> + <Button size="small" type="primary" iconOnly icon={<div>Hello</div>}> + Primary + </Button> + <Button size="small" type="secondary" iconOnly icon={<div>Hello</div>}> + Secondary + </Button> + <Button size="small" type="tertiary" iconOnly icon={<div>Hello</div>}> + Tertiary + </Button> + <Button size="medium" type="primary" iconOnly icon={<div>Hello</div>}> + Primary + </Button> + <Button size="medium" type="secondary" iconOnly icon={<div>Hello</div>}> + Secondary + </Button> + <Button size="medium" type="tertiary" iconOnly icon={<div>Hello</div>}> + Tertiary + </Button> + </> + ), + decorators: [ + (Story) => <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>{Story()}</div>, + ], +}; + +export const IconOnlyActive: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button size="small" type="primary" iconOnly icon={<div>Hello</div>} active> + Primary + </Button> + <Button size="small" type="secondary" iconOnly icon={<div>Hello</div>} active> + Secondary + </Button> + <Button size="small" type="tertiary" iconOnly icon={<div>Hello</div>} active> + Tertiary + </Button> + <Button size="medium" type="primary" iconOnly icon={<div>Hello</div>} active> + Primary + </Button> + <Button size="medium" type="secondary" iconOnly icon={<div>Hello</div>} active> + Secondary + </Button> + <Button size="medium" type="tertiary" iconOnly icon={<div>Hello</div>} active> + Tertiary + </Button> + </div> + ), +}; + +export const Disabled: Story = { + args: { + disabled: true, + children: 'Disabled Button', + }, +}; + +export const WithHref: Story = { + render: () => ( + <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <Button onClick={() => console.log('Hello')}>I am a button using onClick</Button> + <Button href="https://storybook.js.org/">I am an anchor using Href</Button> + </div> + ), +}; diff --git a/code/ui/experimental-ui/src/Button/Button.tsx b/code/ui/experimental-ui/src/Button/Button.tsx new file mode 100644 index 000000000000..2931230f811a --- /dev/null +++ b/code/ui/experimental-ui/src/Button/Button.tsx @@ -0,0 +1,148 @@ +import type { ReactNode } from 'react'; +import React, { forwardRef } from 'react'; +import { ButtonWrapper, ButtonWrapperDepreciated } from './styles'; + +export interface ButtonProps { + children?: ReactNode; + href?: string; + size?: 'small' | 'medium'; + type?: 'primary' | 'secondary' | 'tertiary'; + icon?: ReactNode; + iconOnly?: boolean; + onClick?: () => void; + disabled?: boolean; + active?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `as='a'` property instead. + */ + isLink?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * This colour is not used anymore. + */ + primary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='blue'` property instead. + */ + secondary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='gray'` property instead. + */ + tertiary?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='solid' color='gray'` property instead. + */ + gray?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + */ + inForm?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `size='sm'` property instead. + */ + small?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `variant='outline'` property instead. + */ + outline?: boolean; + /** + * @deprecated This property will be removed in SB 8.0 + * Use `leftIcon={<YourIcon />}` property instead. + */ + containsIcon?: boolean; +} + +const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); +const NewButtonLink = ButtonWrapper.withComponent('a'); + +export const Button = forwardRef<any, ButtonProps>( + ( + { + isLink = false, + gray, + primary, + secondary, + tertiary, + inForm, + small, + outline, + containsIcon, + size = 'medium', + type = 'primary', + icon, + iconOnly = false, + disabled = false, + active = false, + href, + children, + ...props + }, + ref + ) => { + const isDepreciated = + primary || secondary || tertiary || gray || inForm || small || outline || containsIcon; + + if (!!isDepreciated && isLink) { + return ( + <ButtonLink + ref={ref} + isLink={isLink} + gray={gray} + primary={primary} + secondary={secondary} + tertiary={tertiary} + inForm={inForm} + small={small} + outline={outline} + containsIcon={containsIcon} + {...props} + > + {children} + </ButtonLink> + ); + } + + if (isDepreciated) { + return ( + <ButtonWrapperDepreciated + ref={ref} + isLink={isLink} + gray={gray} + primary={primary} + secondary={secondary} + tertiary={tertiary} + inForm={inForm} + small={small} + outline={outline} + containsIcon={containsIcon} + {...props} + > + {children} + </ButtonWrapperDepreciated> + ); + } + + if (href) + return ( + <NewButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + {icon} + {!iconOnly && children} + </NewButtonLink> + ); + + return ( + <ButtonWrapper ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + {icon} + {!iconOnly && children} + </ButtonWrapper> + ); + } +); + +Button.displayName = 'Button'; diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/experimental-ui/src/Button/styles.ts new file mode 100644 index 000000000000..86546a53c4a8 --- /dev/null +++ b/code/ui/experimental-ui/src/Button/styles.ts @@ -0,0 +1,300 @@ +import type { ReactNode } from 'react'; +import { styled } from '@storybook/theming'; +import { darken, lighten, rgba, transparentize } from 'polished'; +import type { ButtonProps } from './Button'; + +export const ButtonWrapper = styled.button<{ + btnType: ButtonProps['type']; + size: ButtonProps['size']; + disabled: ButtonProps['disabled']; + active: ButtonProps['active']; +}>(({ theme, btnType, size, disabled, active }) => ({ + border: 0, + cursor: disabled ? 'not-allowed !important' : 'pointer', + display: 'inline-flex', + alignItems: 'center', + overflow: 'hidden', + padding: '0 16px', + height: size === 'small' ? '28px' : '32px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: disabled ? 0.5 : 1, + margin: 0, + fontSize: `${theme.typography.size.s1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + background: `${(() => { + if (btnType === 'primary') return theme.color.secondary; + if (btnType === 'secondary') return theme.button.background; + if (btnType === 'tertiary' && active) return theme.background.hoverable; + return 'transparent'; + })()}`, + color: `${(() => { + if (btnType === 'primary') return theme.color.lightest; + if (btnType === 'secondary') return theme.input.color; + if (btnType === 'tertiary') return theme.color.mediumdark; + return theme.input.color; + })()}`, + boxShadow: btnType === 'primary' ? 'none' : `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + '&:hover': { + background: `${(() => { + let bgColor = theme.color.secondary; + if (btnType === 'primary') bgColor = theme.color.secondary; + if (btnType === 'secondary') bgColor = theme.button.background; + + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:active': { + background: `${(() => { + let bgColor = theme.color.secondary; + if (btnType === 'primary') bgColor = theme.color.secondary; + if (btnType === 'secondary') bgColor = theme.button.background; + + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, +})); + +export const ButtonWrapperDepreciated = styled.button<{ + isLink?: boolean; + primary?: boolean; + secondary?: boolean; + tertiary?: boolean; + gray?: boolean; + inForm?: boolean; + disabled?: boolean; + small?: boolean; + outline?: boolean; + containsIcon?: boolean; + children?: ReactNode; + href?: string; +}>( + ({ small, theme }) => ({ + border: 0, + borderRadius: '3em', + cursor: 'pointer', + display: 'inline-block', + overflow: 'hidden', + padding: small ? '8px 16px' : '13px 20px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: 1, + margin: 0, + background: 'transparent', + + fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + + svg: { + display: 'inline-block', + height: small ? 12 : 14, + width: small ? 12 : 14, + + verticalAlign: 'top', + marginRight: small ? 4 : 6, + marginTop: small ? 0 : -1, + marginBottom: small ? 0 : -1, + + /* Necessary for js mouse events to not glitch out when hovering on svgs */ + pointerEvents: 'none', + + path: { + fill: 'currentColor', + }, + }, + }), + ({ disabled }) => + disabled + ? { + cursor: 'not-allowed !important', + opacity: 0.5, + '&:hover': { + transform: 'none', + }, + } + : {}, + ({ containsIcon, small }) => + containsIcon + ? { + svg: { + display: 'block', + margin: 0, + }, + ...(small ? { padding: 10 } : { padding: 13 }), + } + : {}, + ({ theme, primary, secondary, gray }) => { + let color; + + if (gray) { + color = theme.color.mediumlight; + } else if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; + } + + return color + ? { + background: color, + color: gray ? theme.color.darkest : theme.color.lightest, + + '&:hover': { + background: darken(0.05, color), + }, + '&:active': { + boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', + }, + '&:focus': { + boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, tertiary, inForm, small }) => + tertiary + ? { + background: theme.button.background, + color: theme.input.color, + boxShadow: `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + ...(inForm && small ? { padding: '10px 16px' } : {}), + + '&:hover': { + background: + theme.base === 'light' + ? darken(0.02, theme.button.background) + : lighten(0.03, theme.button.background), + ...(inForm + ? {} + : { + boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', + }), + }, + '&:active': { + background: theme.button.background, + }, + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, + } + : {}, + ({ theme, outline }) => + outline + ? { + boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, + color: transparentize(0.3, theme.color.defaultText), + background: 'transparent', + + '&:hover, &:focus': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, + outline: 'none', + }, + + '&:active': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, + color: transparentize(0, theme.color.defaultText), + }, + } + : {}, + ({ theme, outline, primary }) => { + const color = theme.color.primary; + + return outline && primary + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, outline, primary, secondary }) => { + let color; + + if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; + } + + return outline && color + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + } +); From 435e82513b3423db97c61b66a0869bb3fd8a4ee5 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 12:29:44 +0100 Subject: [PATCH 081/135] Add tsconfig and readme --- code/ui/experimental-ui/README.md | 5 +++++ code/ui/experimental-ui/tsconfig.json | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 code/ui/experimental-ui/README.md create mode 100644 code/ui/experimental-ui/tsconfig.json diff --git a/code/ui/experimental-ui/README.md b/code/ui/experimental-ui/README.md new file mode 100644 index 000000000000..c039cc42b249 --- /dev/null +++ b/code/ui/experimental-ui/README.md @@ -0,0 +1,5 @@ +# Storybook Experimental UI + +Storybook Experimental UI is a React UI components collection used by the UI of Storybook and Addons. + +All components use [`emotion`](https://emotion.sh) for styling. diff --git a/code/ui/experimental-ui/tsconfig.json b/code/ui/experimental-ui/tsconfig.json new file mode 100644 index 000000000000..482faf5a2ae7 --- /dev/null +++ b/code/ui/experimental-ui/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["jest", "testing-library__jest-dom"], + "strict": false + }, + "include": ["src/**/*"] +} From 841798be0d3348f61ac28c28dbbb75a2381b50dd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 12:31:48 +0100 Subject: [PATCH 082/135] Add missing files --- .../components/src/Button/Button.stories.tsx | 17 +- code/ui/experimental-ui/.storybook/main.ts | 38 +++ .../ui/experimental-ui/.storybook/preview.tsx | 270 ++++++++++++++++++ code/ui/experimental-ui/jest.config.js | 7 + code/ui/experimental-ui/package.json | 1 + code/yarn.lock | 97 ++++++- 6 files changed, 427 insertions(+), 3 deletions(-) create mode 100644 code/ui/experimental-ui/.storybook/main.ts create mode 100644 code/ui/experimental-ui/.storybook/preview.tsx create mode 100644 code/ui/experimental-ui/jest.config.js diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index b4450000c6c8..a057af8df882 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -90,8 +90,18 @@ export const Sizes: Story = { }; export const IconOnly: Story = { + parameters: { + docs: { + description: { + story: 'This is a story that shows how to use the `iconOnly` prop.', + }, + source: { + type: 'dynamic', + }, + }, + }, render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> + <> <Button size="small" type="primary" iconOnly icon={<Icons icon="bell" />}> Primary </Button> @@ -110,8 +120,11 @@ export const IconOnly: Story = { <Button size="medium" type="tertiary" iconOnly icon={<Icons icon="bell" />}> Tertiary </Button> - </div> + </> ), + decorators: [ + (Story) => <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>{Story()}</div>, + ], }; export const IconOnlyActive: Story = { diff --git a/code/ui/experimental-ui/.storybook/main.ts b/code/ui/experimental-ui/.storybook/main.ts new file mode 100644 index 000000000000..3a7d776f4d35 --- /dev/null +++ b/code/ui/experimental-ui/.storybook/main.ts @@ -0,0 +1,38 @@ +import path from 'path'; +import pluginTurbosnap from 'vite-plugin-turbosnap'; +import { mergeConfig } from 'vite'; +import type { StorybookConfig } from '../../../frameworks/react-vite'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.@(ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-storysource', + '@storybook/addon-designs', + ], + framework: { + name: '@storybook/react-vite', + options: {}, + }, + core: { + disableTelemetry: true, + }, + viteFinal: (viteConfig, { configType }) => + mergeConfig(viteConfig, { + plugins: [ + configType === 'PRODUCTION' + ? pluginTurbosnap({ rootDir: path.resolve(__dirname, '../..') }) + : [], + ], + optimizeDeps: { force: true }, + build: { + // disable sourcemaps in CI to not run out of memory + sourcemap: process.env.CI !== 'true', + }, + }), + logLevel: 'debug', +}; + +export default config; diff --git a/code/ui/experimental-ui/.storybook/preview.tsx b/code/ui/experimental-ui/.storybook/preview.tsx new file mode 100644 index 000000000000..14e33b2a76a2 --- /dev/null +++ b/code/ui/experimental-ui/.storybook/preview.tsx @@ -0,0 +1,270 @@ +import { global } from '@storybook/global'; +import React, { Fragment, useEffect } from 'react'; +import isChromatic from 'chromatic/isChromatic'; +import { + Global, + ThemeProvider, + themes, + createReset, + convert, + styled, + useTheme, +} from '@storybook/theming'; +import { useArgs, type PreviewWeb } from '@storybook/preview-api'; +import type { ReactRenderer } from '@storybook/react'; +import type { Channel } from '@storybook/channels'; + +const { document } = global; + +const ThemeContainer = styled.div({ + display: 'flex', +}); + +const ThemeBlock = styled.div(({ theme }) => ({ + flex: 1, + padding: '1rem', + background: theme.background.content, + color: theme.color.defaultText, +})); + +const ThemeStack = styled.div(({ theme }) => ({ + flex: 1, + padding: '1rem', + background: theme.background.content, + color: theme.color.defaultText, +})); + +const PlayFnNotice = styled.div(({ theme }) => ({ + position: 'absolute', + top: 0, + left: 0, + width: '100%', + borderBottom: '1px solid #ccc', + padding: '3px 8px', + fontSize: '10px', + fontWeight: 'bold', + '> *': { + display: 'block', + }, + background: '#fffbd9', + color: theme.color.defaultText, +})); + +const ThemedSetRoot = () => { + const theme = useTheme(); + + useEffect(() => { + document.body.style.background = theme.background.content; + document.body.style.color = theme.color.defaultText; + }); + + return null; +}; + +// eslint-disable-next-line no-underscore-dangle +const preview = (window as any).__STORYBOOK_PREVIEW__ as PreviewWeb<ReactRenderer>; +const channel = (window as any).__STORYBOOK_ADDONS_CHANNEL__ as Channel; +export const loaders = [ + /** + * This loader adds a DocsContext to the story, which is required for the most Blocks to work. + * A story will specify which stories they need in the index with: + * parameters: { + * relativeCsfPaths: ['../stories/MyStory.stories.tsx'], // relative to the story + * } + * The DocsContext will then be added via the decorator below. + */ + async ({ parameters: { relativeCsfPaths, attached = true } }) => { + if (!relativeCsfPaths) return {}; + const csfFiles = await Promise.all( + (relativeCsfPaths as string[]).map(async (blocksRelativePath) => { + const projectRelativePath = `./ui/blocks/src/${blocksRelativePath.replace( + /^..\//, + '' + )}.tsx`; + const entry = preview.storyStore.storyIndex?.importPathToEntry(projectRelativePath); + + if (!entry) { + throw new Error( + `Couldn't find story file at ${projectRelativePath} (passed as ${blocksRelativePath})` + ); + } + + return preview.storyStore.loadCSFFileByStoryId(entry.id); + }) + ); + const docsContext = new DocsContextProps( + channel, + preview.storyStore, + preview.renderStoryToElement.bind(preview), + csfFiles + ); + if (attached && csfFiles[0]) { + docsContext.attachCSFFile(csfFiles[0]); + } + return { docsContext }; + }, +]; + +export const decorators = [ + /** + * This decorator renders the stories side-by-side, stacked or default based on the theme switcher in the toolbar + */ + (StoryFn, { globals, parameters, playFunction }) => { + const defaultTheme = isChromatic() && !playFunction ? 'stacked' : 'light'; + const theme = globals.theme || parameters.theme || defaultTheme; + + switch (theme) { + case 'side-by-side': { + return ( + <ThemeContainer> + <ThemeProvider theme={convert(themes.light)}> + <Global styles={createReset} /> + </ThemeProvider> + <ThemeProvider theme={convert(themes.light)}> + <ThemeBlock data-side="left"> + <StoryFn /> + </ThemeBlock> + </ThemeProvider> + <ThemeProvider theme={convert(themes.dark)}> + <ThemeBlock data-side="right"> + <StoryFn /> + </ThemeBlock> + </ThemeProvider> + </ThemeContainer> + ); + } + case 'stacked': { + return ( + <Fragment> + <ThemeProvider theme={convert(themes.light)}> + <Global styles={createReset} /> + </ThemeProvider> + <ThemeProvider theme={convert(themes.light)}> + <ThemeStack data-side="left"> + <StoryFn /> + </ThemeStack> + </ThemeProvider> + <ThemeProvider theme={convert(themes.dark)}> + <ThemeStack data-side="right"> + <StoryFn /> + </ThemeStack> + </ThemeProvider> + </Fragment> + ); + } + case 'default': + default: { + return ( + <ThemeContainer> + <ThemeProvider theme={convert(themes[theme])}> + <Global styles={createReset} /> + <ThemedSetRoot /> + {!parameters.theme && isChromatic() && playFunction && ( + <> + <PlayFnNotice> + <span> + Detected play function in Chromatic. Rendering only light theme to avoid + multiple play functions in the same story. + </span> + </PlayFnNotice> + <div style={{ marginBottom: 20 }} /> + </> + )} + <ThemeBlock> + <StoryFn /> + </ThemeBlock> + </ThemeProvider> + </ThemeContainer> + ); + } + } + }, + /** + * This decorator shows the current state of the arg named in the + * parameters.withRawArg property, by updating the arg in the onChange function + * this also means that the arg will sync with the control panel + * + * If parameters.withRawArg is not set, this decorator will do nothing + */ + (StoryFn, { parameters, args, hooks }) => { + const [, updateArgs] = useArgs(); + if (!parameters.withRawArg) { + return <StoryFn />; + } + + return ( + <> + <StoryFn + args={{ + ...args, + onChange: (newValue) => { + updateArgs({ [parameters.withRawArg]: newValue }); + args.onChange?.(newValue); + }, + }} + /> + <div style={{ marginTop: '1rem' }}> + Current <code>{parameters.withRawArg}</code>:{' '} + <pre>{JSON.stringify(args[parameters.withRawArg], null, 2) || 'undefined'}</pre> + </div> + </> + ); + }, +]; + +export const parameters = { + actions: { argTypesRegex: '^on.*' }, + options: { + storySort: (a, b) => + a.title === b.title ? 0 : a.id.localeCompare(b.id, undefined, { numeric: true }), + }, + docs: { + theme: themes.light, + toc: {}, + }, + controls: { + presetColors: [ + { color: '#ff4785', title: 'Coral' }, + { color: '#1EA7FD', title: 'Ocean' }, + { color: 'rgb(252, 82, 31)', title: 'Orange' }, + { color: 'RGBA(255, 174, 0, 0.5)', title: 'Gold' }, + { color: 'hsl(101, 52%, 49%)', title: 'Green' }, + { color: 'HSLA(179,65%,53%,0.5)', title: 'Seafoam' }, + { color: '#6F2CAC', title: 'Purple' }, + { color: '#2A0481', title: 'Ultraviolet' }, + { color: 'black' }, + { color: '#333', title: 'Darkest' }, + { color: '#444', title: 'Darker' }, + { color: '#666', title: 'Dark' }, + { color: '#999', title: 'Mediumdark' }, + { color: '#ddd', title: 'Medium' }, + { color: '#EEE', title: 'Mediumlight' }, + { color: '#F3F3F3', title: 'Light' }, + { color: '#F8F8F8', title: 'Lighter' }, + { color: '#FFFFFF', title: 'Lightest' }, + '#fe4a49', + '#FED766', + 'rgba(0, 159, 183, 1)', + 'HSLA(240,11%,91%,0.5)', + 'slategray', + ], + }, + layout: 'fullscreen', +}; + +export const globalTypes = { + theme: { + name: 'Theme', + description: 'Global theme for components', + toolbar: { + icon: 'circlehollow', + title: 'Theme', + items: [ + { value: 'light', icon: 'circlehollow', title: 'light' }, + { value: 'dark', icon: 'circle', title: 'dark' }, + { value: 'side-by-side', icon: 'sidebar', title: 'side by side' }, + { value: 'stacked', icon: 'bottombar', title: 'stacked' }, + ], + }, + }, +}; diff --git a/code/ui/experimental-ui/jest.config.js b/code/ui/experimental-ui/jest.config.js new file mode 100644 index 000000000000..4396fbc7010d --- /dev/null +++ b/code/ui/experimental-ui/jest.config.js @@ -0,0 +1,7 @@ +const path = require('path'); +const baseConfig = require('../../jest.config.browser'); + +module.exports = { + ...baseConfig, + displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), +}; diff --git a/code/ui/experimental-ui/package.json b/code/ui/experimental-ui/package.json index 58e23c1d4523..68390a13ff09 100644 --- a/code/ui/experimental-ui/package.json +++ b/code/ui/experimental-ui/package.json @@ -48,6 +48,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { + "@storybook/global": "^5.0.0", "@storybook/theming": "7.1.0-rc.0" }, "devDependencies": { diff --git a/code/yarn.lock b/code/yarn.lock index 723c172cf791..5a1c67a44d51 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6414,6 +6414,25 @@ __metadata: languageName: node linkType: hard +"@storybook/experimental-ui@workspace:ui/experimental-ui": + version: 0.0.0-use.local + resolution: "@storybook/experimental-ui@workspace:ui/experimental-ui" + dependencies: + "@storybook/global": ^5.0.0 + "@storybook/preview-api": 7.1.0-rc.0 + "@storybook/theming": 7.1.0-rc.0 + chromatic: ^6.19.9 + polished: ^4.2.2 + prettier: ^2.8.0 + typescript: ~4.9.3 + vite: ^4.4.2 + vite-plugin-turbosnap: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + languageName: unknown + linkType: soft + "@storybook/global@npm:^5.0.0": version: 5.0.0 resolution: "@storybook/global@npm:5.0.0" @@ -12237,6 +12256,17 @@ __metadata: languageName: node linkType: hard +"chromatic@npm:^6.19.9": + version: 6.19.9 + resolution: "chromatic@npm:6.19.9" + bin: + chroma: dist/bin.js + chromatic: dist/bin.js + chromatic-cli: dist/bin.js + checksum: a97814f0d67584e1fec5609a65c81ba4d536aa47a27df91b045de89571412d443b53931ee7c1cb15ef9687c45c20ac4bb2d0c3e16236bfe70a5d514062f373ec + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" @@ -24932,6 +24962,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.24": + version: 8.4.25 + resolution: "postcss@npm:8.4.25" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: aa2143cb5ed6eef6cb1d38236f158c5fe11bfd1f338c930cf4901f09586874e05fa006e3fd329ca51c61202c7e90d0705379e6310251c9311116e65cb6a08c18 + languageName: node + linkType: hard + "preact-render-to-string@npm:^5.1.19": version: 5.2.6 resolution: "preact-render-to-string@npm:5.2.6" @@ -27125,6 +27166,20 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^3.25.2": + version: 3.26.2 + resolution: "rollup@npm:3.26.2" + dependencies: + fsevents: ~2.3.2 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 + languageName: node + linkType: hard + "rst-selector-parser@npm:^2.2.3": version: 2.2.3 resolution: "rst-selector-parser@npm:2.2.3" @@ -30511,7 +30566,7 @@ __metadata: languageName: node linkType: hard -"vite-plugin-turbosnap@npm:^1.0.1": +"vite-plugin-turbosnap@npm:^1.0.1, vite-plugin-turbosnap@npm:^1.0.2": version: 1.0.2 resolution: "vite-plugin-turbosnap@npm:1.0.2" checksum: baa823428ce62ac935597386a85bb525ec4334f0945aa667aeb011cc1bf23fe52865ec7f3e1bd30a02bb175ef2223a76387862ff20acef1ff2affb6bf3d71553 @@ -30555,6 +30610,46 @@ __metadata: languageName: node linkType: hard +"vite@npm:^4.4.2": + version: 4.4.2 + resolution: "vite@npm:4.4.2" + dependencies: + esbuild: ^0.18.10 + fsevents: ~2.3.2 + postcss: ^8.4.24 + rollup: ^3.25.2 + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 8c505f45cc28a67a31a6b944d1a319c63f6cda98e1e38c6da46e604f7981cdb3fb08c022d4887a190dd88f9d0d6155e992f2206f0cacb301103f5eec53182c3b + languageName: node + linkType: hard + "vitefu@npm:^0.2.4": version: 0.2.4 resolution: "vitefu@npm:0.2.4" From 36f4a7a1da6dbaed71d7766b0a1137e6ff861b78 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 13:45:06 +0200 Subject: [PATCH 083/135] fix cyclical state setting --- code/lib/manager-api/src/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index 10cf0173275b..ce8f13ad3779 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -425,7 +425,7 @@ export function useSharedState<S>(stateId: string, defaultState?: S) { addonStateCache[stateId] ? addonStateCache[stateId] : defaultState ); - if (api.getAddonState(stateId) !== state) { + if (api.getAddonState(stateId) && api.getAddonState(stateId) !== state) { api.setAddonState<S>(stateId, state).then((s) => { addonStateCache[stateId] = s; }); From 9f79059ccec5e034e892475d7fc1ae1ad3d5d5dd Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 13:46:10 +0200 Subject: [PATCH 084/135] addon render function are now called like React elements, thus keys are no longer needed. This is not a breaking change, just logs a warning from react as far as i can see --- code/addons/a11y/src/manager.tsx | 4 ++-- code/addons/actions/src/manager.tsx | 2 +- code/addons/controls/src/manager.tsx | 4 ++-- code/addons/interactions/src/manager.tsx | 4 ++-- code/addons/jest/src/manager.tsx | 2 +- code/addons/storysource/src/manager.tsx | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/addons/a11y/src/manager.tsx b/code/addons/a11y/src/manager.tsx index 927bdf2f3aba..3943fb3d2d48 100644 --- a/code/addons/a11y/src/manager.tsx +++ b/code/addons/a11y/src/manager.tsx @@ -36,8 +36,8 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: Title, type: types.PANEL, - render: ({ active = true, key }) => ( - <A11yContextProvider key={key} active={active}> + render: ({ active = true }) => ( + <A11yContextProvider active={active}> <A11YPanel /> </A11yContextProvider> ), diff --git a/code/addons/actions/src/manager.tsx b/code/addons/actions/src/manager.tsx index 434e214de30a..cade1d86fdce 100644 --- a/code/addons/actions/src/manager.tsx +++ b/code/addons/actions/src/manager.tsx @@ -36,7 +36,7 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: Title, type: types.PANEL, - render: ({ active, key }) => <ActionLogger key={key} api={api} active={!!active} />, + render: ({ active }) => <ActionLogger api={api} active={!!active} />, paramKey: PARAM_KEY, }); }); diff --git a/code/addons/controls/src/manager.tsx b/code/addons/controls/src/manager.tsx index de00635f7196..921cd038b74c 100644 --- a/code/addons/controls/src/manager.tsx +++ b/code/addons/controls/src/manager.tsx @@ -26,12 +26,12 @@ addons.register(ADDON_ID, (api) => { title: Title, type: types.PANEL, paramKey: PARAM_KEY, - render: ({ key, active }) => { + render: ({ active }) => { if (!active || !api.getCurrentStoryData()) { return null; } return ( - <AddonPanel key={key} active={active}> + <AddonPanel active={active}> <ControlsPanel /> </AddonPanel> ); diff --git a/code/addons/interactions/src/manager.tsx b/code/addons/interactions/src/manager.tsx index 1de79401b146..9de823628efa 100644 --- a/code/addons/interactions/src/manager.tsx +++ b/code/addons/interactions/src/manager.tsx @@ -29,7 +29,7 @@ addons.register(ADDON_ID, (api) => { type: types.PANEL, title: Title, match: ({ viewMode }) => viewMode === 'story', - render: ({ key, active }) => { + render: ({ active }) => { const newLocal = useCallback(({ state }: Combo) => { return { storyId: state.storyId, @@ -37,7 +37,7 @@ addons.register(ADDON_ID, (api) => { }, []); return ( - <AddonPanel key={key} active={active}> + <AddonPanel active={active}> <Consumer filter={newLocal}>{({ storyId }) => <Panel storyId={storyId} />}</Consumer> </AddonPanel> ); diff --git a/code/addons/jest/src/manager.tsx b/code/addons/jest/src/manager.tsx index 2c774b739b88..cdf3fadde26b 100644 --- a/code/addons/jest/src/manager.tsx +++ b/code/addons/jest/src/manager.tsx @@ -8,7 +8,7 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: 'Tests', type: types.PANEL, - render: ({ active, key }) => <Panel key={key} api={api} active={active} />, + render: ({ active }) => <Panel api={api} active={active} />, paramKey: PARAM_KEY, }); }); diff --git a/code/addons/storysource/src/manager.tsx b/code/addons/storysource/src/manager.tsx index 0322de32d8d5..072db560bd76 100644 --- a/code/addons/storysource/src/manager.tsx +++ b/code/addons/storysource/src/manager.tsx @@ -8,7 +8,7 @@ addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { type: types.PANEL, title: 'Code', - render: ({ active, key }) => (active ? <StoryPanel key={key} api={api} /> : null), + render: ({ active }) => (active ? <StoryPanel api={api} /> : null), paramKey: 'storysource', }); }); From 5d48c3416a8dc5c33fef640ad29bf9ffb3ca6ea8 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 13:03:02 +0100 Subject: [PATCH 085/135] Bring back old component --- .../src/Button/Button-depreciated.stories.tsx | 84 ---- .../components/src/Button/Button.stories.tsx | 203 +++------- code/ui/components/src/Button/Button.tsx | 368 ++++++++++++------ code/ui/components/src/Button/styles.ts | 300 -------------- .../src/Button/Button.stories.tsx | 11 - code/ui/experimental-ui/src/Button/Button.tsx | 109 +----- code/ui/experimental-ui/src/Button/styles.ts | 231 +---------- 7 files changed, 311 insertions(+), 995 deletions(-) delete mode 100644 code/ui/components/src/Button/Button-depreciated.stories.tsx delete mode 100644 code/ui/components/src/Button/styles.ts diff --git a/code/ui/components/src/Button/Button-depreciated.stories.tsx b/code/ui/components/src/Button/Button-depreciated.stories.tsx deleted file mode 100644 index 21a18206f990..000000000000 --- a/code/ui/components/src/Button/Button-depreciated.stories.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; -import type { Args } from '@storybook/types'; - -import { Button } from './Button'; -import { Icons } from '../icon/icon'; -import { Form } from '../form/index'; - -export default { - title: 'Button (Depreciated)', - component: Button, - tags: ['autodocs'], -}; - -export const Default = { args: { children: 'Default' } }; - -export const FormButton = { - render: (args: Args) => <Form.Button {...args} />, - args: { children: 'Form.Button' }, -}; - -export const Primary = { args: { primary: true, children: 'Primary' } }; -export const Secondary = { args: { secondary: true, children: 'Secondary' } }; -export const Tertiary = { args: { tertiary: true, children: 'Tertiary' } }; -export const Gray = { args: { gray: true, children: 'Gray' } }; - -export const Outline = { args: { outline: true, children: 'Outline' } }; -export const OutlinePrimary = { - args: { outline: true, primary: true, children: 'Outline Primary' }, -}; -export const OutlineSecondary = { - args: { outline: true, secondary: true, children: 'Outline Secondary' }, -}; -export const OutlineTertiary = { - args: { outline: true, tertiary: true, children: 'Outline Tertiary' }, -}; - -export const Disabled = { args: { disabled: true, children: 'Disabled' } }; -export const DisabledPrimary = { - args: { disabled: true, primary: true, children: 'Disabled Priary' }, -}; -export const DisabledSecondary = { - args: { disabled: true, secondary: true, children: 'Disabled Secondary' }, -}; -export const DisabledTertiary = { - args: { disabled: true, tertiary: true, children: 'Disabled Tertiary' }, -}; -export const DisabledGray = { - args: { disabled: true, gray: true, children: 'Disabled Gray' }, -}; - -export const Small = { args: { small: true, children: 'Small' } }; -export const SmallPrimary = { - args: { small: true, primary: true, children: 'Small Priary' }, -}; -export const SmallSecondary = { - args: { small: true, secondary: true, children: 'Small Secondary' }, -}; -export const SmallTertiary = { - args: { small: true, tertiary: true, children: 'Small Tertiary' }, -}; -export const SmallGray = { - args: { small: true, gray: true, children: 'Small Gray' }, -}; - -export const IconPrimary = { - args: { - primary: true, - containsIcon: true, - title: 'link', - children: <Icons icon="link" />, - }, -}; -export const IconOutline = { - args: { outline: true, containsIcon: true, title: 'link', children: <Icons icon="link" /> }, -}; -export const IconOutlineSmall = { - args: { - outline: true, - containsIcon: true, - small: true, - title: 'link', - children: <Icons icon="link" />, - }, -}; diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/Button/Button.stories.tsx index a057af8df882..e1fc021087b8 100644 --- a/code/ui/components/src/Button/Button.stories.tsx +++ b/code/ui/components/src/Button/Button.stories.tsx @@ -1,169 +1,82 @@ -import type { Meta, StoryObj } from '@storybook/react'; import React from 'react'; +import type { Args } from '@storybook/types'; import { Button } from './Button'; import { Icons } from '../icon/icon'; +import { Form } from '../form/index'; -const meta: Meta<typeof Button> = { - title: 'Button', +export default { component: Button, - tags: ['autodocs'], - argTypes: { - isLink: { table: { disable: true } }, - primary: { table: { disable: true } }, - secondary: { table: { disable: true } }, - tertiary: { table: { disable: true } }, - gray: { table: { disable: true } }, - inForm: { table: { disable: true } }, - small: { table: { disable: true } }, - outline: { table: { disable: true } }, - containsIcon: { table: { disable: true } }, - }, }; -export default meta; -type Story = StoryObj<typeof Button>; +export const Default = { args: { children: 'Default' } }; -export const Base = { - args: { children: 'Button' }, +export const FormButton = { + render: (args: Args) => <Form.Button {...args} />, + args: { children: 'Form.Button' }, }; -export const Types: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary">Primary</Button> - <Button type="secondary">Secondary</Button> - <Button type="tertiary">Tertiary</Button> - </div> - ), -}; +export const Primary = { args: { primary: true, children: 'Primary' } }; +export const Secondary = { args: { secondary: true, children: 'Secondary' } }; +export const Tertiary = { args: { tertiary: true, children: 'Tertiary' } }; +export const Gray = { args: { gray: true, children: 'Gray' } }; -export const Active: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" active> - Primary - </Button> - <Button type="secondary" active> - Secondary - </Button> - <Button type="tertiary" active> - Tertiary - </Button> - </div> - ), +export const Outline = { args: { outline: true, children: 'Outline' } }; +export const OutlinePrimary = { + args: { outline: true, primary: true, children: 'Outline Primary' }, }; - -export const WithIcon: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" icon={<Icons icon="bell" />}> - Primary - </Button> - <Button type="secondary" icon={<Icons icon="bell" />}> - Secondary - </Button> - <Button type="tertiary" icon={<Icons icon="bell" />}> - Tertiary - </Button> - </div> - ), +export const OutlineSecondary = { + args: { outline: true, secondary: true, children: 'Outline Secondary' }, }; - -export const Sizes: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small" icon={<Icons icon="bell" />}> - Small Button - </Button> - <Button size="small" icon={<Icons icon="bell" />} iconOnly> - Small Button - </Button> - <Button size="medium" icon={<Icons icon="bell" />}> - Medium Button - </Button> - <Button size="medium" icon={<Icons icon="bell" />} iconOnly> - Medium Button - </Button> - </div> - ), +export const OutlineTertiary = { + args: { outline: true, tertiary: true, children: 'Outline Tertiary' }, }; -export const IconOnly: Story = { - parameters: { - docs: { - description: { - story: 'This is a story that shows how to use the `iconOnly` prop.', - }, - source: { - type: 'dynamic', - }, - }, - }, - render: () => ( - <> - <Button size="small" type="primary" iconOnly icon={<Icons icon="bell" />}> - Primary - </Button> - <Button size="small" type="secondary" iconOnly icon={<Icons icon="bell" />}> - Secondary - </Button> - <Button size="small" type="tertiary" iconOnly icon={<Icons icon="bell" />}> - Tertiary - </Button> - <Button size="medium" type="primary" iconOnly icon={<Icons icon="bell" />}> - Primary - </Button> - <Button size="medium" type="secondary" iconOnly icon={<Icons icon="bell" />}> - Secondary - </Button> - <Button size="medium" type="tertiary" iconOnly icon={<Icons icon="bell" />}> - Tertiary - </Button> - </> - ), - decorators: [ - (Story) => <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>{Story()}</div>, - ], +export const Disabled = { args: { disabled: true, children: 'Disabled' } }; +export const DisabledPrimary = { + args: { disabled: true, primary: true, children: 'Disabled Priary' }, +}; +export const DisabledSecondary = { + args: { disabled: true, secondary: true, children: 'Disabled Secondary' }, +}; +export const DisabledTertiary = { + args: { disabled: true, tertiary: true, children: 'Disabled Tertiary' }, +}; +export const DisabledGray = { + args: { disabled: true, gray: true, children: 'Disabled Gray' }, }; -export const IconOnlyActive: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small" type="primary" iconOnly icon={<Icons icon="bell" />} active> - Primary - </Button> - <Button size="small" type="secondary" iconOnly icon={<Icons icon="bell" />} active> - Secondary - </Button> - <Button size="small" type="tertiary" iconOnly icon={<Icons icon="bell" />} active> - Tertiary - </Button> - <Button size="medium" type="primary" iconOnly icon={<Icons icon="bell" />} active> - Primary - </Button> - <Button size="medium" type="secondary" iconOnly icon={<Icons icon="bell" />} active> - Secondary - </Button> - <Button size="medium" type="tertiary" iconOnly icon={<Icons icon="bell" />} active> - Tertiary - </Button> - </div> - ), +export const Small = { args: { small: true, children: 'Small' } }; +export const SmallPrimary = { + args: { small: true, primary: true, children: 'Small Priary' }, +}; +export const SmallSecondary = { + args: { small: true, secondary: true, children: 'Small Secondary' }, +}; +export const SmallTertiary = { + args: { small: true, tertiary: true, children: 'Small Tertiary' }, +}; +export const SmallGray = { + args: { small: true, gray: true, children: 'Small Gray' }, }; -export const Disabled: Story = { +export const IconPrimary = { args: { - disabled: true, - children: 'Disabled Button', + primary: true, + containsIcon: true, + title: 'link', + children: <Icons icon="link" />, }, }; - -export const WithHref: Story = { - render: () => ( - <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button onClick={() => console.log('Hello')}>I am a button using onClick</Button> - <Button href="https://storybook.js.org/">I am an anchor using Href</Button> - </div> - ), +export const IconOutline = { + args: { outline: true, containsIcon: true, title: 'link', children: <Icons icon="link" /> }, +}; +export const IconOutlineSmall = { + args: { + outline: true, + containsIcon: true, + small: true, + title: 'link', + children: <Icons icon="link" />, + }, }; diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/Button/Button.tsx index 2931230f811a..f39414bf4345 100644 --- a/code/ui/components/src/Button/Button.tsx +++ b/code/ui/components/src/Button/Button.tsx @@ -1,148 +1,272 @@ -import type { ReactNode } from 'react'; +import type { FC, ComponentProps, ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { ButtonWrapper, ButtonWrapperDepreciated } from './styles'; +import { styled } from '@storybook/theming'; +import { darken, lighten, rgba, transparentize } from 'polished'; -export interface ButtonProps { - children?: ReactNode; - href?: string; - size?: 'small' | 'medium'; - type?: 'primary' | 'secondary' | 'tertiary'; - icon?: ReactNode; - iconOnly?: boolean; - onClick?: () => void; - disabled?: boolean; - active?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `as='a'` property instead. - */ +const ButtonWrapper = styled.button<{ isLink?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * This colour is not used anymore. - */ primary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='blue'` property instead. - */ secondary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='gray'` property instead. - */ tertiary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='gray'` property instead. - */ gray?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - */ inForm?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `size='sm'` property instead. - */ + disabled?: boolean; small?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='outline'` property instead. - */ outline?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `leftIcon={<YourIcon />}` property instead. - */ containsIcon?: boolean; -} + children?: ReactNode; + href?: string; +}>( + ({ small, theme }) => ({ + border: 0, + borderRadius: '3em', + cursor: 'pointer', + display: 'inline-block', + overflow: 'hidden', + padding: small ? '8px 16px' : '13px 20px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: 1, + margin: 0, + background: 'transparent', -const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); -const NewButtonLink = ButtonWrapper.withComponent('a'); + fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', -export const Button = forwardRef<any, ButtonProps>( - ( - { - isLink = false, - gray, - primary, - secondary, - tertiary, - inForm, - small, - outline, - containsIcon, - size = 'medium', - type = 'primary', - icon, - iconOnly = false, - disabled = false, - active = false, - href, - children, - ...props + svg: { + display: 'inline-block', + height: small ? 12 : 14, + width: small ? 12 : 14, + + verticalAlign: 'top', + marginRight: small ? 4 : 6, + marginTop: small ? 0 : -1, + marginBottom: small ? 0 : -1, + + /* Necessary for js mouse events to not glitch out when hovering on svgs */ + pointerEvents: 'none', + + path: { + fill: 'currentColor', + }, }, - ref - ) => { - const isDepreciated = - primary || secondary || tertiary || gray || inForm || small || outline || containsIcon; + }), + ({ disabled }) => + disabled + ? { + cursor: 'not-allowed !important', + opacity: 0.5, + '&:hover': { + transform: 'none', + }, + } + : {}, + ({ containsIcon, small }) => + containsIcon + ? { + svg: { + display: 'block', + margin: 0, + }, + ...(small ? { padding: 10 } : { padding: 13 }), + } + : {}, + ({ theme, primary, secondary, gray }) => { + let color; - if (!!isDepreciated && isLink) { - return ( - <ButtonLink - ref={ref} - isLink={isLink} - gray={gray} - primary={primary} - secondary={secondary} - tertiary={tertiary} - inForm={inForm} - small={small} - outline={outline} - containsIcon={containsIcon} - {...props} - > - {children} - </ButtonLink> - ); + if (gray) { + color = theme.color.mediumlight; + } else if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; } - if (isDepreciated) { - return ( - <ButtonWrapperDepreciated - ref={ref} - isLink={isLink} - gray={gray} - primary={primary} - secondary={secondary} - tertiary={tertiary} - inForm={inForm} - small={small} - outline={outline} - containsIcon={containsIcon} - {...props} - > - {children} - </ButtonWrapperDepreciated> - ); + return color + ? { + background: color, + color: gray ? theme.color.darkest : theme.color.lightest, + + '&:hover': { + background: darken(0.05, color), + }, + '&:active': { + boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', + }, + '&:focus': { + boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, tertiary, inForm, small }) => + tertiary + ? { + background: theme.button.background, + color: theme.input.color, + boxShadow: `${theme.button.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + + ...(inForm && small ? { padding: '10px 16px' } : {}), + + '&:hover': { + background: + theme.base === 'light' + ? darken(0.02, theme.button.background) + : lighten(0.03, theme.button.background), + ...(inForm + ? {} + : { + boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', + }), + }, + '&:active': { + background: theme.button.background, + }, + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, + } + : {}, + ({ theme, outline }) => + outline + ? { + boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, + color: transparentize(0.3, theme.color.defaultText), + background: 'transparent', + + '&:hover, &:focus': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, + outline: 'none', + }, + + '&:active': { + boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, + color: transparentize(0, theme.color.defaultText), + }, + } + : {}, + ({ theme, outline, primary }) => { + const color = theme.color.primary; + + return outline && primary + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + }, + ({ theme, outline, primary, secondary }) => { + let color; + + if (secondary) { + color = theme.color.secondary; + } else if (primary) { + color = theme.color.primary; } - if (href) + return outline && color + ? { + boxShadow: `${color} 0 0 0 1px inset`, + color, + + 'svg path': { + fill: color, + }, + + '&:hover': { + boxShadow: `${color} 0 0 0 1px inset`, + background: 'transparent', + }, + + '&:active': { + background: color, + boxShadow: `${color} 0 0 0 1px inset`, + color: theme.color.tertiary, + }, + '&:focus': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, + outline: 'none', + }, + '&:focus:hover': { + boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, + }, + } + : {}; + } +); + +const ButtonLink = ButtonWrapper.withComponent('a'); + +export const Button: FC<ComponentProps<typeof ButtonWrapper>> = Object.assign( + forwardRef< + any, + { + isLink?: boolean; + primary?: boolean; + secondary?: boolean; + tertiary?: boolean; + gray?: boolean; + inForm?: boolean; + disabled?: boolean; + small?: boolean; + outline?: boolean; + containsIcon?: boolean; + children?: ReactNode; + href?: string; + } + >(function Button({ isLink, children, ...props }, ref) { + if (isLink) { return ( - <NewButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> - {icon} - {!iconOnly && children} - </NewButtonLink> + <ButtonLink {...props} ref={ref}> + {children} + </ButtonLink> ); - + } return ( - <ButtonWrapper ref={ref} size={size} btnType={type} disabled={disabled} active={active}> - {icon} - {!iconOnly && children} + <ButtonWrapper {...props} ref={ref}> + {children} </ButtonWrapper> ); + }), + { + defaultProps: { + isLink: false, + }, } ); - -Button.displayName = 'Button'; diff --git a/code/ui/components/src/Button/styles.ts b/code/ui/components/src/Button/styles.ts deleted file mode 100644 index 86546a53c4a8..000000000000 --- a/code/ui/components/src/Button/styles.ts +++ /dev/null @@ -1,300 +0,0 @@ -import type { ReactNode } from 'react'; -import { styled } from '@storybook/theming'; -import { darken, lighten, rgba, transparentize } from 'polished'; -import type { ButtonProps } from './Button'; - -export const ButtonWrapper = styled.button<{ - btnType: ButtonProps['type']; - size: ButtonProps['size']; - disabled: ButtonProps['disabled']; - active: ButtonProps['active']; -}>(({ theme, btnType, size, disabled, active }) => ({ - border: 0, - cursor: disabled ? 'not-allowed !important' : 'pointer', - display: 'inline-flex', - alignItems: 'center', - overflow: 'hidden', - padding: '0 16px', - height: size === 'small' ? '28px' : '32px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: disabled ? 0.5 : 1, - margin: 0, - fontSize: `${theme.typography.size.s1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - background: `${(() => { - if (btnType === 'primary') return theme.color.secondary; - if (btnType === 'secondary') return theme.button.background; - if (btnType === 'tertiary' && active) return theme.background.hoverable; - return 'transparent'; - })()}`, - color: `${(() => { - if (btnType === 'primary') return theme.color.lightest; - if (btnType === 'secondary') return theme.input.color; - if (btnType === 'tertiary') return theme.color.mediumdark; - return theme.input.color; - })()}`, - boxShadow: btnType === 'primary' ? 'none' : `${theme.button.border} 0 0 0 1px inset`, - borderRadius: theme.input.borderRadius, - - '&:hover': { - background: `${(() => { - let bgColor = theme.color.secondary; - if (btnType === 'primary') bgColor = theme.color.secondary; - if (btnType === 'secondary') bgColor = theme.button.background; - - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); - })()}`, - }, - - '&:active': { - background: `${(() => { - let bgColor = theme.color.secondary; - if (btnType === 'primary') bgColor = theme.color.secondary; - if (btnType === 'secondary') bgColor = theme.button.background; - - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); - })()}`, - }, - - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, -})); - -export const ButtonWrapperDepreciated = styled.button<{ - isLink?: boolean; - primary?: boolean; - secondary?: boolean; - tertiary?: boolean; - gray?: boolean; - inForm?: boolean; - disabled?: boolean; - small?: boolean; - outline?: boolean; - containsIcon?: boolean; - children?: ReactNode; - href?: string; -}>( - ({ small, theme }) => ({ - border: 0, - borderRadius: '3em', - cursor: 'pointer', - display: 'inline-block', - overflow: 'hidden', - padding: small ? '8px 16px' : '13px 20px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: 1, - margin: 0, - background: 'transparent', - - fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - - svg: { - display: 'inline-block', - height: small ? 12 : 14, - width: small ? 12 : 14, - - verticalAlign: 'top', - marginRight: small ? 4 : 6, - marginTop: small ? 0 : -1, - marginBottom: small ? 0 : -1, - - /* Necessary for js mouse events to not glitch out when hovering on svgs */ - pointerEvents: 'none', - - path: { - fill: 'currentColor', - }, - }, - }), - ({ disabled }) => - disabled - ? { - cursor: 'not-allowed !important', - opacity: 0.5, - '&:hover': { - transform: 'none', - }, - } - : {}, - ({ containsIcon, small }) => - containsIcon - ? { - svg: { - display: 'block', - margin: 0, - }, - ...(small ? { padding: 10 } : { padding: 13 }), - } - : {}, - ({ theme, primary, secondary, gray }) => { - let color; - - if (gray) { - color = theme.color.mediumlight; - } else if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return color - ? { - background: color, - color: gray ? theme.color.darkest : theme.color.lightest, - - '&:hover': { - background: darken(0.05, color), - }, - '&:active': { - boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', - }, - '&:focus': { - boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, tertiary, inForm, small }) => - tertiary - ? { - background: theme.button.background, - color: theme.input.color, - boxShadow: `${theme.button.border} 0 0 0 1px inset`, - borderRadius: theme.input.borderRadius, - - ...(inForm && small ? { padding: '10px 16px' } : {}), - - '&:hover': { - background: - theme.base === 'light' - ? darken(0.02, theme.button.background) - : lighten(0.03, theme.button.background), - ...(inForm - ? {} - : { - boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', - }), - }, - '&:active': { - background: theme.button.background, - }, - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, - } - : {}, - ({ theme, outline }) => - outline - ? { - boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, - color: transparentize(0.3, theme.color.defaultText), - background: 'transparent', - - '&:hover, &:focus': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, - outline: 'none', - }, - - '&:active': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, - color: transparentize(0, theme.color.defaultText), - }, - } - : {}, - ({ theme, outline, primary }) => { - const color = theme.color.primary; - - return outline && primary - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, outline, primary, secondary }) => { - let color; - - if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return outline && color - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - } -); diff --git a/code/ui/experimental-ui/src/Button/Button.stories.tsx b/code/ui/experimental-ui/src/Button/Button.stories.tsx index 404fcc02b6f4..828ec6e97793 100644 --- a/code/ui/experimental-ui/src/Button/Button.stories.tsx +++ b/code/ui/experimental-ui/src/Button/Button.stories.tsx @@ -7,17 +7,6 @@ const meta: Meta<typeof Button> = { title: 'Button', component: Button, tags: ['autodocs'], - argTypes: { - isLink: { table: { disable: true } }, - primary: { table: { disable: true } }, - secondary: { table: { disable: true } }, - tertiary: { table: { disable: true } }, - gray: { table: { disable: true } }, - inForm: { table: { disable: true } }, - small: { table: { disable: true } }, - outline: { table: { disable: true } }, - containsIcon: { table: { disable: true } }, - }, }; export default meta; diff --git a/code/ui/experimental-ui/src/Button/Button.tsx b/code/ui/experimental-ui/src/Button/Button.tsx index 2931230f811a..e558fce03b44 100644 --- a/code/ui/experimental-ui/src/Button/Button.tsx +++ b/code/ui/experimental-ui/src/Button/Button.tsx @@ -1,9 +1,9 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { ButtonWrapper, ButtonWrapperDepreciated } from './styles'; +import { ButtonWrapper } from './styles'; export interface ButtonProps { - children?: ReactNode; + children: string; href?: string; size?: 'small' | 'medium'; type?: 'primary' | 'secondary' | 'tertiary'; @@ -12,67 +12,14 @@ export interface ButtonProps { onClick?: () => void; disabled?: boolean; active?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `as='a'` property instead. - */ - isLink?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * This colour is not used anymore. - */ - primary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='blue'` property instead. - */ - secondary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='gray'` property instead. - */ - tertiary?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='solid' color='gray'` property instead. - */ - gray?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - */ - inForm?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `size='sm'` property instead. - */ - small?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `variant='outline'` property instead. - */ - outline?: boolean; - /** - * @deprecated This property will be removed in SB 8.0 - * Use `leftIcon={<YourIcon />}` property instead. - */ - containsIcon?: boolean; + as?: any; } -const ButtonLink = ButtonWrapperDepreciated.withComponent('a'); -const NewButtonLink = ButtonWrapper.withComponent('a'); +const ButtonLink = ButtonWrapper.withComponent('a'); export const Button = forwardRef<any, ButtonProps>( ( { - isLink = false, - gray, - primary, - secondary, - tertiary, - inForm, - small, - outline, - containsIcon, size = 'medium', type = 'primary', icon, @@ -81,59 +28,15 @@ export const Button = forwardRef<any, ButtonProps>( active = false, href, children, - ...props }, ref ) => { - const isDepreciated = - primary || secondary || tertiary || gray || inForm || small || outline || containsIcon; - - if (!!isDepreciated && isLink) { - return ( - <ButtonLink - ref={ref} - isLink={isLink} - gray={gray} - primary={primary} - secondary={secondary} - tertiary={tertiary} - inForm={inForm} - small={small} - outline={outline} - containsIcon={containsIcon} - {...props} - > - {children} - </ButtonLink> - ); - } - - if (isDepreciated) { - return ( - <ButtonWrapperDepreciated - ref={ref} - isLink={isLink} - gray={gray} - primary={primary} - secondary={secondary} - tertiary={tertiary} - inForm={inForm} - small={small} - outline={outline} - containsIcon={containsIcon} - {...props} - > - {children} - </ButtonWrapperDepreciated> - ); - } - if (href) return ( - <NewButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + <ButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> {icon} {!iconOnly && children} - </NewButtonLink> + </ButtonLink> ); return ( diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/experimental-ui/src/Button/styles.ts index 86546a53c4a8..0581aee14875 100644 --- a/code/ui/experimental-ui/src/Button/styles.ts +++ b/code/ui/experimental-ui/src/Button/styles.ts @@ -1,6 +1,5 @@ -import type { ReactNode } from 'react'; import { styled } from '@storybook/theming'; -import { darken, lighten, rgba, transparentize } from 'polished'; +import { darken, lighten, rgba } from 'polished'; import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ @@ -70,231 +69,3 @@ export const ButtonWrapper = styled.button<{ outline: 'none', }, })); - -export const ButtonWrapperDepreciated = styled.button<{ - isLink?: boolean; - primary?: boolean; - secondary?: boolean; - tertiary?: boolean; - gray?: boolean; - inForm?: boolean; - disabled?: boolean; - small?: boolean; - outline?: boolean; - containsIcon?: boolean; - children?: ReactNode; - href?: string; -}>( - ({ small, theme }) => ({ - border: 0, - borderRadius: '3em', - cursor: 'pointer', - display: 'inline-block', - overflow: 'hidden', - padding: small ? '8px 16px' : '13px 20px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: 1, - margin: 0, - background: 'transparent', - - fontSize: `${small ? theme.typography.size.s1 : theme.typography.size.s2 - 1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - - svg: { - display: 'inline-block', - height: small ? 12 : 14, - width: small ? 12 : 14, - - verticalAlign: 'top', - marginRight: small ? 4 : 6, - marginTop: small ? 0 : -1, - marginBottom: small ? 0 : -1, - - /* Necessary for js mouse events to not glitch out when hovering on svgs */ - pointerEvents: 'none', - - path: { - fill: 'currentColor', - }, - }, - }), - ({ disabled }) => - disabled - ? { - cursor: 'not-allowed !important', - opacity: 0.5, - '&:hover': { - transform: 'none', - }, - } - : {}, - ({ containsIcon, small }) => - containsIcon - ? { - svg: { - display: 'block', - margin: 0, - }, - ...(small ? { padding: 10 } : { padding: 13 }), - } - : {}, - ({ theme, primary, secondary, gray }) => { - let color; - - if (gray) { - color = theme.color.mediumlight; - } else if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return color - ? { - background: color, - color: gray ? theme.color.darkest : theme.color.lightest, - - '&:hover': { - background: darken(0.05, color), - }, - '&:active': { - boxShadow: 'rgba(0, 0, 0, 0.1) 0 0 0 3em inset', - }, - '&:focus': { - boxShadow: `${rgba(color, 1)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, tertiary, inForm, small }) => - tertiary - ? { - background: theme.button.background, - color: theme.input.color, - boxShadow: `${theme.button.border} 0 0 0 1px inset`, - borderRadius: theme.input.borderRadius, - - ...(inForm && small ? { padding: '10px 16px' } : {}), - - '&:hover': { - background: - theme.base === 'light' - ? darken(0.02, theme.button.background) - : lighten(0.03, theme.button.background), - ...(inForm - ? {} - : { - boxShadow: 'rgba(0,0,0,.2) 0 2px 6px 0, rgba(0,0,0,.1) 0 0 0 1px inset', - }), - }, - '&:active': { - background: theme.button.background, - }, - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, - } - : {}, - ({ theme, outline }) => - outline - ? { - boxShadow: `${transparentize(0.8, theme.color.defaultText)} 0 0 0 1px inset`, - color: transparentize(0.3, theme.color.defaultText), - background: 'transparent', - - '&:hover, &:focus': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 1px inset`, - outline: 'none', - }, - - '&:active': { - boxShadow: `${transparentize(0.5, theme.color.defaultText)} 0 0 0 2px inset`, - color: transparentize(0, theme.color.defaultText), - }, - } - : {}, - ({ theme, outline, primary }) => { - const color = theme.color.primary; - - return outline && primary - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - }, - ({ theme, outline, primary, secondary }) => { - let color; - - if (secondary) { - color = theme.color.secondary; - } else if (primary) { - color = theme.color.primary; - } - - return outline && color - ? { - boxShadow: `${color} 0 0 0 1px inset`, - color, - - 'svg path': { - fill: color, - }, - - '&:hover': { - boxShadow: `${color} 0 0 0 1px inset`, - background: 'transparent', - }, - - '&:active': { - background: color, - boxShadow: `${color} 0 0 0 1px inset`, - color: theme.color.tertiary, - }, - '&:focus': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.4)} 0 1px 9px 2px`, - outline: 'none', - }, - '&:focus:hover': { - boxShadow: `${color} 0 0 0 1px inset, ${rgba(color, 0.2)} 0 8px 18px 0px`, - }, - } - : {}; - } -); From ab7fd6df9d0dd72526832acc9ca56f0ce99fa53d Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 13:04:26 +0100 Subject: [PATCH 086/135] Update preview.tsx --- code/ui/.storybook/preview.tsx | 132 +++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 55 deletions(-) diff --git a/code/ui/.storybook/preview.tsx b/code/ui/.storybook/preview.tsx index 1d500b949226..c89c15e85db4 100644 --- a/code/ui/.storybook/preview.tsx +++ b/code/ui/.storybook/preview.tsx @@ -15,44 +15,71 @@ import { Symbols } from '@storybook/components'; import type { PreviewWeb } from '@storybook/preview-api'; import type { ReactRenderer } from '@storybook/react'; import type { Channel } from '@storybook/channels'; + import { DocsContext } from '@storybook/blocks'; + import { DocsPageWrapper } from '../blocks/src/components'; const { document } = global; -const ThemeContainer = styled.div({ - display: 'flex', -}); - -const ThemeBlock = styled.div(({ theme }) => ({ - flex: 1, - padding: '1rem', - background: theme.background.content, - color: theme.color.defaultText, -})); +const ThemeBlock = styled.div<{ side: 'left' | 'right' }>( + { + position: 'absolute', + top: 0, + left: 0, + right: '50vw', + width: '50vw', + height: '100vh', + bottom: 0, + overflow: 'auto', + padding: 10, + }, + ({ theme }) => ({ + background: theme.background.content, + color: theme.color.defaultText, + }), + ({ side }) => + side === 'left' + ? { + left: 0, + right: '50vw', + } + : { + right: 0, + left: '50vw', + } +); -const ThemeStack = styled.div(({ theme }) => ({ - flex: 1, - padding: '1rem', - background: theme.background.content, - color: theme.color.defaultText, -})); +const ThemeStack = styled.div( + { + position: 'relative', + minHeight: 'calc(50vh - 15px)', + }, + ({ theme }) => ({ + background: theme.background.content, + color: theme.color.defaultText, + }) +); -const PlayFnNotice = styled.div(({ theme }) => ({ - position: 'absolute', - top: 0, - left: 0, - width: '100%', - borderBottom: '1px solid #ccc', - padding: '3px 8px', - fontSize: '10px', - fontWeight: 'bold', - '> *': { - display: 'block', +const PlayFnNotice = styled.div( + { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + borderBottom: '1px solid #ccc', + padding: '3px 8px', + fontSize: '10px', + fontWeight: 'bold', + '> *': { + display: 'block', + }, }, - background: '#fffbd9', - color: theme.color.defaultText, -})); + ({ theme }) => ({ + background: '#fffbd9', + color: theme.color.defaultText, + }) +); const ThemedSetRoot = () => { const theme = useTheme(); @@ -150,21 +177,21 @@ export const decorators = [ switch (theme) { case 'side-by-side': { return ( - <ThemeContainer> + <Fragment> <ThemeProvider theme={convert(themes.light)}> <Global styles={createReset} /> </ThemeProvider> <ThemeProvider theme={convert(themes.light)}> - <ThemeBlock data-side="left"> + <ThemeBlock side="left" data-side="left"> <StoryFn /> </ThemeBlock> </ThemeProvider> <ThemeProvider theme={convert(themes.dark)}> - <ThemeBlock data-side="right"> + <ThemeBlock side="right" data-side="right"> <StoryFn /> </ThemeBlock> </ThemeProvider> - </ThemeContainer> + </Fragment> ); } case 'stacked': { @@ -189,26 +216,22 @@ export const decorators = [ case 'default': default: { return ( - <ThemeContainer> - <ThemeProvider theme={convert(themes[theme])}> - <Global styles={createReset} /> - <ThemedSetRoot /> - {!parameters.theme && isChromatic() && playFunction && ( - <> - <PlayFnNotice> - <span> - Detected play function in Chromatic. Rendering only light theme to avoid - multiple play functions in the same story. - </span> - </PlayFnNotice> - <div style={{ marginBottom: 20 }} /> - </> - )} - <ThemeBlock> - <StoryFn /> - </ThemeBlock> - </ThemeProvider> - </ThemeContainer> + <ThemeProvider theme={convert(themes[theme])}> + <Global styles={createReset} /> + <ThemedSetRoot /> + {!parameters.theme && isChromatic() && playFunction && ( + <> + <PlayFnNotice> + <span> + Detected play function in Chromatic. Rendering only light theme to avoid + multiple play functions in the same story. + </span> + </PlayFnNotice> + <div style={{ marginBottom: 20 }} /> + </> + )} + <StoryFn /> + </ThemeProvider> ); } } @@ -283,7 +306,6 @@ export const parameters = { 'slategray', ], }, - layout: 'fullscreen', }; export const globalTypes = { From b030f4521b2f2251c1736b99011badf57f2ce59e Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 13:06:13 +0100 Subject: [PATCH 087/135] Remove Chromatic as a dependency --- code/ui/experimental-ui/package.json | 1 - code/yarn.lock | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/code/ui/experimental-ui/package.json b/code/ui/experimental-ui/package.json index 68390a13ff09..b4baf5b6c1f6 100644 --- a/code/ui/experimental-ui/package.json +++ b/code/ui/experimental-ui/package.json @@ -53,7 +53,6 @@ }, "devDependencies": { "@storybook/preview-api": "7.1.0-rc.0", - "chromatic": "^6.19.9", "polished": "^4.2.2", "prettier": "^2.8.0", "typescript": "~4.9.3", diff --git a/code/yarn.lock b/code/yarn.lock index 5a1c67a44d51..17a7b8d200bd 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6421,7 +6421,6 @@ __metadata: "@storybook/global": ^5.0.0 "@storybook/preview-api": 7.1.0-rc.0 "@storybook/theming": 7.1.0-rc.0 - chromatic: ^6.19.9 polished: ^4.2.2 prettier: ^2.8.0 typescript: ~4.9.3 @@ -12256,17 +12255,6 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:^6.19.9": - version: 6.19.9 - resolution: "chromatic@npm:6.19.9" - bin: - chroma: dist/bin.js - chromatic: dist/bin.js - chromatic-cli: dist/bin.js - checksum: a97814f0d67584e1fec5609a65c81ba4d536aa47a27df91b045de89571412d443b53931ee7c1cb15ef9687c45c20ac4bb2d0c3e16236bfe70a5d514062f373ec - languageName: node - linkType: hard - "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" From d9e2984786052ef89213aa66af376975087e4447 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 14:19:20 +0200 Subject: [PATCH 088/135] fix type issues --- code/ui/manager/src/components/preview/preview.tsx | 5 ++--- code/ui/manager/src/components/preview/toolbar.tsx | 7 ++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/code/ui/manager/src/components/preview/preview.tsx b/code/ui/manager/src/components/preview/preview.tsx index ad4c0b634fed..603718f48151 100644 --- a/code/ui/manager/src/components/preview/preview.tsx +++ b/code/ui/manager/src/components/preview/preview.tsx @@ -19,9 +19,8 @@ import type { PreviewProps } from './utils/types'; const { FEATURES } = global; -const getWrappers = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.PREVIEW)); -const getTabs = (getFn: API['getElements']) => Object.values(getFn<Addon_BaseType>(types.TAB)); +const getWrappers = (getFn: API['getElements']) => Object.values(getFn(types.PREVIEW)); +const getTabs = (getFn: API['getElements']) => Object.values(getFn(types.TAB)); const canvasMapper = ({ state, api }: Combo) => ({ storyId: state.storyId, diff --git a/code/ui/manager/src/components/preview/toolbar.tsx b/code/ui/manager/src/components/preview/toolbar.tsx index c4425bcc982c..b82e5cb2eb38 100644 --- a/code/ui/manager/src/components/preview/toolbar.tsx +++ b/code/ui/manager/src/components/preview/toolbar.tsx @@ -29,11 +29,8 @@ import { menuTool } from './tools/menu'; import { addonsTool } from './tools/addons'; import { remountTool } from './tools/remount'; -export const getTools = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.TOOL)); - -export const getToolsExtra = (getFn: API['getElements']) => - Object.values(getFn<Addon_BaseType>(types.TOOLEXTRA)); +export const getTools = (getFn: API['getElements']) => Object.values(getFn(types.TOOL)); +export const getToolsExtra = (getFn: API['getElements']) => Object.values(getFn(types.TOOLEXTRA)); const Bar: FunctionComponent<{ shown: boolean } & Record<string, any>> = ({ shown, ...props }) => ( <FlexBar {...props} /> From 011be259ad1455f76adf81891c982484706a3395 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 13:24:05 +0100 Subject: [PATCH 089/135] Update styles.ts --- code/ui/experimental-ui/src/Button/styles.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/experimental-ui/src/Button/styles.ts index 0581aee14875..3d6b0f930310 100644 --- a/code/ui/experimental-ui/src/Button/styles.ts +++ b/code/ui/experimental-ui/src/Button/styles.ts @@ -1,5 +1,5 @@ import { styled } from '@storybook/theming'; -import { darken, lighten, rgba } from 'polished'; +import { darken, lighten, rgba, transparentize } from 'polished'; import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ @@ -9,7 +9,7 @@ export const ButtonWrapper = styled.button<{ active: ButtonProps['active']; }>(({ theme, btnType, size, disabled, active }) => ({ border: 0, - cursor: disabled ? 'not-allowed !important' : 'pointer', + cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', alignItems: 'center', overflow: 'hidden', @@ -38,28 +38,33 @@ export const ButtonWrapper = styled.button<{ color: `${(() => { if (btnType === 'primary') return theme.color.lightest; if (btnType === 'secondary') return theme.input.color; + if (btnType === 'tertiary' && active) return theme.color.secondary; if (btnType === 'tertiary') return theme.color.mediumdark; return theme.input.color; })()}`, - boxShadow: btnType === 'primary' ? 'none' : `${theme.button.border} 0 0 0 1px inset`, + boxShadow: btnType === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', borderRadius: theme.input.borderRadius, '&:hover': { + color: btnType === 'tertiary' ? theme.color.secondary : null, background: `${(() => { let bgColor = theme.color.secondary; if (btnType === 'primary') bgColor = theme.color.secondary; if (btnType === 'secondary') bgColor = theme.button.background; + if (btnType === 'tertiary') return transparentize(0.86, theme.color.secondary); return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); })()}`, }, '&:active': { + color: btnType === 'tertiary' ? theme.color.secondary : null, background: `${(() => { let bgColor = theme.color.secondary; if (btnType === 'primary') bgColor = theme.color.secondary; if (btnType === 'secondary') bgColor = theme.button.background; + if (btnType === 'tertiary') return theme.background.hoverable; return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); })()}`, }, From f84cef22ea7d8f67dbaa764a58c81488d71dcfb2 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 14:28:04 +0100 Subject: [PATCH 090/135] Improve styling for all buttons --- .../src/Button/Button.stories.tsx | 66 ++++++++++------- code/ui/experimental-ui/src/Button/Button.tsx | 74 +++++++++++-------- code/ui/experimental-ui/src/Button/styles.ts | 51 ++++++++----- 3 files changed, 116 insertions(+), 75 deletions(-) diff --git a/code/ui/experimental-ui/src/Button/Button.stories.tsx b/code/ui/experimental-ui/src/Button/Button.stories.tsx index 828ec6e97793..50641949dc0e 100644 --- a/code/ui/experimental-ui/src/Button/Button.stories.tsx +++ b/code/ui/experimental-ui/src/Button/Button.stories.tsx @@ -16,12 +16,28 @@ export const Base = { args: { children: 'Button' }, }; +const Icon = () => ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={14} + height={14} + viewBox="0 0 14 14" + fill="currentColor" + > + <path d="M3.97 8.75a.5.5 0 0 0-.87.5 4.5 4.5 0 0 0 7.8 0 .5.5 0 1 0-.87-.5 3.5 3.5 0 0 1-6.06 0ZM5.5 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9.5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" /> + <path + fillRule="evenodd" + d="M14 7A7 7 0 1 1 0 7a7 7 0 0 1 14 0Zm-1 0A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" + /> + </svg> +); + export const Types: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary">Primary</Button> - <Button type="secondary">Secondary</Button> - <Button type="tertiary">Tertiary</Button> + <Button variant="primary">Primary</Button> + <Button variant="secondary">Secondary</Button> + <Button variant="tertiary">Tertiary</Button> </div> ), }; @@ -29,13 +45,13 @@ export const Types: Story = { export const Active: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" active> + <Button variant="primary" active> Primary </Button> - <Button type="secondary" active> + <Button variant="secondary" active> Secondary </Button> - <Button type="tertiary" active> + <Button variant="tertiary" active> Tertiary </Button> </div> @@ -45,13 +61,13 @@ export const Active: Story = { export const WithIcon: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button type="primary" icon={<div>Hello</div>}> + <Button variant="primary" icon={<Icon />}> Primary </Button> - <Button type="secondary" icon={<div>Hello</div>}> + <Button variant="secondary" icon={<Icon />}> Secondary </Button> - <Button type="tertiary" icon={<div>Hello</div>}> + <Button variant="tertiary" icon={<Icon />}> Tertiary </Button> </div> @@ -61,16 +77,16 @@ export const WithIcon: Story = { export const Sizes: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small" icon={<div>Hello</div>}> + <Button size="small" icon={<Icon />}> Small Button </Button> - <Button size="small" icon={<div>Hello</div>} iconOnly> + <Button size="small" icon={<Icon />} iconOnly> Small Button </Button> - <Button size="medium" icon={<div>Hello</div>}> + <Button size="medium" icon={<Icon />}> Medium Button </Button> - <Button size="medium" icon={<div>Hello</div>} iconOnly> + <Button size="medium" icon={<Icon />} iconOnly> Medium Button </Button> </div> @@ -90,22 +106,22 @@ export const IconOnly: Story = { }, render: () => ( <> - <Button size="small" type="primary" iconOnly icon={<div>Hello</div>}> + <Button size="small" variant="primary" iconOnly icon={<Icon />}> Primary </Button> - <Button size="small" type="secondary" iconOnly icon={<div>Hello</div>}> + <Button size="small" variant="secondary" iconOnly icon={<Icon />}> Secondary </Button> - <Button size="small" type="tertiary" iconOnly icon={<div>Hello</div>}> + <Button size="small" variant="tertiary" iconOnly icon={<Icon />}> Tertiary </Button> - <Button size="medium" type="primary" iconOnly icon={<div>Hello</div>}> + <Button size="medium" variant="primary" iconOnly icon={<Icon />}> Primary </Button> - <Button size="medium" type="secondary" iconOnly icon={<div>Hello</div>}> + <Button size="medium" variant="secondary" iconOnly icon={<Icon />}> Secondary </Button> - <Button size="medium" type="tertiary" iconOnly icon={<div>Hello</div>}> + <Button size="medium" variant="tertiary" iconOnly icon={<Icon />}> Tertiary </Button> </> @@ -118,22 +134,22 @@ export const IconOnly: Story = { export const IconOnlyActive: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> - <Button size="small" type="primary" iconOnly icon={<div>Hello</div>} active> + <Button size="small" variant="primary" iconOnly icon={<Icon />} active> Primary </Button> - <Button size="small" type="secondary" iconOnly icon={<div>Hello</div>} active> + <Button size="small" variant="secondary" iconOnly icon={<Icon />} active> Secondary </Button> - <Button size="small" type="tertiary" iconOnly icon={<div>Hello</div>} active> + <Button size="small" variant="tertiary" iconOnly icon={<Icon />} active> Tertiary </Button> - <Button size="medium" type="primary" iconOnly icon={<div>Hello</div>} active> + <Button size="medium" variant="primary" iconOnly icon={<Icon />} active> Primary </Button> - <Button size="medium" type="secondary" iconOnly icon={<div>Hello</div>} active> + <Button size="medium" variant="secondary" iconOnly icon={<Icon />} active> Secondary </Button> - <Button size="medium" type="tertiary" iconOnly icon={<div>Hello</div>} active> + <Button size="medium" variant="tertiary" iconOnly icon={<Icon />} active> Tertiary </Button> </div> diff --git a/code/ui/experimental-ui/src/Button/Button.tsx b/code/ui/experimental-ui/src/Button/Button.tsx index e558fce03b44..4345a530e5af 100644 --- a/code/ui/experimental-ui/src/Button/Button.tsx +++ b/code/ui/experimental-ui/src/Button/Button.tsx @@ -2,50 +2,62 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; import { ButtonWrapper } from './styles'; -export interface ButtonProps { +export type ButtonProps = ( + | React.ButtonHTMLAttributes<HTMLButtonElement> + | React.AnchorHTMLAttributes<HTMLAnchorElement> +) & { children: string; - href?: string; size?: 'small' | 'medium'; - type?: 'primary' | 'secondary' | 'tertiary'; + variant?: 'primary' | 'secondary' | 'tertiary'; icon?: ReactNode; iconOnly?: boolean; onClick?: () => void; disabled?: boolean; active?: boolean; - as?: any; -} +}; const ButtonLink = ButtonWrapper.withComponent('a'); -export const Button = forwardRef<any, ButtonProps>( - ( - { - size = 'medium', - type = 'primary', - icon, - iconOnly = false, - disabled = false, - active = false, - href, - children, - }, - ref - ) => { - if (href) - return ( - <ButtonLink ref={ref} size={size} btnType={type} disabled={disabled} active={active}> - {icon} - {!iconOnly && children} - </ButtonLink> - ); - +export const Button = forwardRef<any, ButtonProps>((props, ref) => { + const { + size = 'medium', + variant = 'primary', + icon, + iconOnly = false, + disabled = false, + active = false, + children, + } = props; + if ('href' in props) return ( - <ButtonWrapper ref={ref} size={size} btnType={type} disabled={disabled} active={active}> + <ButtonLink + ref={ref} + size={size} + variant={variant} + disabled={disabled} + active={active} + iconOnly={iconOnly} + {...(props as React.AnchorHTMLAttributes<HTMLAnchorElement>)} + > {icon} {!iconOnly && children} - </ButtonWrapper> + </ButtonLink> ); - } -); + + return ( + <ButtonWrapper + ref={ref} + size={size} + variant={variant} + disabled={disabled} + active={active} + iconOnly={iconOnly} + {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)} + > + {icon} + {!iconOnly && children} + </ButtonWrapper> + ); +}); Button.displayName = 'Button'; diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/experimental-ui/src/Button/styles.ts index 3d6b0f930310..e920278a17a5 100644 --- a/code/ui/experimental-ui/src/Button/styles.ts +++ b/code/ui/experimental-ui/src/Button/styles.ts @@ -3,17 +3,30 @@ import { darken, lighten, rgba, transparentize } from 'polished'; import type { ButtonProps } from './Button'; export const ButtonWrapper = styled.button<{ - btnType: ButtonProps['type']; + variant: ButtonProps['variant']; size: ButtonProps['size']; disabled: ButtonProps['disabled']; active: ButtonProps['active']; -}>(({ theme, btnType, size, disabled, active }) => ({ + iconOnly: ButtonProps['iconOnly']; +}>(({ theme, variant, size, disabled, active, iconOnly }) => ({ border: 0, cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', + gap: '6px', alignItems: 'center', + justifyContent: 'center', overflow: 'hidden', - padding: '0 16px', + // padding: iconOnly ? 0 : '0 16px', + padding: `${(() => { + if (!iconOnly && size === 'small') return '0 10px'; + if (!iconOnly && size === 'medium') return '0 12px'; + return 0; + })()}`, + width: `${(() => { + if (iconOnly && size === 'small') return '28px'; + if (iconOnly && size === 'medium') return '32px'; + return 'auto'; + })()}`, height: size === 'small' ? '28px' : '32px', position: 'relative', textAlign: 'center', @@ -30,41 +43,41 @@ export const ButtonWrapper = styled.button<{ fontWeight: theme.typography.weight.bold, lineHeight: '1', background: `${(() => { - if (btnType === 'primary') return theme.color.secondary; - if (btnType === 'secondary') return theme.button.background; - if (btnType === 'tertiary' && active) return theme.background.hoverable; + if (variant === 'primary') return theme.color.secondary; + if (variant === 'secondary') return theme.button.background; + if (variant === 'tertiary' && active) return theme.background.hoverable; return 'transparent'; })()}`, color: `${(() => { - if (btnType === 'primary') return theme.color.lightest; - if (btnType === 'secondary') return theme.input.color; - if (btnType === 'tertiary' && active) return theme.color.secondary; - if (btnType === 'tertiary') return theme.color.mediumdark; + if (variant === 'primary') return theme.color.lightest; + if (variant === 'secondary') return theme.input.color; + if (variant === 'tertiary' && active) return theme.color.secondary; + if (variant === 'tertiary') return theme.color.mediumdark; return theme.input.color; })()}`, - boxShadow: btnType === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', + boxShadow: variant === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', borderRadius: theme.input.borderRadius, '&:hover': { - color: btnType === 'tertiary' ? theme.color.secondary : null, + color: variant === 'tertiary' ? theme.color.secondary : null, background: `${(() => { let bgColor = theme.color.secondary; - if (btnType === 'primary') bgColor = theme.color.secondary; - if (btnType === 'secondary') bgColor = theme.button.background; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; - if (btnType === 'tertiary') return transparentize(0.86, theme.color.secondary); + if (variant === 'tertiary') return transparentize(0.86, theme.color.secondary); return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); })()}`, }, '&:active': { - color: btnType === 'tertiary' ? theme.color.secondary : null, + color: variant === 'tertiary' ? theme.color.secondary : null, background: `${(() => { let bgColor = theme.color.secondary; - if (btnType === 'primary') bgColor = theme.color.secondary; - if (btnType === 'secondary') bgColor = theme.button.background; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; - if (btnType === 'tertiary') return theme.background.hoverable; + if (variant === 'tertiary') return theme.background.hoverable; return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); })()}`, }, From 942d40c6f60c695789236493b6d4908a98cb3584 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 15:42:14 +0200 Subject: [PATCH 091/135] textarea size fix --- code/ui/components/src/form/input/input.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/ui/components/src/form/input/input.tsx b/code/ui/components/src/form/input/input.tsx index cc21c5447ad3..be29a74a4026 100644 --- a/code/ui/components/src/form/input/input.tsx +++ b/code/ui/components/src/form/input/input.tsx @@ -32,6 +32,8 @@ const styles = ({ theme }: { theme: Theme }): CSSObject => ({ fontSize: theme.typography.size.s2 - 1, lineHeight: '20px', padding: '6px 10px', // 32 + boxSizing: 'border-box', + height: 32, '&:focus': { boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, From 640423309c7210698cacb36b4a24bdb073305e7c Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 11 Jul 2023 14:57:02 +0100 Subject: [PATCH 092/135] Update CircleCi --- .circleci/config.yml | 1 + code/package.json | 2 ++ code/ui/experimental-ui/src/Button/styles.ts | 1 - 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4c67a2a010a0..a6a2bed8498b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -248,6 +248,7 @@ jobs: command: | cd code yarn storybook:ui:chromatic + yarn storybook:experimental-ui:chromatic yarn storybook:blocks:chromatic - report-workflow-on-failure - store_test_results: diff --git a/code/package.json b/code/package.json index 401ba280dd12..2376eb090ca6 100644 --- a/code/package.json +++ b/code/package.json @@ -50,6 +50,8 @@ "storybook:blocks:build": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:build", "storybook:blocks:chromatic": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:chromatic --project-token=${CHROMATIC_TOKEN_STORYBOOK_BLOCKS:-MISSING_PROJECT_TOKEN}", "storybook:experimental-ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/experimental-ui/.storybook", + "storybook:experimental-ui:build": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js build --config-dir ./ui/experimental-ui/.storybook", + "storybook:experimental-ui:chromatic": "yarn chromatic --build-script-name storybook:experimental-ui:build --storybook-config-dir ./ui/experimental-ui/.storybook --storybook-base-dir ./code --project-token=${CHROMATIC_TOKEN_STORYBOOK_EXPERIMENTAL_UI:-MISSING_PROJECT_TOKEN} --only-changed --exit-zero-on-changes --exit-once-uploaded", "storybook:ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/.storybook", "storybook:ui:build": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js build --config-dir ./ui/.storybook", "storybook:ui:chromatic": "yarn chromatic --build-script-name storybook:ui:build --storybook-config-dir ./ui/.storybook --storybook-base-dir ./code --project-token=${CHROMATIC_TOKEN_STORYBOOK_UI:-MISSING_PROJECT_TOKEN} --only-changed --exit-zero-on-changes --exit-once-uploaded", diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/experimental-ui/src/Button/styles.ts index e920278a17a5..5bc8dd401204 100644 --- a/code/ui/experimental-ui/src/Button/styles.ts +++ b/code/ui/experimental-ui/src/Button/styles.ts @@ -16,7 +16,6 @@ export const ButtonWrapper = styled.button<{ alignItems: 'center', justifyContent: 'center', overflow: 'hidden', - // padding: iconOnly ? 0 : '0 16px', padding: `${(() => { if (!iconOnly && size === 'small') return '0 10px'; if (!iconOnly && size === 'medium') return '0 12px'; From d722f4b9889bb4a419156d42993f6152b4b62022 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 16:57:12 +0200 Subject: [PATCH 093/135] move to types, move to utils --- code/lib/manager-api/src/modules/stories.ts | 15 +++------- code/lib/types/src/modules/api-stories.ts | 12 ++++++++ .../manager/src/components/sidebar/Tree.tsx | 29 +++++++------------ code/ui/manager/src/utils/status.tsx | 15 ++++++++++ 4 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 code/ui/manager/src/utils/status.tsx diff --git a/code/lib/manager-api/src/modules/stories.ts b/code/lib/manager-api/src/modules/stories.ts index 13954138a1b4..6018ccaa2e1a 100644 --- a/code/lib/manager-api/src/modules/stories.ts +++ b/code/lib/manager-api/src/modules/stories.ts @@ -18,6 +18,8 @@ import type { StoryPreparedPayload, DocsPreparedPayload, API_DocsEntry, + API_StatusState, + API_StatusUpdate, } from '@storybook/types'; import { PRELOAD_ENTRIES, @@ -61,22 +63,13 @@ type ViewMode = 'story' | 'info' | 'settings' | string | undefined; type StoryUpdate = Partial< Pick<API_StoryEntry, 'prepared' | 'parameters' | 'initialArgs' | 'argTypes' | 'args'> >; -interface StatusObject { - status: 'pending' | 'success' | 'error' | 'warn' | 'unknown'; - title: string; - description: string; - data?: any; -} - -type StatusState = Record<StoryId, Record<string, StatusObject>>; -type StatusUpdate = Record<StoryId, StatusObject>; type DocsUpdate = Partial<Pick<API_DocsEntry, 'prepared' | 'parameters'>>; export interface SubState extends API_LoadedRefData { storyId: StoryId; viewMode: ViewMode; - status: StatusState; + status: API_StatusState; } export interface SubAPI { @@ -264,7 +257,7 @@ export interface SubAPI { * @param {StatusUpdate} update - An object containing the updated status information. * @returns {Promise<void>} A promise that resolves when the status has been updated. */ - experimental_updateStatus: (addonId: string, update: StatusUpdate) => Promise<void>; + experimental_updateStatus: (addonId: string, update: API_StatusUpdate) => Promise<void>; } const removedOptions = ['enableShortcuts', 'theme', 'showRoots']; diff --git a/code/lib/types/src/modules/api-stories.ts b/code/lib/types/src/modules/api-stories.ts index 7cfd32b22284..4853aa9a39cb 100644 --- a/code/lib/types/src/modules/api-stories.ts +++ b/code/lib/types/src/modules/api-stories.ts @@ -172,3 +172,15 @@ export interface API_Versions { next?: API_Version; current?: API_Version; } + +export type API_StatusValue = 'pending' | 'success' | 'error' | 'warn' | 'unknown'; + +export interface API_StatusObject { + status: API_StatusValue; + title: string; + description: string; + data?: any; +} + +export type API_StatusState = Record<StoryId, Record<string, API_StatusObject>>; +export type API_StatusUpdate = Record<StoryId, API_StatusObject>; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index ebc84e6eca42..19172923952e 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -10,7 +10,7 @@ import type { import { styled } from '@storybook/theming'; import { Button, Icons, TooltipLinkList, WithTooltip } from '@storybook/components'; import { transparentize } from 'polished'; -import type { ComponentProps, MutableRefObject } from 'react'; +import type { MutableRefObject } from 'react'; import React, { useCallback, useMemo, useRef } from 'react'; import { PRELOAD_ENTRIES } from '@storybook/core-events'; @@ -29,19 +29,7 @@ import { useExpanded } from './useExpanded'; import type { Highlight, Item } from './types'; import { isStoryHoistable, createId, getAncestorIds, getDescendantIds, getLink } from './utils'; - -type StoryStateKey = State['status'][keyof State['status']][0]['status']; -const order: StoryStateKey[] = ['unknown', 'pending', 'success', 'warn', 'error']; -const mapping: Record< - StoryStateKey, - [ComponentProps<typeof Icons>['icon'] | null, string | null, string | null] -> = { - unknown: [null, null, null], - pending: ['watch', 'currentColor', 'currentColor'], - success: ['passed', 'green', 'currentColor'], - warn: ['changed', 'orange', '#A15C20'], - error: ['failed', 'red', 'brown'], -}; +import { statusPriority, statusMapping } from '../../utils/status'; export const Action = styled.button(({ theme }) => ({ display: 'inline-flex', @@ -215,12 +203,12 @@ const Node = React.memo<NodeProps>(function Node({ const statusIcon = Object.values(status || {}).reduce< typeof status[keyof typeof status]['status'] >((acc, s) => { - if (order.indexOf(s.status) > order.indexOf(acc)) { + if (statusPriority.indexOf(s.status) > statusPriority.indexOf(acc)) { return s.status; } return acc; }, 'unknown'); - const [icon, iconColor, textColor] = mapping[statusIcon]; + const [icon, iconColor, textColor] = statusMapping[statusIcon]; return ( <LeafNodeStyleWrapper @@ -262,7 +250,10 @@ const Node = React.memo<NodeProps>(function Node({ title: v.title, description: v.description, right: ( - <Icons icon={mapping[v.status][0]} style={{ color: mapping[v.status][1] }} /> + <Icons + icon={statusMapping[v.status][0]} + style={{ color: statusMapping[v.status][1] }} + /> ), }))} /> @@ -519,7 +510,7 @@ export const Tree = React.memo<{ const combinedStatus = leafs .flatMap((story) => Object.values(status?.[story.id] || {})) .reduce<typeof status[keyof typeof status]['status']['status']>((sacc, s) => { - if (order.indexOf(s.status) > order.indexOf(sacc)) { + if (statusPriority.indexOf(s.status) > statusPriority.indexOf(sacc)) { return s.status; } return sacc; @@ -527,7 +518,7 @@ export const Tree = React.memo<{ if (combinedStatus) { // eslint-disable-next-line prefer-destructuring - acc[item.id] = mapping[combinedStatus][2]; + acc[item.id] = statusMapping[combinedStatus][2]; } } return acc; diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx new file mode 100644 index 000000000000..fbebff941696 --- /dev/null +++ b/code/ui/manager/src/utils/status.tsx @@ -0,0 +1,15 @@ +import type { Icons } from '@storybook/components'; +import type { ComponentProps } from 'react'; +import type { API_StatusValue } from '@storybook/types'; + +export const statusPriority: API_StatusValue[] = ['unknown', 'pending', 'success', 'warn', 'error']; +export const statusMapping: Record< + API_StatusValue, + [ComponentProps<typeof Icons>['icon'] | null, string | null, string | null] +> = { + unknown: [null, null, null], + pending: ['watch', 'currentColor', 'currentColor'], + success: ['passed', 'green', 'currentColor'], + warn: ['changed', 'orange', '#A15C20'], + error: ['failed', 'red', 'brown'], +}; From 1bfd47174c562f81c8bc944560ebde1550367354 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 17:58:35 +0200 Subject: [PATCH 094/135] refactor --- .../src/components/sidebar/RefIndicator.tsx | 2 +- .../manager/src/components/sidebar/Refs.tsx | 3 +- .../manager/src/components/sidebar/Search.tsx | 2 +- .../sidebar/SearchResults.stories.tsx | 2 +- .../src/components/sidebar/SearchResults.tsx | 2 +- .../manager/src/components/sidebar/Tree.tsx | 85 +++++++------------ .../src/components/sidebar/useExpanded.ts | 2 +- .../src/components/sidebar/useHighlighted.ts | 3 +- code/ui/manager/src/utils/status.tsx | 38 ++++++++- .../utils.test.js => utils/tree.test.js} | 4 +- .../sidebar/utils.ts => utils/tree.ts} | 4 +- 11 files changed, 80 insertions(+), 67 deletions(-) rename code/ui/manager/src/{components/sidebar/utils.test.js => utils/tree.test.js} (96%) rename code/ui/manager/src/{components/sidebar/utils.ts => utils/tree.ts} (96%) diff --git a/code/ui/manager/src/components/sidebar/RefIndicator.tsx b/code/ui/manager/src/components/sidebar/RefIndicator.tsx index d9c81f6398c4..a46ba2c89642 100644 --- a/code/ui/manager/src/components/sidebar/RefIndicator.tsx +++ b/code/ui/manager/src/components/sidebar/RefIndicator.tsx @@ -10,7 +10,7 @@ import { useStorybookApi } from '@storybook/manager-api'; import type { RefType } from './types'; -import type { getStateType } from './utils'; +import type { getStateType } from '../../utils/tree'; const { document, window: globalWindow } = global; diff --git a/code/ui/manager/src/components/sidebar/Refs.tsx b/code/ui/manager/src/components/sidebar/Refs.tsx index 8b1ea0f31c8a..a7696ee696ca 100644 --- a/code/ui/manager/src/components/sidebar/Refs.tsx +++ b/code/ui/manager/src/components/sidebar/Refs.tsx @@ -8,6 +8,7 @@ import { transparentize } from 'polished'; import { AuthBlock, ErrorBlock, LoaderBlock, EmptyBlock } from './RefBlocks'; import { RefIndicator } from './RefIndicator'; + // eslint-disable-next-line import/no-cycle import { Tree } from './Tree'; import { CollapseIcon } from './TreeNode'; @@ -15,7 +16,7 @@ import { CollapseIcon } from './TreeNode'; import { DEFAULT_REF_ID } from './Sidebar'; import type { Highlight, RefType } from './types'; -import { getStateType } from './utils'; +import { getStateType } from '../../utils/tree'; export interface RefProps { isLoading: boolean; diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index 9bd4b6839954..a7fc12d7588e 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -20,7 +20,7 @@ import type { } from './types'; import { isSearchResult, isExpandType, isClearType, isCloseType } from './types'; -import { scrollIntoView, searchItem } from './utils'; +import { scrollIntoView, searchItem } from '../../utils/tree'; const { document } = global; diff --git a/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx b/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx index d2c72e0c721f..c92ef644cc48 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.stories.tsx @@ -4,7 +4,7 @@ import type { StoriesHash } from '@storybook/manager-api'; import { mockDataset } from './mockdata'; import { SearchResults } from './SearchResults'; import type { CombinedDataset, Refs, SearchItem } from './types'; -import { searchItem } from './utils'; +import { searchItem } from '../../utils/tree'; export default { component: SearchResults, diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index 882d77a6f1f5..455a2d6841c9 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -11,7 +11,7 @@ import { ComponentNode, DocumentNode, Path, RootNode, StoryNode } from './TreeNo import type { Match, DownshiftItem, SearchResult } from './types'; import { isCloseType, isClearType, isExpandType } from './types'; // eslint-disable-next-line import/no-cycle -import { getLink } from './utils'; +import { getLink } from '../../utils/tree'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; const { document } = global; diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 19172923952e..10d791b248c7 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -28,8 +28,14 @@ import type { ExpandAction, ExpandedState } from './useExpanded'; import { useExpanded } from './useExpanded'; import type { Highlight, Item } from './types'; -import { isStoryHoistable, createId, getAncestorIds, getDescendantIds, getLink } from './utils'; -import { statusPriority, statusMapping } from '../../utils/status'; +import { + isStoryHoistable, + createId, + getAncestorIds, + getDescendantIds, + getLink, +} from '../../utils/tree'; +import { statusMapping, getHighestStatus, getGroupStatus } from '../../utils/status'; export const Action = styled.button(({ theme }) => ({ display: 'inline-flex', @@ -200,15 +206,8 @@ const Node = React.memo<NodeProps>(function Node({ if (item.type === 'story' || item.type === 'docs') { const LeafNode = item.type === 'docs' ? DocumentNode : StoryNode; - const statusIcon = Object.values(status || {}).reduce< - typeof status[keyof typeof status]['status'] - >((acc, s) => { - if (statusPriority.indexOf(s.status) > statusPriority.indexOf(acc)) { - return s.status; - } - return acc; - }, 'unknown'); - const [icon, iconColor, textColor] = statusMapping[statusIcon]; + const statusValue = getHighestStatus(Object.values(status || {}).map((s) => s.status)); + const [icon, iconColor, textColor] = statusMapping[statusValue]; return ( <LeafNodeStyleWrapper @@ -242,23 +241,21 @@ const Node = React.memo<NodeProps>(function Node({ {icon ? ( <WithTooltip placement="top" - tooltip={() => { - return ( - <TooltipLinkList - links={Object.entries(status || {}).map(([k, v]) => ({ - id: k, - title: v.title, - description: v.description, - right: ( - <Icons - icon={statusMapping[v.status][0]} - style={{ color: statusMapping[v.status][1] }} - /> - ), - }))} - /> - ); - }} + tooltip={() => ( + <TooltipLinkList + links={Object.entries(status || {}).map(([k, v]) => ({ + id: k, + title: v.title, + description: v.description, + right: ( + <Icons + icon={statusMapping[v.status][0]} + style={{ color: statusMapping[v.status][1] }} + /> + ), + }))} + /> + )} closeOnOutsideClick > <Icons icon={icon} style={{ color: iconColor }} /> @@ -452,9 +449,10 @@ export const Tree = React.memo<{ }, [data]); // Omit single-story components from the list of nodes. - const collapsedItems = useMemo(() => { - return Object.keys(data).filter((id) => !singleStoryComponentIds.includes(id)); - }, [singleStoryComponentIds]); + const collapsedItems = useMemo( + () => Object.keys(data).filter((id) => !singleStoryComponentIds.includes(id)), + [singleStoryComponentIds] + ); // Rewrite the dataset to place the child story in place of the component. const collapsedData = useMemo(() => { @@ -500,30 +498,7 @@ export const Tree = React.memo<{ onSelectStoryId, }); - const groupStatus = useMemo(() => { - return Object.values(collapsedData).reduce<Record<string, string>>((acc, item) => { - if (item.type === 'group' || item.type === 'component') { - const leafs = getDescendantIds(collapsedData, item.id, false) - .map((id) => collapsedData[id]) - .filter((i) => i.type === 'story'); - - const combinedStatus = leafs - .flatMap((story) => Object.values(status?.[story.id] || {})) - .reduce<typeof status[keyof typeof status]['status']['status']>((sacc, s) => { - if (statusPriority.indexOf(s.status) > statusPriority.indexOf(sacc)) { - return s.status; - } - return sacc; - }, 'unknown'); - - if (combinedStatus) { - // eslint-disable-next-line prefer-destructuring - acc[item.id] = statusMapping[combinedStatus][2]; - } - } - return acc; - }, {}); - }, [collapsedData, status]); + const groupStatus = useMemo(() => getGroupStatus(collapsedData, status), [collapsedData, status]); return ( <Container ref={containerRef} hasOrphans={isMain && orphanIds.length > 0}> diff --git a/code/ui/manager/src/components/sidebar/useExpanded.ts b/code/ui/manager/src/components/sidebar/useExpanded.ts index 6de67a1e9b91..66e654f66a24 100644 --- a/code/ui/manager/src/components/sidebar/useExpanded.ts +++ b/code/ui/manager/src/components/sidebar/useExpanded.ts @@ -9,7 +9,7 @@ import { matchesKeyCode, matchesModifiers } from '../../keybinding'; import type { Highlight } from './types'; // eslint-disable-next-line import/no-cycle -import { isAncestor, getAncestorIds, getDescendantIds, scrollIntoView } from './utils'; +import { isAncestor, getAncestorIds, getDescendantIds, scrollIntoView } from '../../utils/tree'; const { document } = global; diff --git a/code/ui/manager/src/components/sidebar/useHighlighted.ts b/code/ui/manager/src/components/sidebar/useHighlighted.ts index 5ee649081a61..ff5d5704d983 100644 --- a/code/ui/manager/src/components/sidebar/useHighlighted.ts +++ b/code/ui/manager/src/components/sidebar/useHighlighted.ts @@ -6,8 +6,9 @@ import { PRELOAD_ENTRIES } from '@storybook/core-events'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; import type { CombinedDataset, Highlight, Selection } from './types'; + // eslint-disable-next-line import/no-cycle -import { cycle, isAncestor, scrollIntoView } from './utils'; +import { cycle, isAncestor, scrollIntoView } from '../../utils/tree'; const { document, window: globalWindow } = global; diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx index fbebff941696..17e6f34fbdee 100644 --- a/code/ui/manager/src/utils/status.tsx +++ b/code/ui/manager/src/utils/status.tsx @@ -1,6 +1,8 @@ import type { Icons } from '@storybook/components'; import type { ComponentProps } from 'react'; -import type { API_StatusValue } from '@storybook/types'; +import type { API_StatusState, API_StatusValue } from '@storybook/types'; +// eslint-disable-next-line import/no-cycle +import { getDescendantIds } from './tree'; export const statusPriority: API_StatusValue[] = ['unknown', 'pending', 'success', 'warn', 'error']; export const statusMapping: Record< @@ -13,3 +15,37 @@ export const statusMapping: Record< warn: ['changed', 'orange', '#A15C20'], error: ['failed', 'red', 'brown'], }; + +export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue => { + return statusPriority.reduce( + (acc, status) => (statuses.includes(status) ? status : acc), + 'unknown' + ); +}; + +export function getGroupStatus( + collapsedData: { + [ + x: string + ]: import('/Users/me/Projects/Storybook/core/code/lib/manager-api/dist/index').HashEntry; + }, + status: API_StatusState +): Record<string, string> { + return Object.values(collapsedData).reduce<Record<string, string>>((acc, item) => { + if (item.type === 'group' || item.type === 'component') { + const leafs = getDescendantIds(collapsedData, item.id, false) + .map((id) => collapsedData[id]) + .filter((i) => i.type === 'story'); + + const combinedStatus = getHighestStatus( + leafs.flatMap((story) => Object.values(status?.[story.id] || {})).map((s) => s.status) + ); + + if (combinedStatus) { + // eslint-disable-next-line prefer-destructuring + acc[item.id] = statusMapping[combinedStatus][2]; + } + } + return acc; + }, {}); +} diff --git a/code/ui/manager/src/components/sidebar/utils.test.js b/code/ui/manager/src/utils/tree.test.js similarity index 96% rename from code/ui/manager/src/components/sidebar/utils.test.js rename to code/ui/manager/src/utils/tree.test.js index 7be74eb145b6..3481e21f6c29 100644 --- a/code/ui/manager/src/components/sidebar/utils.test.js +++ b/code/ui/manager/src/utils/tree.test.js @@ -1,6 +1,6 @@ -import { mockDataset, mockExpanded, mockSelected } from './mockdata'; +import { mockDataset, mockExpanded, mockSelected } from '../components/sidebar/mockdata'; -import * as utils from './utils'; +import * as utils from './tree'; const noRoot = { dataset: mockDataset.noRoot, diff --git a/code/ui/manager/src/components/sidebar/utils.ts b/code/ui/manager/src/utils/tree.ts similarity index 96% rename from code/ui/manager/src/components/sidebar/utils.ts rename to code/ui/manager/src/utils/tree.ts index e751ef5e9bd8..d650362afcf3 100644 --- a/code/ui/manager/src/components/sidebar/utils.ts +++ b/code/ui/manager/src/utils/tree.ts @@ -4,8 +4,8 @@ import type { SyntheticEvent } from 'react'; import type { HashEntry, IndexHash } from '@storybook/manager-api'; // eslint-disable-next-line import/no-cycle -import { DEFAULT_REF_ID } from './Sidebar'; -import type { Item, RefType, Dataset, SearchItem } from './types'; +import { DEFAULT_REF_ID } from '../components/sidebar/Sidebar'; +import type { Item, RefType, Dataset, SearchItem } from '../components/sidebar/types'; const { document, window: globalWindow } = global; From ff2e4cc1afc5d50269562c034873e487f7b060ae Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 21:40:49 +0200 Subject: [PATCH 095/135] add tests --- .../src/components/sidebar/mockdata.ts | 4 +- code/ui/manager/src/utils/status.test.ts | 50 +++++++++++++++++++ code/ui/manager/src/utils/status.tsx | 8 ++- 3 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 code/ui/manager/src/utils/status.test.ts diff --git a/code/ui/manager/src/components/sidebar/mockdata.ts b/code/ui/manager/src/components/sidebar/mockdata.ts index 6aa339ca7198..e8155fb44bd8 100644 --- a/code/ui/manager/src/components/sidebar/mockdata.ts +++ b/code/ui/manager/src/components/sidebar/mockdata.ts @@ -1,6 +1,6 @@ -import type { StoriesHash } from '@storybook/manager-api'; +import type { API_HashEntry } from '@storybook/types'; -export type MockDataSet = Record<string, Record<string, Partial<StoriesHash[0]>>>; +export type MockDataSet = Record<string, Record<string, Partial<API_HashEntry>>>; export const mockDataset: MockDataSet = { withRoot: { diff --git a/code/ui/manager/src/utils/status.test.ts b/code/ui/manager/src/utils/status.test.ts new file mode 100644 index 000000000000..7d10a62cf125 --- /dev/null +++ b/code/ui/manager/src/utils/status.test.ts @@ -0,0 +1,50 @@ +import { getHighestStatus, getGroupStatus } from './status'; +import { mockDataset } from '../components/sidebar/mockdata'; + +describe('getHighestStatus', () => { + test('default value', () => { + expect(getHighestStatus([])).toBe('unknown'); + }); + test('should return the highest status', () => { + expect(getHighestStatus(['success', 'error', 'warn', 'pending'])).toBe('error'); + expect(getHighestStatus(['error', 'error', 'warn', 'pending'])).toBe('error'); + expect(getHighestStatus(['warn', 'pending'])).toBe('warn'); + }); +}); + +describe('getGroupStatus', () => { + test('empty case', () => { + expect(getGroupStatus({}, {})).toEqual({}); + }); + test('should return a color', () => { + expect( + getGroupStatus(mockDataset.withRoot, { + 'group-1--child-b1': { a: { status: 'warn', description: '', title: '' } }, + }) + ).toMatchInlineSnapshot(` + Object { + "group-1": "#A15C20", + "root-1-child-a1": null, + "root-1-child-a2": null, + "root-3-child-a2": null, + } + `); + }); + test('should return the highest status', () => { + expect( + getGroupStatus(mockDataset.withRoot, { + 'group-1--child-b1': { + a: { status: 'warn', description: '', title: '' }, + b: { status: 'error', description: '', title: '' }, + }, + }) + ).toMatchInlineSnapshot(` + Object { + "group-1": "brown", + "root-1-child-a1": null, + "root-1-child-a2": null, + "root-3-child-a2": null, + } + `); + }); +}); diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx index 17e6f34fbdee..4175f11bf35c 100644 --- a/code/ui/manager/src/utils/status.tsx +++ b/code/ui/manager/src/utils/status.tsx @@ -1,6 +1,6 @@ import type { Icons } from '@storybook/components'; import type { ComponentProps } from 'react'; -import type { API_StatusState, API_StatusValue } from '@storybook/types'; +import type { API_HashEntry, API_StatusState, API_StatusValue } from '@storybook/types'; // eslint-disable-next-line import/no-cycle import { getDescendantIds } from './tree'; @@ -25,15 +25,13 @@ export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue = export function getGroupStatus( collapsedData: { - [ - x: string - ]: import('/Users/me/Projects/Storybook/core/code/lib/manager-api/dist/index').HashEntry; + [x: string]: Partial<API_HashEntry>; }, status: API_StatusState ): Record<string, string> { return Object.values(collapsedData).reduce<Record<string, string>>((acc, item) => { if (item.type === 'group' || item.type === 'component') { - const leafs = getDescendantIds(collapsedData, item.id, false) + const leafs = getDescendantIds(collapsedData as any, item.id, false) .map((id) => collapsedData[id]) .filter((i) => i.type === 'story'); From 1a5be45e5bf27c8ae1c83c57ca0f702546b407a4 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 11 Jul 2023 23:52:47 +0200 Subject: [PATCH 096/135] fix file input height --- code/ui/components/src/form/input/input.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/ui/components/src/form/input/input.tsx b/code/ui/components/src/form/input/input.tsx index be29a74a4026..83d99e4d8a8d 100644 --- a/code/ui/components/src/form/input/input.tsx +++ b/code/ui/components/src/form/input/input.tsx @@ -35,6 +35,10 @@ const styles = ({ theme }: { theme: Theme }): CSSObject => ({ boxSizing: 'border-box', height: 32, + '&[type="file"]': { + height: 'auto', + }, + '&:focus': { boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, outline: 'none', From 0ecb3f4e975d60cec4e2e8c4780893acfad20b22 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 10:46:46 +0200 Subject: [PATCH 097/135] make color for search text item of document correct --- code/ui/manager/src/components/sidebar/TreeNode.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/code/ui/manager/src/components/sidebar/TreeNode.tsx b/code/ui/manager/src/components/sidebar/TreeNode.tsx index dcdafdb8d025..9768c0cf10a7 100644 --- a/code/ui/manager/src/components/sidebar/TreeNode.tsx +++ b/code/ui/manager/src/components/sidebar/TreeNode.tsx @@ -82,6 +82,7 @@ const BranchNode = styled.button<{ const LeafNode = styled.a<{ depth?: number }>(({ theme, depth = 0 }) => ({ cursor: 'pointer', + color: 'inherit', display: 'flex', flex: 1, alignItems: 'start', From ec36ee42273d4d01103fd0a966606a782c6e27f8 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 12:09:38 +0200 Subject: [PATCH 098/135] move ui/components/src into ui/components/src/legacy move @storybook/experimental-ui/src into ui/components/src/new remove @storybook/experimental-ui --- code/ui/components/package.json | 26 +- code/ui/components/src/index.ts | 101 +------ code/ui/components/src/legacy.ts | 102 +++++++ .../ActionBar/ActionBar.stories.tsx | 0 .../src/{ => legacy}/ActionBar/ActionBar.tsx | 0 .../src/{ => legacy}/Badge/Badge.stories.tsx | 0 .../src/{ => legacy}/Badge/Badge.tsx | 0 .../{ => legacy}/Button/Button.stories.tsx | 0 .../src/{ => legacy}/Button/Button.tsx | 0 .../src/{ => legacy}/Colors/SideBySide.tsx | 0 .../src/{ => legacy}/Colors/colorpalette.mdx | 0 .../ErrorFormatter/ErrorFormatter.stories.tsx | 0 .../ErrorFormatter/ErrorFormatter.tsx | 0 .../{ => legacy}/Loader/Loader.stories.tsx | 0 .../src/{ => legacy}/Loader/Loader.tsx | 0 .../ScrollArea/GlobalScrollAreaStyles.tsx | 0 .../ScrollArea/OverlayScrollbars.tsx | 0 .../ScrollArea/ScrollArea.stories.tsx | 0 .../{ => legacy}/ScrollArea/ScrollArea.tsx | 0 .../src/{ => legacy}/Zoom/Zoom.stories.tsx | 0 .../components/src/{ => legacy}/Zoom/Zoom.tsx | 0 .../src/{ => legacy}/Zoom/ZoomElement.tsx | 0 .../src/{ => legacy}/Zoom/ZoomIFrame.tsx | 0 .../{ => legacy}/addon-panel/addon-panel.tsx | 0 .../components/src/{ => legacy}/bar/bar.tsx | 0 .../src/{ => legacy}/bar/button.stories.tsx | 0 .../src/{ => legacy}/bar/button.tsx | 0 .../src/{ => legacy}/bar/separator.tsx | 0 .../brand/StorybookIcon.stories.tsx | 0 .../src/{ => legacy}/brand/StorybookIcon.tsx | 0 .../brand/StorybookLogo.stories.tsx | 0 .../src/{ => legacy}/brand/StorybookLogo.tsx | 0 .../{ => legacy}/clipboard/ClipboardCode.tsx | 0 .../src/{ => legacy}/form/field/field.tsx | 0 .../src/{ => legacy}/form/form.stories.tsx | 0 .../src/{ => legacy}/form/index.tsx | 0 .../src/{ => legacy}/form/input/input.tsx | 0 .../src/{ => legacy}/icon/icon.stories.tsx | 0 .../components/src/{ => legacy}/icon/icon.tsx | 0 .../src/{ => legacy}/icon/icons.tsx | 0 .../components/src/{ => legacy}/icon/svg.tsx | 0 .../placeholder/placeholder.stories.tsx | 0 .../{ => legacy}/placeholder/placeholder.tsx | 0 .../src/{ => legacy}/shared/animation.ts | 0 .../{ => legacy}/spaced/Spaced.stories.tsx | 0 .../src/{ => legacy}/spaced/Spaced.tsx | 0 .../syntaxhighlighter/formatter.test.ts | 0 .../syntaxhighlighter/formatter.ts | 0 .../lazy-syntaxhighlighter.tsx | 0 .../syntaxhighlighter-types.ts | 0 .../syntaxhighlighter.stories.tsx | 0 .../syntaxhighlighter/syntaxhighlighter.tsx | 0 .../src/{ => legacy}/tabs/tabs.helpers.tsx | 0 .../src/{ => legacy}/tabs/tabs.hooks.tsx | 0 .../src/{ => legacy}/tabs/tabs.stories.tsx | 0 .../components/src/{ => legacy}/tabs/tabs.tsx | 0 .../{ => legacy}/tooltip/ListItem.stories.tsx | 0 .../src/{ => legacy}/tooltip/ListItem.tsx | 0 .../{ => legacy}/tooltip/Tooltip.stories.tsx | 0 .../src/{ => legacy}/tooltip/Tooltip.tsx | 0 .../tooltip/TooltipLinkList.stories.tsx | 0 .../{ => legacy}/tooltip/TooltipLinkList.tsx | 0 .../tooltip/TooltipMessage.stories.tsx | 0 .../{ => legacy}/tooltip/TooltipMessage.tsx | 0 .../tooltip/TooltipNote.stories.tsx | 0 .../src/{ => legacy}/tooltip/TooltipNote.tsx | 0 .../tooltip/WithTooltip.stories.tsx | 0 .../src/{ => legacy}/tooltip/WithTooltip.tsx | 0 .../{ => legacy}/tooltip/assets/ellipse.png | Bin .../{ => legacy}/tooltip/lazy-WithTooltip.tsx | 0 .../typography/DocumentFormatting.tsx | 0 .../typography/DocumentFormattingSample.mdx | 0 .../typography/DocumentWrapper.stories.tsx | 0 .../typography/DocumentWrapper.tsx | 0 .../{ => legacy}/typography/ResetWrapper.tsx | 0 .../{ => legacy}/typography/components.tsx | 0 .../{ => legacy}/typography/elements/A.tsx | 0 .../typography/elements/Blockquote.tsx | 0 .../{ => legacy}/typography/elements/Code.tsx | 0 .../{ => legacy}/typography/elements/DL.tsx | 0 .../{ => legacy}/typography/elements/Div.tsx | 0 .../{ => legacy}/typography/elements/H1.tsx | 0 .../{ => legacy}/typography/elements/H2.tsx | 0 .../{ => legacy}/typography/elements/H3.tsx | 0 .../{ => legacy}/typography/elements/H4.tsx | 0 .../{ => legacy}/typography/elements/H5.tsx | 0 .../{ => legacy}/typography/elements/H6.tsx | 0 .../{ => legacy}/typography/elements/HR.tsx | 0 .../{ => legacy}/typography/elements/Img.tsx | 0 .../{ => legacy}/typography/elements/LI.tsx | 0 .../{ => legacy}/typography/elements/Link.tsx | 0 .../{ => legacy}/typography/elements/OL.tsx | 0 .../{ => legacy}/typography/elements/P.tsx | 0 .../{ => legacy}/typography/elements/Pre.tsx | 0 .../{ => legacy}/typography/elements/Span.tsx | 0 .../{ => legacy}/typography/elements/TT.tsx | 0 .../typography/elements/Table.tsx | 0 .../{ => legacy}/typography/elements/UL.tsx | 0 .../{ => legacy}/typography/lib/common.tsx | 0 .../typography/lib/isReactChildString.tsx | 0 .../typography/link/link.stories.tsx | 0 .../typography/link/link.test.tsx | 0 .../src/{ => legacy}/typography/link/link.tsx | 0 .../typography/typography.stories.mdx | 0 .../src/{ => legacy}/utils/getStoryHref.ts | 0 .../src/new}/Button/Button.stories.tsx | 0 .../src/new}/Button/Button.tsx | 0 .../src/new}/Button/styles.ts | 0 code/ui/experimental-ui/.storybook/main.ts | 38 --- .../ui/experimental-ui/.storybook/preview.tsx | 270 ------------------ code/ui/experimental-ui/README.md | 5 - code/ui/experimental-ui/jest.config.js | 7 - code/ui/experimental-ui/package.json | 76 ----- code/ui/experimental-ui/tsconfig.json | 8 - code/ui/manager/src/globals/exports.ts | 1 + code/ui/manager/src/globals/runtime.ts | 2 + code/ui/manager/src/globals/types.ts | 1 + 117 files changed, 135 insertions(+), 502 deletions(-) create mode 100644 code/ui/components/src/legacy.ts rename code/ui/components/src/{ => legacy}/ActionBar/ActionBar.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/ActionBar/ActionBar.tsx (100%) rename code/ui/components/src/{ => legacy}/Badge/Badge.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/Badge/Badge.tsx (100%) rename code/ui/components/src/{ => legacy}/Button/Button.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/Button/Button.tsx (100%) rename code/ui/components/src/{ => legacy}/Colors/SideBySide.tsx (100%) rename code/ui/components/src/{ => legacy}/Colors/colorpalette.mdx (100%) rename code/ui/components/src/{ => legacy}/ErrorFormatter/ErrorFormatter.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/ErrorFormatter/ErrorFormatter.tsx (100%) rename code/ui/components/src/{ => legacy}/Loader/Loader.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/Loader/Loader.tsx (100%) rename code/ui/components/src/{ => legacy}/ScrollArea/GlobalScrollAreaStyles.tsx (100%) rename code/ui/components/src/{ => legacy}/ScrollArea/OverlayScrollbars.tsx (100%) rename code/ui/components/src/{ => legacy}/ScrollArea/ScrollArea.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/ScrollArea/ScrollArea.tsx (100%) rename code/ui/components/src/{ => legacy}/Zoom/Zoom.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/Zoom/Zoom.tsx (100%) rename code/ui/components/src/{ => legacy}/Zoom/ZoomElement.tsx (100%) rename code/ui/components/src/{ => legacy}/Zoom/ZoomIFrame.tsx (100%) rename code/ui/components/src/{ => legacy}/addon-panel/addon-panel.tsx (100%) rename code/ui/components/src/{ => legacy}/bar/bar.tsx (100%) rename code/ui/components/src/{ => legacy}/bar/button.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/bar/button.tsx (100%) rename code/ui/components/src/{ => legacy}/bar/separator.tsx (100%) rename code/ui/components/src/{ => legacy}/brand/StorybookIcon.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/brand/StorybookIcon.tsx (100%) rename code/ui/components/src/{ => legacy}/brand/StorybookLogo.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/brand/StorybookLogo.tsx (100%) rename code/ui/components/src/{ => legacy}/clipboard/ClipboardCode.tsx (100%) rename code/ui/components/src/{ => legacy}/form/field/field.tsx (100%) rename code/ui/components/src/{ => legacy}/form/form.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/form/index.tsx (100%) rename code/ui/components/src/{ => legacy}/form/input/input.tsx (100%) rename code/ui/components/src/{ => legacy}/icon/icon.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/icon/icon.tsx (100%) rename code/ui/components/src/{ => legacy}/icon/icons.tsx (100%) rename code/ui/components/src/{ => legacy}/icon/svg.tsx (100%) rename code/ui/components/src/{ => legacy}/placeholder/placeholder.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/placeholder/placeholder.tsx (100%) rename code/ui/components/src/{ => legacy}/shared/animation.ts (100%) rename code/ui/components/src/{ => legacy}/spaced/Spaced.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/spaced/Spaced.tsx (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/formatter.test.ts (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/formatter.ts (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/lazy-syntaxhighlighter.tsx (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/syntaxhighlighter-types.ts (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/syntaxhighlighter.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/syntaxhighlighter/syntaxhighlighter.tsx (100%) rename code/ui/components/src/{ => legacy}/tabs/tabs.helpers.tsx (100%) rename code/ui/components/src/{ => legacy}/tabs/tabs.hooks.tsx (100%) rename code/ui/components/src/{ => legacy}/tabs/tabs.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tabs/tabs.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/ListItem.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/ListItem.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/Tooltip.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/Tooltip.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipLinkList.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipLinkList.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipMessage.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipMessage.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipNote.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/TooltipNote.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/WithTooltip.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/WithTooltip.tsx (100%) rename code/ui/components/src/{ => legacy}/tooltip/assets/ellipse.png (100%) rename code/ui/components/src/{ => legacy}/tooltip/lazy-WithTooltip.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/DocumentFormatting.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/DocumentFormattingSample.mdx (100%) rename code/ui/components/src/{ => legacy}/typography/DocumentWrapper.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/DocumentWrapper.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/ResetWrapper.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/components.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/A.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Blockquote.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Code.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/DL.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Div.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H1.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H2.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H3.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H4.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H5.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/H6.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/HR.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Img.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/LI.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Link.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/OL.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/P.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Pre.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Span.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/TT.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/Table.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/elements/UL.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/lib/common.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/lib/isReactChildString.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/link/link.stories.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/link/link.test.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/link/link.tsx (100%) rename code/ui/components/src/{ => legacy}/typography/typography.stories.mdx (100%) rename code/ui/components/src/{ => legacy}/utils/getStoryHref.ts (100%) rename code/ui/{experimental-ui/src => components/src/new}/Button/Button.stories.tsx (100%) rename code/ui/{experimental-ui/src => components/src/new}/Button/Button.tsx (100%) rename code/ui/{experimental-ui/src => components/src/new}/Button/styles.ts (100%) delete mode 100644 code/ui/experimental-ui/.storybook/main.ts delete mode 100644 code/ui/experimental-ui/.storybook/preview.tsx delete mode 100644 code/ui/experimental-ui/README.md delete mode 100644 code/ui/experimental-ui/jest.config.js delete mode 100644 code/ui/experimental-ui/package.json delete mode 100644 code/ui/experimental-ui/tsconfig.json diff --git a/code/ui/components/package.json b/code/ui/components/package.json index a2d02b6f41ac..a1f0a6c33413 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -22,6 +22,12 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/legacy.d.ts", + "node": "./dist/legacy.js", + "require": "./dist/legacy.js", + "import": "./dist/legacy.mjs" + }, + "./experimental": { "types": "./dist/index.d.ts", "node": "./dist/index.js", "require": "./dist/index.js", @@ -34,9 +40,22 @@ }, "./package.json": "./package.json" }, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", + "main": "dist/legacy.js", + "module": "dist/legacy.mjs", + "types": "dist/legacy.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/legacy.d.ts" + ], + "html": [ + "dist/html.d.ts" + ], + "experimental": [ + "dist/index.d.ts" + ] + } + }, "files": [ "dist/**/*", "README.md", @@ -81,6 +100,7 @@ }, "bundler": { "entries": [ + "./src/legacy.ts", "./src/index.ts" ], "platform": "neutral" diff --git a/code/ui/components/src/index.ts b/code/ui/components/src/index.ts index 292a9c7067dd..6682e0ada3c5 100644 --- a/code/ui/components/src/index.ts +++ b/code/ui/components/src/index.ts @@ -1,99 +1,10 @@ // eslint-disable-next-line @typescript-eslint/triple-slash-reference /// <reference path="./typings.d.ts" /> -import type { ElementType } from 'react'; -import { createElement, forwardRef } from 'react'; -import * as typography from './typography/components'; +/* ABSOLUTELY DO NOT: + * - EXPORT PROPS INTERFACES OF COMPONENTS + * - EXPORT * FROM ANY FILES, EVERY EXPORT SHOULD BE DELIBERATE + * - EXPORT IMPORT / EXPORT ANYTHING FROM LEGACY + */ -export { A } from './typography/elements/A'; -export { Blockquote } from './typography/elements/Blockquote'; -export { Code } from './typography/elements/Code'; -export { Div } from './typography/elements/Div'; -export { DL } from './typography/elements/DL'; -export { H1 } from './typography/elements/H1'; -export { H2 } from './typography/elements/H2'; -export { H3 } from './typography/elements/H3'; -export { H4 } from './typography/elements/H4'; -export { H5 } from './typography/elements/H5'; -export { H6 } from './typography/elements/H6'; -export { HR } from './typography/elements/HR'; -export { Img } from './typography/elements/Img'; -export { LI } from './typography/elements/LI'; -export { OL } from './typography/elements/OL'; -export { P } from './typography/elements/P'; -export { Pre } from './typography/elements/Pre'; -export { Span } from './typography/elements/Span'; -export { Table } from './typography/elements/Table'; -export { TT } from './typography/elements/TT'; -export { UL } from './typography/elements/UL'; -export { Badge } from './Badge/Badge'; - -// Typography -export { Link } from './typography/link/link'; -export { DocumentWrapper } from './typography/DocumentWrapper'; -export type { - SyntaxHighlighterFormatTypes, - SyntaxHighlighterProps, - SyntaxHighlighterRendererProps, -} from './syntaxhighlighter/syntaxhighlighter-types'; -export { SyntaxHighlighter } from './syntaxhighlighter/lazy-syntaxhighlighter'; -export { createCopyToClipboardFunction } from './syntaxhighlighter/syntaxhighlighter'; - -// UI -export { ActionBar } from './ActionBar/ActionBar'; -export { Spaced } from './spaced/Spaced'; -export { Placeholder } from './placeholder/placeholder'; -export { ScrollArea } from './ScrollArea/ScrollArea'; -export { Zoom } from './Zoom/Zoom'; -export type { ActionItem } from './ActionBar/ActionBar'; -export { ErrorFormatter } from './ErrorFormatter/ErrorFormatter'; - -// Forms -export { Button } from './Button/Button'; -export { Form } from './form/index'; - -// Tooltips -export { WithTooltip, WithTooltipPure } from './tooltip/lazy-WithTooltip'; -export { TooltipMessage } from './tooltip/TooltipMessage'; -export { TooltipNote } from './tooltip/TooltipNote'; -export { TooltipLinkList, type Link as TooltipLinkListLink } from './tooltip/TooltipLinkList'; -export { default as ListItem } from './tooltip/ListItem'; - -// Toolbar and subcomponents -export { Tabs, TabsState, TabBar, TabWrapper } from './tabs/tabs'; -export { IconButton, IconButtonSkeleton, TabButton } from './bar/button'; -export { Separator, interleaveSeparators } from './bar/separator'; -export { Bar, FlexBar } from './bar/bar'; -export { AddonPanel } from './addon-panel/addon-panel'; - -// Graphics -export type { IconsProps } from './icon/icon'; -export { Icons, Symbols } from './icon/icon'; -export { icons } from './icon/icons'; -export { StorybookLogo } from './brand/StorybookLogo'; -export { StorybookIcon } from './brand/StorybookIcon'; - -// Loader -export { Loader } from './Loader/Loader'; - -// Utils -export { getStoryHref } from './utils/getStoryHref'; - -export * from './typography/DocumentFormatting'; -export * from './typography/ResetWrapper'; - -export { withReset, codeCommon } from './typography/lib/common'; - -export { ClipboardCode } from './clipboard/ClipboardCode'; - -// eslint-disable-next-line prefer-destructuring -export const components = typography.components; - -const resetComponents: Record<string, ElementType> = {}; - -Object.keys(typography.components).forEach((key) => { - // eslint-disable-next-line react/display-name - resetComponents[key] = forwardRef((props, ref) => createElement(key, { ...props, ref })); -}); - -export { resetComponents }; +export { Button } from './new/Button/Button'; diff --git a/code/ui/components/src/legacy.ts b/code/ui/components/src/legacy.ts new file mode 100644 index 000000000000..f0a15962f3f1 --- /dev/null +++ b/code/ui/components/src/legacy.ts @@ -0,0 +1,102 @@ +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// <reference path="./typings.d.ts" /> + +import type { ElementType } from 'react'; +import { createElement, forwardRef } from 'react'; +import * as typography from './legacy/typography/components'; + +export { A } from './legacy/typography/elements/A'; +export { Blockquote } from './legacy/typography/elements/Blockquote'; +export { Code } from './legacy/typography/elements/Code'; +export { Div } from './legacy/typography/elements/Div'; +export { DL } from './legacy/typography/elements/DL'; +export { H1 } from './legacy/typography/elements/H1'; +export { H2 } from './legacy/typography/elements/H2'; +export { H3 } from './legacy/typography/elements/H3'; +export { H4 } from './legacy/typography/elements/H4'; +export { H5 } from './legacy/typography/elements/H5'; +export { H6 } from './legacy/typography/elements/H6'; +export { HR } from './legacy/typography/elements/HR'; +export { Img } from './legacy/typography/elements/Img'; +export { LI } from './legacy/typography/elements/LI'; +export { OL } from './legacy/typography/elements/OL'; +export { P } from './legacy/typography/elements/P'; +export { Pre } from './legacy/typography/elements/Pre'; +export { Span } from './legacy/typography/elements/Span'; +export { Table } from './legacy/typography/elements/Table'; +export { TT } from './legacy/typography/elements/TT'; +export { UL } from './legacy/typography/elements/UL'; +export { Badge } from './legacy/Badge/Badge'; + +// Typography +export { Link } from './legacy/typography/link/link'; +export { DocumentWrapper } from './legacy/typography/DocumentWrapper'; +export type { + SyntaxHighlighterFormatTypes, + SyntaxHighlighterProps, + SyntaxHighlighterRendererProps, +} from './legacy/syntaxhighlighter/syntaxhighlighter-types'; +export { SyntaxHighlighter } from './legacy/syntaxhighlighter/lazy-syntaxhighlighter'; +export { createCopyToClipboardFunction } from './legacy/syntaxhighlighter/syntaxhighlighter'; + +// UI +export { ActionBar } from './legacy/ActionBar/ActionBar'; +export { Spaced } from './legacy/spaced/Spaced'; +export { Placeholder } from './legacy/placeholder/placeholder'; +export { ScrollArea } from './legacy/ScrollArea/ScrollArea'; +export { Zoom } from './legacy/Zoom/Zoom'; +export type { ActionItem } from './legacy/ActionBar/ActionBar'; +export { ErrorFormatter } from './legacy/ErrorFormatter/ErrorFormatter'; + +// Forms +export { Button } from './legacy/Button/Button'; +export { Form } from './legacy/form/index'; + +// Tooltips +export { WithTooltip, WithTooltipPure } from './legacy/tooltip/lazy-WithTooltip'; +export { TooltipMessage } from './legacy/tooltip/TooltipMessage'; +export { TooltipNote } from './legacy/tooltip/TooltipNote'; +export { + TooltipLinkList, + type Link as TooltipLinkListLink, +} from './legacy/tooltip/TooltipLinkList'; +export { default as ListItem } from './legacy/tooltip/ListItem'; + +// Toolbar and subcomponents +export { Tabs, TabsState, TabBar, TabWrapper } from './legacy/tabs/tabs'; +export { IconButton, IconButtonSkeleton, TabButton } from './legacy/bar/button'; +export { Separator, interleaveSeparators } from './legacy/bar/separator'; +export { Bar, FlexBar } from './legacy/bar/bar'; +export { AddonPanel } from './legacy/addon-panel/addon-panel'; + +// Graphics +export type { IconsProps } from './legacy/icon/icon'; +export { Icons, Symbols } from './legacy/icon/icon'; +export { icons } from './legacy/icon/icons'; +export { StorybookLogo } from './legacy/brand/StorybookLogo'; +export { StorybookIcon } from './legacy/brand/StorybookIcon'; + +// Loader +export { Loader } from './legacy/Loader/Loader'; + +// Utils +export { getStoryHref } from './legacy/utils/getStoryHref'; + +export * from './legacy/typography/DocumentFormatting'; +export * from './legacy/typography/ResetWrapper'; + +export { withReset, codeCommon } from './legacy/typography/lib/common'; + +export { ClipboardCode } from './legacy/clipboard/ClipboardCode'; + +// eslint-disable-next-line prefer-destructuring +export const components = typography.components; + +const resetComponents: Record<string, ElementType> = {}; + +Object.keys(typography.components).forEach((key) => { + // eslint-disable-next-line react/display-name + resetComponents[key] = forwardRef((props, ref) => createElement(key, { ...props, ref })); +}); + +export { resetComponents }; diff --git a/code/ui/components/src/ActionBar/ActionBar.stories.tsx b/code/ui/components/src/legacy/ActionBar/ActionBar.stories.tsx similarity index 100% rename from code/ui/components/src/ActionBar/ActionBar.stories.tsx rename to code/ui/components/src/legacy/ActionBar/ActionBar.stories.tsx diff --git a/code/ui/components/src/ActionBar/ActionBar.tsx b/code/ui/components/src/legacy/ActionBar/ActionBar.tsx similarity index 100% rename from code/ui/components/src/ActionBar/ActionBar.tsx rename to code/ui/components/src/legacy/ActionBar/ActionBar.tsx diff --git a/code/ui/components/src/Badge/Badge.stories.tsx b/code/ui/components/src/legacy/Badge/Badge.stories.tsx similarity index 100% rename from code/ui/components/src/Badge/Badge.stories.tsx rename to code/ui/components/src/legacy/Badge/Badge.stories.tsx diff --git a/code/ui/components/src/Badge/Badge.tsx b/code/ui/components/src/legacy/Badge/Badge.tsx similarity index 100% rename from code/ui/components/src/Badge/Badge.tsx rename to code/ui/components/src/legacy/Badge/Badge.tsx diff --git a/code/ui/components/src/Button/Button.stories.tsx b/code/ui/components/src/legacy/Button/Button.stories.tsx similarity index 100% rename from code/ui/components/src/Button/Button.stories.tsx rename to code/ui/components/src/legacy/Button/Button.stories.tsx diff --git a/code/ui/components/src/Button/Button.tsx b/code/ui/components/src/legacy/Button/Button.tsx similarity index 100% rename from code/ui/components/src/Button/Button.tsx rename to code/ui/components/src/legacy/Button/Button.tsx diff --git a/code/ui/components/src/Colors/SideBySide.tsx b/code/ui/components/src/legacy/Colors/SideBySide.tsx similarity index 100% rename from code/ui/components/src/Colors/SideBySide.tsx rename to code/ui/components/src/legacy/Colors/SideBySide.tsx diff --git a/code/ui/components/src/Colors/colorpalette.mdx b/code/ui/components/src/legacy/Colors/colorpalette.mdx similarity index 100% rename from code/ui/components/src/Colors/colorpalette.mdx rename to code/ui/components/src/legacy/Colors/colorpalette.mdx diff --git a/code/ui/components/src/ErrorFormatter/ErrorFormatter.stories.tsx b/code/ui/components/src/legacy/ErrorFormatter/ErrorFormatter.stories.tsx similarity index 100% rename from code/ui/components/src/ErrorFormatter/ErrorFormatter.stories.tsx rename to code/ui/components/src/legacy/ErrorFormatter/ErrorFormatter.stories.tsx diff --git a/code/ui/components/src/ErrorFormatter/ErrorFormatter.tsx b/code/ui/components/src/legacy/ErrorFormatter/ErrorFormatter.tsx similarity index 100% rename from code/ui/components/src/ErrorFormatter/ErrorFormatter.tsx rename to code/ui/components/src/legacy/ErrorFormatter/ErrorFormatter.tsx diff --git a/code/ui/components/src/Loader/Loader.stories.tsx b/code/ui/components/src/legacy/Loader/Loader.stories.tsx similarity index 100% rename from code/ui/components/src/Loader/Loader.stories.tsx rename to code/ui/components/src/legacy/Loader/Loader.stories.tsx diff --git a/code/ui/components/src/Loader/Loader.tsx b/code/ui/components/src/legacy/Loader/Loader.tsx similarity index 100% rename from code/ui/components/src/Loader/Loader.tsx rename to code/ui/components/src/legacy/Loader/Loader.tsx diff --git a/code/ui/components/src/ScrollArea/GlobalScrollAreaStyles.tsx b/code/ui/components/src/legacy/ScrollArea/GlobalScrollAreaStyles.tsx similarity index 100% rename from code/ui/components/src/ScrollArea/GlobalScrollAreaStyles.tsx rename to code/ui/components/src/legacy/ScrollArea/GlobalScrollAreaStyles.tsx diff --git a/code/ui/components/src/ScrollArea/OverlayScrollbars.tsx b/code/ui/components/src/legacy/ScrollArea/OverlayScrollbars.tsx similarity index 100% rename from code/ui/components/src/ScrollArea/OverlayScrollbars.tsx rename to code/ui/components/src/legacy/ScrollArea/OverlayScrollbars.tsx diff --git a/code/ui/components/src/ScrollArea/ScrollArea.stories.tsx b/code/ui/components/src/legacy/ScrollArea/ScrollArea.stories.tsx similarity index 100% rename from code/ui/components/src/ScrollArea/ScrollArea.stories.tsx rename to code/ui/components/src/legacy/ScrollArea/ScrollArea.stories.tsx diff --git a/code/ui/components/src/ScrollArea/ScrollArea.tsx b/code/ui/components/src/legacy/ScrollArea/ScrollArea.tsx similarity index 100% rename from code/ui/components/src/ScrollArea/ScrollArea.tsx rename to code/ui/components/src/legacy/ScrollArea/ScrollArea.tsx diff --git a/code/ui/components/src/Zoom/Zoom.stories.tsx b/code/ui/components/src/legacy/Zoom/Zoom.stories.tsx similarity index 100% rename from code/ui/components/src/Zoom/Zoom.stories.tsx rename to code/ui/components/src/legacy/Zoom/Zoom.stories.tsx diff --git a/code/ui/components/src/Zoom/Zoom.tsx b/code/ui/components/src/legacy/Zoom/Zoom.tsx similarity index 100% rename from code/ui/components/src/Zoom/Zoom.tsx rename to code/ui/components/src/legacy/Zoom/Zoom.tsx diff --git a/code/ui/components/src/Zoom/ZoomElement.tsx b/code/ui/components/src/legacy/Zoom/ZoomElement.tsx similarity index 100% rename from code/ui/components/src/Zoom/ZoomElement.tsx rename to code/ui/components/src/legacy/Zoom/ZoomElement.tsx diff --git a/code/ui/components/src/Zoom/ZoomIFrame.tsx b/code/ui/components/src/legacy/Zoom/ZoomIFrame.tsx similarity index 100% rename from code/ui/components/src/Zoom/ZoomIFrame.tsx rename to code/ui/components/src/legacy/Zoom/ZoomIFrame.tsx diff --git a/code/ui/components/src/addon-panel/addon-panel.tsx b/code/ui/components/src/legacy/addon-panel/addon-panel.tsx similarity index 100% rename from code/ui/components/src/addon-panel/addon-panel.tsx rename to code/ui/components/src/legacy/addon-panel/addon-panel.tsx diff --git a/code/ui/components/src/bar/bar.tsx b/code/ui/components/src/legacy/bar/bar.tsx similarity index 100% rename from code/ui/components/src/bar/bar.tsx rename to code/ui/components/src/legacy/bar/bar.tsx diff --git a/code/ui/components/src/bar/button.stories.tsx b/code/ui/components/src/legacy/bar/button.stories.tsx similarity index 100% rename from code/ui/components/src/bar/button.stories.tsx rename to code/ui/components/src/legacy/bar/button.stories.tsx diff --git a/code/ui/components/src/bar/button.tsx b/code/ui/components/src/legacy/bar/button.tsx similarity index 100% rename from code/ui/components/src/bar/button.tsx rename to code/ui/components/src/legacy/bar/button.tsx diff --git a/code/ui/components/src/bar/separator.tsx b/code/ui/components/src/legacy/bar/separator.tsx similarity index 100% rename from code/ui/components/src/bar/separator.tsx rename to code/ui/components/src/legacy/bar/separator.tsx diff --git a/code/ui/components/src/brand/StorybookIcon.stories.tsx b/code/ui/components/src/legacy/brand/StorybookIcon.stories.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookIcon.stories.tsx rename to code/ui/components/src/legacy/brand/StorybookIcon.stories.tsx diff --git a/code/ui/components/src/brand/StorybookIcon.tsx b/code/ui/components/src/legacy/brand/StorybookIcon.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookIcon.tsx rename to code/ui/components/src/legacy/brand/StorybookIcon.tsx diff --git a/code/ui/components/src/brand/StorybookLogo.stories.tsx b/code/ui/components/src/legacy/brand/StorybookLogo.stories.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookLogo.stories.tsx rename to code/ui/components/src/legacy/brand/StorybookLogo.stories.tsx diff --git a/code/ui/components/src/brand/StorybookLogo.tsx b/code/ui/components/src/legacy/brand/StorybookLogo.tsx similarity index 100% rename from code/ui/components/src/brand/StorybookLogo.tsx rename to code/ui/components/src/legacy/brand/StorybookLogo.tsx diff --git a/code/ui/components/src/clipboard/ClipboardCode.tsx b/code/ui/components/src/legacy/clipboard/ClipboardCode.tsx similarity index 100% rename from code/ui/components/src/clipboard/ClipboardCode.tsx rename to code/ui/components/src/legacy/clipboard/ClipboardCode.tsx diff --git a/code/ui/components/src/form/field/field.tsx b/code/ui/components/src/legacy/form/field/field.tsx similarity index 100% rename from code/ui/components/src/form/field/field.tsx rename to code/ui/components/src/legacy/form/field/field.tsx diff --git a/code/ui/components/src/form/form.stories.tsx b/code/ui/components/src/legacy/form/form.stories.tsx similarity index 100% rename from code/ui/components/src/form/form.stories.tsx rename to code/ui/components/src/legacy/form/form.stories.tsx diff --git a/code/ui/components/src/form/index.tsx b/code/ui/components/src/legacy/form/index.tsx similarity index 100% rename from code/ui/components/src/form/index.tsx rename to code/ui/components/src/legacy/form/index.tsx diff --git a/code/ui/components/src/form/input/input.tsx b/code/ui/components/src/legacy/form/input/input.tsx similarity index 100% rename from code/ui/components/src/form/input/input.tsx rename to code/ui/components/src/legacy/form/input/input.tsx diff --git a/code/ui/components/src/icon/icon.stories.tsx b/code/ui/components/src/legacy/icon/icon.stories.tsx similarity index 100% rename from code/ui/components/src/icon/icon.stories.tsx rename to code/ui/components/src/legacy/icon/icon.stories.tsx diff --git a/code/ui/components/src/icon/icon.tsx b/code/ui/components/src/legacy/icon/icon.tsx similarity index 100% rename from code/ui/components/src/icon/icon.tsx rename to code/ui/components/src/legacy/icon/icon.tsx diff --git a/code/ui/components/src/icon/icons.tsx b/code/ui/components/src/legacy/icon/icons.tsx similarity index 100% rename from code/ui/components/src/icon/icons.tsx rename to code/ui/components/src/legacy/icon/icons.tsx diff --git a/code/ui/components/src/icon/svg.tsx b/code/ui/components/src/legacy/icon/svg.tsx similarity index 100% rename from code/ui/components/src/icon/svg.tsx rename to code/ui/components/src/legacy/icon/svg.tsx diff --git a/code/ui/components/src/placeholder/placeholder.stories.tsx b/code/ui/components/src/legacy/placeholder/placeholder.stories.tsx similarity index 100% rename from code/ui/components/src/placeholder/placeholder.stories.tsx rename to code/ui/components/src/legacy/placeholder/placeholder.stories.tsx diff --git a/code/ui/components/src/placeholder/placeholder.tsx b/code/ui/components/src/legacy/placeholder/placeholder.tsx similarity index 100% rename from code/ui/components/src/placeholder/placeholder.tsx rename to code/ui/components/src/legacy/placeholder/placeholder.tsx diff --git a/code/ui/components/src/shared/animation.ts b/code/ui/components/src/legacy/shared/animation.ts similarity index 100% rename from code/ui/components/src/shared/animation.ts rename to code/ui/components/src/legacy/shared/animation.ts diff --git a/code/ui/components/src/spaced/Spaced.stories.tsx b/code/ui/components/src/legacy/spaced/Spaced.stories.tsx similarity index 100% rename from code/ui/components/src/spaced/Spaced.stories.tsx rename to code/ui/components/src/legacy/spaced/Spaced.stories.tsx diff --git a/code/ui/components/src/spaced/Spaced.tsx b/code/ui/components/src/legacy/spaced/Spaced.tsx similarity index 100% rename from code/ui/components/src/spaced/Spaced.tsx rename to code/ui/components/src/legacy/spaced/Spaced.tsx diff --git a/code/ui/components/src/syntaxhighlighter/formatter.test.ts b/code/ui/components/src/legacy/syntaxhighlighter/formatter.test.ts similarity index 100% rename from code/ui/components/src/syntaxhighlighter/formatter.test.ts rename to code/ui/components/src/legacy/syntaxhighlighter/formatter.test.ts diff --git a/code/ui/components/src/syntaxhighlighter/formatter.ts b/code/ui/components/src/legacy/syntaxhighlighter/formatter.ts similarity index 100% rename from code/ui/components/src/syntaxhighlighter/formatter.ts rename to code/ui/components/src/legacy/syntaxhighlighter/formatter.ts diff --git a/code/ui/components/src/syntaxhighlighter/lazy-syntaxhighlighter.tsx b/code/ui/components/src/legacy/syntaxhighlighter/lazy-syntaxhighlighter.tsx similarity index 100% rename from code/ui/components/src/syntaxhighlighter/lazy-syntaxhighlighter.tsx rename to code/ui/components/src/legacy/syntaxhighlighter/lazy-syntaxhighlighter.tsx diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter-types.ts b/code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter-types.ts similarity index 100% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter-types.ts rename to code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter-types.ts diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.stories.tsx b/code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter.stories.tsx similarity index 100% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter.stories.tsx rename to code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter.stories.tsx diff --git a/code/ui/components/src/syntaxhighlighter/syntaxhighlighter.tsx b/code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter.tsx similarity index 100% rename from code/ui/components/src/syntaxhighlighter/syntaxhighlighter.tsx rename to code/ui/components/src/legacy/syntaxhighlighter/syntaxhighlighter.tsx diff --git a/code/ui/components/src/tabs/tabs.helpers.tsx b/code/ui/components/src/legacy/tabs/tabs.helpers.tsx similarity index 100% rename from code/ui/components/src/tabs/tabs.helpers.tsx rename to code/ui/components/src/legacy/tabs/tabs.helpers.tsx diff --git a/code/ui/components/src/tabs/tabs.hooks.tsx b/code/ui/components/src/legacy/tabs/tabs.hooks.tsx similarity index 100% rename from code/ui/components/src/tabs/tabs.hooks.tsx rename to code/ui/components/src/legacy/tabs/tabs.hooks.tsx diff --git a/code/ui/components/src/tabs/tabs.stories.tsx b/code/ui/components/src/legacy/tabs/tabs.stories.tsx similarity index 100% rename from code/ui/components/src/tabs/tabs.stories.tsx rename to code/ui/components/src/legacy/tabs/tabs.stories.tsx diff --git a/code/ui/components/src/tabs/tabs.tsx b/code/ui/components/src/legacy/tabs/tabs.tsx similarity index 100% rename from code/ui/components/src/tabs/tabs.tsx rename to code/ui/components/src/legacy/tabs/tabs.tsx diff --git a/code/ui/components/src/tooltip/ListItem.stories.tsx b/code/ui/components/src/legacy/tooltip/ListItem.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/ListItem.stories.tsx rename to code/ui/components/src/legacy/tooltip/ListItem.stories.tsx diff --git a/code/ui/components/src/tooltip/ListItem.tsx b/code/ui/components/src/legacy/tooltip/ListItem.tsx similarity index 100% rename from code/ui/components/src/tooltip/ListItem.tsx rename to code/ui/components/src/legacy/tooltip/ListItem.tsx diff --git a/code/ui/components/src/tooltip/Tooltip.stories.tsx b/code/ui/components/src/legacy/tooltip/Tooltip.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/Tooltip.stories.tsx rename to code/ui/components/src/legacy/tooltip/Tooltip.stories.tsx diff --git a/code/ui/components/src/tooltip/Tooltip.tsx b/code/ui/components/src/legacy/tooltip/Tooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/Tooltip.tsx rename to code/ui/components/src/legacy/tooltip/Tooltip.tsx diff --git a/code/ui/components/src/tooltip/TooltipLinkList.stories.tsx b/code/ui/components/src/legacy/tooltip/TooltipLinkList.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipLinkList.stories.tsx rename to code/ui/components/src/legacy/tooltip/TooltipLinkList.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipLinkList.tsx b/code/ui/components/src/legacy/tooltip/TooltipLinkList.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipLinkList.tsx rename to code/ui/components/src/legacy/tooltip/TooltipLinkList.tsx diff --git a/code/ui/components/src/tooltip/TooltipMessage.stories.tsx b/code/ui/components/src/legacy/tooltip/TooltipMessage.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipMessage.stories.tsx rename to code/ui/components/src/legacy/tooltip/TooltipMessage.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipMessage.tsx b/code/ui/components/src/legacy/tooltip/TooltipMessage.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipMessage.tsx rename to code/ui/components/src/legacy/tooltip/TooltipMessage.tsx diff --git a/code/ui/components/src/tooltip/TooltipNote.stories.tsx b/code/ui/components/src/legacy/tooltip/TooltipNote.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipNote.stories.tsx rename to code/ui/components/src/legacy/tooltip/TooltipNote.stories.tsx diff --git a/code/ui/components/src/tooltip/TooltipNote.tsx b/code/ui/components/src/legacy/tooltip/TooltipNote.tsx similarity index 100% rename from code/ui/components/src/tooltip/TooltipNote.tsx rename to code/ui/components/src/legacy/tooltip/TooltipNote.tsx diff --git a/code/ui/components/src/tooltip/WithTooltip.stories.tsx b/code/ui/components/src/legacy/tooltip/WithTooltip.stories.tsx similarity index 100% rename from code/ui/components/src/tooltip/WithTooltip.stories.tsx rename to code/ui/components/src/legacy/tooltip/WithTooltip.stories.tsx diff --git a/code/ui/components/src/tooltip/WithTooltip.tsx b/code/ui/components/src/legacy/tooltip/WithTooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/WithTooltip.tsx rename to code/ui/components/src/legacy/tooltip/WithTooltip.tsx diff --git a/code/ui/components/src/tooltip/assets/ellipse.png b/code/ui/components/src/legacy/tooltip/assets/ellipse.png similarity index 100% rename from code/ui/components/src/tooltip/assets/ellipse.png rename to code/ui/components/src/legacy/tooltip/assets/ellipse.png diff --git a/code/ui/components/src/tooltip/lazy-WithTooltip.tsx b/code/ui/components/src/legacy/tooltip/lazy-WithTooltip.tsx similarity index 100% rename from code/ui/components/src/tooltip/lazy-WithTooltip.tsx rename to code/ui/components/src/legacy/tooltip/lazy-WithTooltip.tsx diff --git a/code/ui/components/src/typography/DocumentFormatting.tsx b/code/ui/components/src/legacy/typography/DocumentFormatting.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentFormatting.tsx rename to code/ui/components/src/legacy/typography/DocumentFormatting.tsx diff --git a/code/ui/components/src/typography/DocumentFormattingSample.mdx b/code/ui/components/src/legacy/typography/DocumentFormattingSample.mdx similarity index 100% rename from code/ui/components/src/typography/DocumentFormattingSample.mdx rename to code/ui/components/src/legacy/typography/DocumentFormattingSample.mdx diff --git a/code/ui/components/src/typography/DocumentWrapper.stories.tsx b/code/ui/components/src/legacy/typography/DocumentWrapper.stories.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentWrapper.stories.tsx rename to code/ui/components/src/legacy/typography/DocumentWrapper.stories.tsx diff --git a/code/ui/components/src/typography/DocumentWrapper.tsx b/code/ui/components/src/legacy/typography/DocumentWrapper.tsx similarity index 100% rename from code/ui/components/src/typography/DocumentWrapper.tsx rename to code/ui/components/src/legacy/typography/DocumentWrapper.tsx diff --git a/code/ui/components/src/typography/ResetWrapper.tsx b/code/ui/components/src/legacy/typography/ResetWrapper.tsx similarity index 100% rename from code/ui/components/src/typography/ResetWrapper.tsx rename to code/ui/components/src/legacy/typography/ResetWrapper.tsx diff --git a/code/ui/components/src/typography/components.tsx b/code/ui/components/src/legacy/typography/components.tsx similarity index 100% rename from code/ui/components/src/typography/components.tsx rename to code/ui/components/src/legacy/typography/components.tsx diff --git a/code/ui/components/src/typography/elements/A.tsx b/code/ui/components/src/legacy/typography/elements/A.tsx similarity index 100% rename from code/ui/components/src/typography/elements/A.tsx rename to code/ui/components/src/legacy/typography/elements/A.tsx diff --git a/code/ui/components/src/typography/elements/Blockquote.tsx b/code/ui/components/src/legacy/typography/elements/Blockquote.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Blockquote.tsx rename to code/ui/components/src/legacy/typography/elements/Blockquote.tsx diff --git a/code/ui/components/src/typography/elements/Code.tsx b/code/ui/components/src/legacy/typography/elements/Code.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Code.tsx rename to code/ui/components/src/legacy/typography/elements/Code.tsx diff --git a/code/ui/components/src/typography/elements/DL.tsx b/code/ui/components/src/legacy/typography/elements/DL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/DL.tsx rename to code/ui/components/src/legacy/typography/elements/DL.tsx diff --git a/code/ui/components/src/typography/elements/Div.tsx b/code/ui/components/src/legacy/typography/elements/Div.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Div.tsx rename to code/ui/components/src/legacy/typography/elements/Div.tsx diff --git a/code/ui/components/src/typography/elements/H1.tsx b/code/ui/components/src/legacy/typography/elements/H1.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H1.tsx rename to code/ui/components/src/legacy/typography/elements/H1.tsx diff --git a/code/ui/components/src/typography/elements/H2.tsx b/code/ui/components/src/legacy/typography/elements/H2.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H2.tsx rename to code/ui/components/src/legacy/typography/elements/H2.tsx diff --git a/code/ui/components/src/typography/elements/H3.tsx b/code/ui/components/src/legacy/typography/elements/H3.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H3.tsx rename to code/ui/components/src/legacy/typography/elements/H3.tsx diff --git a/code/ui/components/src/typography/elements/H4.tsx b/code/ui/components/src/legacy/typography/elements/H4.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H4.tsx rename to code/ui/components/src/legacy/typography/elements/H4.tsx diff --git a/code/ui/components/src/typography/elements/H5.tsx b/code/ui/components/src/legacy/typography/elements/H5.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H5.tsx rename to code/ui/components/src/legacy/typography/elements/H5.tsx diff --git a/code/ui/components/src/typography/elements/H6.tsx b/code/ui/components/src/legacy/typography/elements/H6.tsx similarity index 100% rename from code/ui/components/src/typography/elements/H6.tsx rename to code/ui/components/src/legacy/typography/elements/H6.tsx diff --git a/code/ui/components/src/typography/elements/HR.tsx b/code/ui/components/src/legacy/typography/elements/HR.tsx similarity index 100% rename from code/ui/components/src/typography/elements/HR.tsx rename to code/ui/components/src/legacy/typography/elements/HR.tsx diff --git a/code/ui/components/src/typography/elements/Img.tsx b/code/ui/components/src/legacy/typography/elements/Img.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Img.tsx rename to code/ui/components/src/legacy/typography/elements/Img.tsx diff --git a/code/ui/components/src/typography/elements/LI.tsx b/code/ui/components/src/legacy/typography/elements/LI.tsx similarity index 100% rename from code/ui/components/src/typography/elements/LI.tsx rename to code/ui/components/src/legacy/typography/elements/LI.tsx diff --git a/code/ui/components/src/typography/elements/Link.tsx b/code/ui/components/src/legacy/typography/elements/Link.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Link.tsx rename to code/ui/components/src/legacy/typography/elements/Link.tsx diff --git a/code/ui/components/src/typography/elements/OL.tsx b/code/ui/components/src/legacy/typography/elements/OL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/OL.tsx rename to code/ui/components/src/legacy/typography/elements/OL.tsx diff --git a/code/ui/components/src/typography/elements/P.tsx b/code/ui/components/src/legacy/typography/elements/P.tsx similarity index 100% rename from code/ui/components/src/typography/elements/P.tsx rename to code/ui/components/src/legacy/typography/elements/P.tsx diff --git a/code/ui/components/src/typography/elements/Pre.tsx b/code/ui/components/src/legacy/typography/elements/Pre.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Pre.tsx rename to code/ui/components/src/legacy/typography/elements/Pre.tsx diff --git a/code/ui/components/src/typography/elements/Span.tsx b/code/ui/components/src/legacy/typography/elements/Span.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Span.tsx rename to code/ui/components/src/legacy/typography/elements/Span.tsx diff --git a/code/ui/components/src/typography/elements/TT.tsx b/code/ui/components/src/legacy/typography/elements/TT.tsx similarity index 100% rename from code/ui/components/src/typography/elements/TT.tsx rename to code/ui/components/src/legacy/typography/elements/TT.tsx diff --git a/code/ui/components/src/typography/elements/Table.tsx b/code/ui/components/src/legacy/typography/elements/Table.tsx similarity index 100% rename from code/ui/components/src/typography/elements/Table.tsx rename to code/ui/components/src/legacy/typography/elements/Table.tsx diff --git a/code/ui/components/src/typography/elements/UL.tsx b/code/ui/components/src/legacy/typography/elements/UL.tsx similarity index 100% rename from code/ui/components/src/typography/elements/UL.tsx rename to code/ui/components/src/legacy/typography/elements/UL.tsx diff --git a/code/ui/components/src/typography/lib/common.tsx b/code/ui/components/src/legacy/typography/lib/common.tsx similarity index 100% rename from code/ui/components/src/typography/lib/common.tsx rename to code/ui/components/src/legacy/typography/lib/common.tsx diff --git a/code/ui/components/src/typography/lib/isReactChildString.tsx b/code/ui/components/src/legacy/typography/lib/isReactChildString.tsx similarity index 100% rename from code/ui/components/src/typography/lib/isReactChildString.tsx rename to code/ui/components/src/legacy/typography/lib/isReactChildString.tsx diff --git a/code/ui/components/src/typography/link/link.stories.tsx b/code/ui/components/src/legacy/typography/link/link.stories.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.stories.tsx rename to code/ui/components/src/legacy/typography/link/link.stories.tsx diff --git a/code/ui/components/src/typography/link/link.test.tsx b/code/ui/components/src/legacy/typography/link/link.test.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.test.tsx rename to code/ui/components/src/legacy/typography/link/link.test.tsx diff --git a/code/ui/components/src/typography/link/link.tsx b/code/ui/components/src/legacy/typography/link/link.tsx similarity index 100% rename from code/ui/components/src/typography/link/link.tsx rename to code/ui/components/src/legacy/typography/link/link.tsx diff --git a/code/ui/components/src/typography/typography.stories.mdx b/code/ui/components/src/legacy/typography/typography.stories.mdx similarity index 100% rename from code/ui/components/src/typography/typography.stories.mdx rename to code/ui/components/src/legacy/typography/typography.stories.mdx diff --git a/code/ui/components/src/utils/getStoryHref.ts b/code/ui/components/src/legacy/utils/getStoryHref.ts similarity index 100% rename from code/ui/components/src/utils/getStoryHref.ts rename to code/ui/components/src/legacy/utils/getStoryHref.ts diff --git a/code/ui/experimental-ui/src/Button/Button.stories.tsx b/code/ui/components/src/new/Button/Button.stories.tsx similarity index 100% rename from code/ui/experimental-ui/src/Button/Button.stories.tsx rename to code/ui/components/src/new/Button/Button.stories.tsx diff --git a/code/ui/experimental-ui/src/Button/Button.tsx b/code/ui/components/src/new/Button/Button.tsx similarity index 100% rename from code/ui/experimental-ui/src/Button/Button.tsx rename to code/ui/components/src/new/Button/Button.tsx diff --git a/code/ui/experimental-ui/src/Button/styles.ts b/code/ui/components/src/new/Button/styles.ts similarity index 100% rename from code/ui/experimental-ui/src/Button/styles.ts rename to code/ui/components/src/new/Button/styles.ts diff --git a/code/ui/experimental-ui/.storybook/main.ts b/code/ui/experimental-ui/.storybook/main.ts deleted file mode 100644 index 3a7d776f4d35..000000000000 --- a/code/ui/experimental-ui/.storybook/main.ts +++ /dev/null @@ -1,38 +0,0 @@ -import path from 'path'; -import pluginTurbosnap from 'vite-plugin-turbosnap'; -import { mergeConfig } from 'vite'; -import type { StorybookConfig } from '../../../frameworks/react-vite'; - -const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - '@storybook/addon-storysource', - '@storybook/addon-designs', - ], - framework: { - name: '@storybook/react-vite', - options: {}, - }, - core: { - disableTelemetry: true, - }, - viteFinal: (viteConfig, { configType }) => - mergeConfig(viteConfig, { - plugins: [ - configType === 'PRODUCTION' - ? pluginTurbosnap({ rootDir: path.resolve(__dirname, '../..') }) - : [], - ], - optimizeDeps: { force: true }, - build: { - // disable sourcemaps in CI to not run out of memory - sourcemap: process.env.CI !== 'true', - }, - }), - logLevel: 'debug', -}; - -export default config; diff --git a/code/ui/experimental-ui/.storybook/preview.tsx b/code/ui/experimental-ui/.storybook/preview.tsx deleted file mode 100644 index 14e33b2a76a2..000000000000 --- a/code/ui/experimental-ui/.storybook/preview.tsx +++ /dev/null @@ -1,270 +0,0 @@ -import { global } from '@storybook/global'; -import React, { Fragment, useEffect } from 'react'; -import isChromatic from 'chromatic/isChromatic'; -import { - Global, - ThemeProvider, - themes, - createReset, - convert, - styled, - useTheme, -} from '@storybook/theming'; -import { useArgs, type PreviewWeb } from '@storybook/preview-api'; -import type { ReactRenderer } from '@storybook/react'; -import type { Channel } from '@storybook/channels'; - -const { document } = global; - -const ThemeContainer = styled.div({ - display: 'flex', -}); - -const ThemeBlock = styled.div(({ theme }) => ({ - flex: 1, - padding: '1rem', - background: theme.background.content, - color: theme.color.defaultText, -})); - -const ThemeStack = styled.div(({ theme }) => ({ - flex: 1, - padding: '1rem', - background: theme.background.content, - color: theme.color.defaultText, -})); - -const PlayFnNotice = styled.div(({ theme }) => ({ - position: 'absolute', - top: 0, - left: 0, - width: '100%', - borderBottom: '1px solid #ccc', - padding: '3px 8px', - fontSize: '10px', - fontWeight: 'bold', - '> *': { - display: 'block', - }, - background: '#fffbd9', - color: theme.color.defaultText, -})); - -const ThemedSetRoot = () => { - const theme = useTheme(); - - useEffect(() => { - document.body.style.background = theme.background.content; - document.body.style.color = theme.color.defaultText; - }); - - return null; -}; - -// eslint-disable-next-line no-underscore-dangle -const preview = (window as any).__STORYBOOK_PREVIEW__ as PreviewWeb<ReactRenderer>; -const channel = (window as any).__STORYBOOK_ADDONS_CHANNEL__ as Channel; -export const loaders = [ - /** - * This loader adds a DocsContext to the story, which is required for the most Blocks to work. - * A story will specify which stories they need in the index with: - * parameters: { - * relativeCsfPaths: ['../stories/MyStory.stories.tsx'], // relative to the story - * } - * The DocsContext will then be added via the decorator below. - */ - async ({ parameters: { relativeCsfPaths, attached = true } }) => { - if (!relativeCsfPaths) return {}; - const csfFiles = await Promise.all( - (relativeCsfPaths as string[]).map(async (blocksRelativePath) => { - const projectRelativePath = `./ui/blocks/src/${blocksRelativePath.replace( - /^..\//, - '' - )}.tsx`; - const entry = preview.storyStore.storyIndex?.importPathToEntry(projectRelativePath); - - if (!entry) { - throw new Error( - `Couldn't find story file at ${projectRelativePath} (passed as ${blocksRelativePath})` - ); - } - - return preview.storyStore.loadCSFFileByStoryId(entry.id); - }) - ); - const docsContext = new DocsContextProps( - channel, - preview.storyStore, - preview.renderStoryToElement.bind(preview), - csfFiles - ); - if (attached && csfFiles[0]) { - docsContext.attachCSFFile(csfFiles[0]); - } - return { docsContext }; - }, -]; - -export const decorators = [ - /** - * This decorator renders the stories side-by-side, stacked or default based on the theme switcher in the toolbar - */ - (StoryFn, { globals, parameters, playFunction }) => { - const defaultTheme = isChromatic() && !playFunction ? 'stacked' : 'light'; - const theme = globals.theme || parameters.theme || defaultTheme; - - switch (theme) { - case 'side-by-side': { - return ( - <ThemeContainer> - <ThemeProvider theme={convert(themes.light)}> - <Global styles={createReset} /> - </ThemeProvider> - <ThemeProvider theme={convert(themes.light)}> - <ThemeBlock data-side="left"> - <StoryFn /> - </ThemeBlock> - </ThemeProvider> - <ThemeProvider theme={convert(themes.dark)}> - <ThemeBlock data-side="right"> - <StoryFn /> - </ThemeBlock> - </ThemeProvider> - </ThemeContainer> - ); - } - case 'stacked': { - return ( - <Fragment> - <ThemeProvider theme={convert(themes.light)}> - <Global styles={createReset} /> - </ThemeProvider> - <ThemeProvider theme={convert(themes.light)}> - <ThemeStack data-side="left"> - <StoryFn /> - </ThemeStack> - </ThemeProvider> - <ThemeProvider theme={convert(themes.dark)}> - <ThemeStack data-side="right"> - <StoryFn /> - </ThemeStack> - </ThemeProvider> - </Fragment> - ); - } - case 'default': - default: { - return ( - <ThemeContainer> - <ThemeProvider theme={convert(themes[theme])}> - <Global styles={createReset} /> - <ThemedSetRoot /> - {!parameters.theme && isChromatic() && playFunction && ( - <> - <PlayFnNotice> - <span> - Detected play function in Chromatic. Rendering only light theme to avoid - multiple play functions in the same story. - </span> - </PlayFnNotice> - <div style={{ marginBottom: 20 }} /> - </> - )} - <ThemeBlock> - <StoryFn /> - </ThemeBlock> - </ThemeProvider> - </ThemeContainer> - ); - } - } - }, - /** - * This decorator shows the current state of the arg named in the - * parameters.withRawArg property, by updating the arg in the onChange function - * this also means that the arg will sync with the control panel - * - * If parameters.withRawArg is not set, this decorator will do nothing - */ - (StoryFn, { parameters, args, hooks }) => { - const [, updateArgs] = useArgs(); - if (!parameters.withRawArg) { - return <StoryFn />; - } - - return ( - <> - <StoryFn - args={{ - ...args, - onChange: (newValue) => { - updateArgs({ [parameters.withRawArg]: newValue }); - args.onChange?.(newValue); - }, - }} - /> - <div style={{ marginTop: '1rem' }}> - Current <code>{parameters.withRawArg}</code>:{' '} - <pre>{JSON.stringify(args[parameters.withRawArg], null, 2) || 'undefined'}</pre> - </div> - </> - ); - }, -]; - -export const parameters = { - actions: { argTypesRegex: '^on.*' }, - options: { - storySort: (a, b) => - a.title === b.title ? 0 : a.id.localeCompare(b.id, undefined, { numeric: true }), - }, - docs: { - theme: themes.light, - toc: {}, - }, - controls: { - presetColors: [ - { color: '#ff4785', title: 'Coral' }, - { color: '#1EA7FD', title: 'Ocean' }, - { color: 'rgb(252, 82, 31)', title: 'Orange' }, - { color: 'RGBA(255, 174, 0, 0.5)', title: 'Gold' }, - { color: 'hsl(101, 52%, 49%)', title: 'Green' }, - { color: 'HSLA(179,65%,53%,0.5)', title: 'Seafoam' }, - { color: '#6F2CAC', title: 'Purple' }, - { color: '#2A0481', title: 'Ultraviolet' }, - { color: 'black' }, - { color: '#333', title: 'Darkest' }, - { color: '#444', title: 'Darker' }, - { color: '#666', title: 'Dark' }, - { color: '#999', title: 'Mediumdark' }, - { color: '#ddd', title: 'Medium' }, - { color: '#EEE', title: 'Mediumlight' }, - { color: '#F3F3F3', title: 'Light' }, - { color: '#F8F8F8', title: 'Lighter' }, - { color: '#FFFFFF', title: 'Lightest' }, - '#fe4a49', - '#FED766', - 'rgba(0, 159, 183, 1)', - 'HSLA(240,11%,91%,0.5)', - 'slategray', - ], - }, - layout: 'fullscreen', -}; - -export const globalTypes = { - theme: { - name: 'Theme', - description: 'Global theme for components', - toolbar: { - icon: 'circlehollow', - title: 'Theme', - items: [ - { value: 'light', icon: 'circlehollow', title: 'light' }, - { value: 'dark', icon: 'circle', title: 'dark' }, - { value: 'side-by-side', icon: 'sidebar', title: 'side by side' }, - { value: 'stacked', icon: 'bottombar', title: 'stacked' }, - ], - }, - }, -}; diff --git a/code/ui/experimental-ui/README.md b/code/ui/experimental-ui/README.md deleted file mode 100644 index c039cc42b249..000000000000 --- a/code/ui/experimental-ui/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Storybook Experimental UI - -Storybook Experimental UI is a React UI components collection used by the UI of Storybook and Addons. - -All components use [`emotion`](https://emotion.sh) for styling. diff --git a/code/ui/experimental-ui/jest.config.js b/code/ui/experimental-ui/jest.config.js deleted file mode 100644 index 4396fbc7010d..000000000000 --- a/code/ui/experimental-ui/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const path = require('path'); -const baseConfig = require('../../jest.config.browser'); - -module.exports = { - ...baseConfig, - displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep), -}; diff --git a/code/ui/experimental-ui/package.json b/code/ui/experimental-ui/package.json deleted file mode 100644 index b4baf5b6c1f6..000000000000 --- a/code/ui/experimental-ui/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "@storybook/experimental-ui", - "version": "7.1.0-rc.0", - "description": "Core Storybook Components", - "keywords": [ - "storybook" - ], - "homepage": "https://github.com/storybookjs/storybook/tree/next/code/ui/components", - "bugs": { - "url": "https://github.com/storybookjs/storybook/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/storybookjs/storybook.git", - "directory": "code/ui/components" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "license": "MIT", - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "node": "./dist/index.js", - "require": "./dist/index.js", - "import": "./dist/index.mjs" - }, - "./html": { - "types": "./dist/html.d.ts", - "require": "./dist/html.js", - "import": "./dist/html.mjs" - }, - "./package.json": "./package.json" - }, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist/**/*", - "README.md", - "*.js", - "*.d.ts" - ], - "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", - "prep": "../../../scripts/prepare/bundle.ts" - }, - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/theming": "7.1.0-rc.0" - }, - "devDependencies": { - "@storybook/preview-api": "7.1.0-rc.0", - "polished": "^4.2.2", - "prettier": "^2.8.0", - "typescript": "~4.9.3", - "vite": "^4.4.2", - "vite-plugin-turbosnap": "^1.0.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "publishConfig": { - "access": "public" - }, - "bundler": { - "entries": [ - "./src/index.ts" - ], - "platform": "neutral" - }, - "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" -} diff --git a/code/ui/experimental-ui/tsconfig.json b/code/ui/experimental-ui/tsconfig.json deleted file mode 100644 index 482faf5a2ae7..000000000000 --- a/code/ui/experimental-ui/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "types": ["jest", "testing-library__jest-dom"], - "strict": false - }, - "include": ["src/**/*"] -} diff --git a/code/ui/manager/src/globals/exports.ts b/code/ui/manager/src/globals/exports.ts index 43b7c50f5191..b1f66314186a 100644 --- a/code/ui/manager/src/globals/exports.ts +++ b/code/ui/manager/src/globals/exports.ts @@ -114,6 +114,7 @@ export default { 'resetComponents', 'withReset', ], + '@storybook/components/experimental': ['Button'], '@storybook/channels': [ 'Channel', 'PostMessageTransport', diff --git a/code/ui/manager/src/globals/runtime.ts b/code/ui/manager/src/globals/runtime.ts index 5850699f171d..391acebf3e91 100644 --- a/code/ui/manager/src/globals/runtime.ts +++ b/code/ui/manager/src/globals/runtime.ts @@ -2,6 +2,7 @@ import * as REACT from 'react'; import * as REACTDOM from 'react-dom'; import * as STORYBOOKCOMPONENTS from '@storybook/components'; +import * as STORYBOOKCOMPONENTSEXPERIMENTAL from '@storybook/components/experimental'; import * as STORYBOOKCHANNELS from '@storybook/channels'; import * as STORYBOOKEVENTS from '@storybook/core-events'; import * as STORYBOOKROUTER from '@storybook/router'; @@ -16,6 +17,7 @@ export const values: Required<Record<keyof typeof Keys, any>> = { react: REACT as any, 'react-dom': REACTDOM, '@storybook/components': STORYBOOKCOMPONENTS, + '@storybook/components/experimental': STORYBOOKCOMPONENTSEXPERIMENTAL, '@storybook/channels': STORYBOOKCHANNELS, '@storybook/core-events': STORYBOOKEVENTS, '@storybook/router': STORYBOOKROUTER, diff --git a/code/ui/manager/src/globals/types.ts b/code/ui/manager/src/globals/types.ts index 2861e45f632a..a499ea31bfaf 100644 --- a/code/ui/manager/src/globals/types.ts +++ b/code/ui/manager/src/globals/types.ts @@ -5,6 +5,7 @@ export enum Keys { 'react' = '__REACT__', 'react-dom' = '__REACTDOM__', '@storybook/components' = '__STORYBOOKCOMPONENTS__', + '@storybook/components/experimental' = '__STORYBOOKCOMPONENTSEXPERIMENTAL__', '@storybook/channels' = '__STORYBOOKCHANNELS__', '@storybook/core-events' = '__STORYBOOKCOREEVENTS__', '@storybook/router' = '__STORYBOOKROUTER__', From 4ad8d8e9900256ef7205b7d9bbb7105777348c25 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 12 Jul 2023 11:34:18 +0100 Subject: [PATCH 099/135] Fix Storybook --- code/ui/.storybook/main.ts | 6 +- code/ui/components/package.json | 26 ++--- code/ui/components/src/experimantal.ts | 10 ++ code/ui/components/src/index.ts | 104 +++++++++++++++++-- code/ui/components/src/legacy.ts | 102 ------------------ code/ui/components/src/new/Button/Button.tsx | 47 ++++++++- code/yarn.lock | 85 +-------------- 7 files changed, 172 insertions(+), 208 deletions(-) create mode 100644 code/ui/components/src/experimantal.ts delete mode 100644 code/ui/components/src/legacy.ts diff --git a/code/ui/.storybook/main.ts b/code/ui/.storybook/main.ts index 541b0f2c69e1..851a1c90d0af 100644 --- a/code/ui/.storybook/main.ts +++ b/code/ui/.storybook/main.ts @@ -6,12 +6,16 @@ import type { StorybookConfig } from '../../frameworks/react-vite'; const isBlocksOnly = process.env.STORYBOOK_BLOCKS_ONLY === 'true'; const allStories = [ + { + directory: '../components/src/new', + titlePrefix: '@storybook-ui', + }, { directory: '../manager/src', titlePrefix: '@storybook-manager', }, { - directory: '../components/src', + directory: '../components/src/legacy', titlePrefix: '@storybook-components', }, { diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 5b91e0f1fa6c..04822c233380 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -22,17 +22,17 @@ "sideEffects": false, "exports": { ".": { - "types": "./dist/legacy.d.ts", - "node": "./dist/legacy.js", - "require": "./dist/legacy.js", - "import": "./dist/legacy.mjs" - }, - "./experimental": { "types": "./dist/index.d.ts", "node": "./dist/index.js", "require": "./dist/index.js", "import": "./dist/index.mjs" }, + "./experimental": { + "types": "./dist/experimantal.d.ts", + "node": "./dist/experimantal.js", + "require": "./dist/experimantal.js", + "import": "./dist/experimantal.mjs" + }, "./html": { "types": "./dist/html.d.ts", "require": "./dist/html.js", @@ -40,19 +40,19 @@ }, "./package.json": "./package.json" }, - "main": "dist/legacy.js", - "module": "dist/legacy.mjs", - "types": "dist/legacy.d.ts", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", "typesVersions": { "*": { "*": [ - "dist/legacy.d.ts" + "dist/index.d.ts" ], "html": [ "dist/html.d.ts" ], "experimental": [ - "dist/index.d.ts" + "dist/experimantal.d.ts" ] } }, @@ -100,8 +100,8 @@ }, "bundler": { "entries": [ - "./src/legacy.ts", - "./src/index.ts" + "./src/index.ts", + "./src/experimantal.ts" ], "platform": "neutral" }, diff --git a/code/ui/components/src/experimantal.ts b/code/ui/components/src/experimantal.ts new file mode 100644 index 000000000000..6682e0ada3c5 --- /dev/null +++ b/code/ui/components/src/experimantal.ts @@ -0,0 +1,10 @@ +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// <reference path="./typings.d.ts" /> + +/* ABSOLUTELY DO NOT: + * - EXPORT PROPS INTERFACES OF COMPONENTS + * - EXPORT * FROM ANY FILES, EVERY EXPORT SHOULD BE DELIBERATE + * - EXPORT IMPORT / EXPORT ANYTHING FROM LEGACY + */ + +export { Button } from './new/Button/Button'; diff --git a/code/ui/components/src/index.ts b/code/ui/components/src/index.ts index 6682e0ada3c5..f0a15962f3f1 100644 --- a/code/ui/components/src/index.ts +++ b/code/ui/components/src/index.ts @@ -1,10 +1,102 @@ // eslint-disable-next-line @typescript-eslint/triple-slash-reference /// <reference path="./typings.d.ts" /> -/* ABSOLUTELY DO NOT: - * - EXPORT PROPS INTERFACES OF COMPONENTS - * - EXPORT * FROM ANY FILES, EVERY EXPORT SHOULD BE DELIBERATE - * - EXPORT IMPORT / EXPORT ANYTHING FROM LEGACY - */ +import type { ElementType } from 'react'; +import { createElement, forwardRef } from 'react'; +import * as typography from './legacy/typography/components'; -export { Button } from './new/Button/Button'; +export { A } from './legacy/typography/elements/A'; +export { Blockquote } from './legacy/typography/elements/Blockquote'; +export { Code } from './legacy/typography/elements/Code'; +export { Div } from './legacy/typography/elements/Div'; +export { DL } from './legacy/typography/elements/DL'; +export { H1 } from './legacy/typography/elements/H1'; +export { H2 } from './legacy/typography/elements/H2'; +export { H3 } from './legacy/typography/elements/H3'; +export { H4 } from './legacy/typography/elements/H4'; +export { H5 } from './legacy/typography/elements/H5'; +export { H6 } from './legacy/typography/elements/H6'; +export { HR } from './legacy/typography/elements/HR'; +export { Img } from './legacy/typography/elements/Img'; +export { LI } from './legacy/typography/elements/LI'; +export { OL } from './legacy/typography/elements/OL'; +export { P } from './legacy/typography/elements/P'; +export { Pre } from './legacy/typography/elements/Pre'; +export { Span } from './legacy/typography/elements/Span'; +export { Table } from './legacy/typography/elements/Table'; +export { TT } from './legacy/typography/elements/TT'; +export { UL } from './legacy/typography/elements/UL'; +export { Badge } from './legacy/Badge/Badge'; + +// Typography +export { Link } from './legacy/typography/link/link'; +export { DocumentWrapper } from './legacy/typography/DocumentWrapper'; +export type { + SyntaxHighlighterFormatTypes, + SyntaxHighlighterProps, + SyntaxHighlighterRendererProps, +} from './legacy/syntaxhighlighter/syntaxhighlighter-types'; +export { SyntaxHighlighter } from './legacy/syntaxhighlighter/lazy-syntaxhighlighter'; +export { createCopyToClipboardFunction } from './legacy/syntaxhighlighter/syntaxhighlighter'; + +// UI +export { ActionBar } from './legacy/ActionBar/ActionBar'; +export { Spaced } from './legacy/spaced/Spaced'; +export { Placeholder } from './legacy/placeholder/placeholder'; +export { ScrollArea } from './legacy/ScrollArea/ScrollArea'; +export { Zoom } from './legacy/Zoom/Zoom'; +export type { ActionItem } from './legacy/ActionBar/ActionBar'; +export { ErrorFormatter } from './legacy/ErrorFormatter/ErrorFormatter'; + +// Forms +export { Button } from './legacy/Button/Button'; +export { Form } from './legacy/form/index'; + +// Tooltips +export { WithTooltip, WithTooltipPure } from './legacy/tooltip/lazy-WithTooltip'; +export { TooltipMessage } from './legacy/tooltip/TooltipMessage'; +export { TooltipNote } from './legacy/tooltip/TooltipNote'; +export { + TooltipLinkList, + type Link as TooltipLinkListLink, +} from './legacy/tooltip/TooltipLinkList'; +export { default as ListItem } from './legacy/tooltip/ListItem'; + +// Toolbar and subcomponents +export { Tabs, TabsState, TabBar, TabWrapper } from './legacy/tabs/tabs'; +export { IconButton, IconButtonSkeleton, TabButton } from './legacy/bar/button'; +export { Separator, interleaveSeparators } from './legacy/bar/separator'; +export { Bar, FlexBar } from './legacy/bar/bar'; +export { AddonPanel } from './legacy/addon-panel/addon-panel'; + +// Graphics +export type { IconsProps } from './legacy/icon/icon'; +export { Icons, Symbols } from './legacy/icon/icon'; +export { icons } from './legacy/icon/icons'; +export { StorybookLogo } from './legacy/brand/StorybookLogo'; +export { StorybookIcon } from './legacy/brand/StorybookIcon'; + +// Loader +export { Loader } from './legacy/Loader/Loader'; + +// Utils +export { getStoryHref } from './legacy/utils/getStoryHref'; + +export * from './legacy/typography/DocumentFormatting'; +export * from './legacy/typography/ResetWrapper'; + +export { withReset, codeCommon } from './legacy/typography/lib/common'; + +export { ClipboardCode } from './legacy/clipboard/ClipboardCode'; + +// eslint-disable-next-line prefer-destructuring +export const components = typography.components; + +const resetComponents: Record<string, ElementType> = {}; + +Object.keys(typography.components).forEach((key) => { + // eslint-disable-next-line react/display-name + resetComponents[key] = forwardRef((props, ref) => createElement(key, { ...props, ref })); +}); + +export { resetComponents }; diff --git a/code/ui/components/src/legacy.ts b/code/ui/components/src/legacy.ts deleted file mode 100644 index f0a15962f3f1..000000000000 --- a/code/ui/components/src/legacy.ts +++ /dev/null @@ -1,102 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/triple-slash-reference -/// <reference path="./typings.d.ts" /> - -import type { ElementType } from 'react'; -import { createElement, forwardRef } from 'react'; -import * as typography from './legacy/typography/components'; - -export { A } from './legacy/typography/elements/A'; -export { Blockquote } from './legacy/typography/elements/Blockquote'; -export { Code } from './legacy/typography/elements/Code'; -export { Div } from './legacy/typography/elements/Div'; -export { DL } from './legacy/typography/elements/DL'; -export { H1 } from './legacy/typography/elements/H1'; -export { H2 } from './legacy/typography/elements/H2'; -export { H3 } from './legacy/typography/elements/H3'; -export { H4 } from './legacy/typography/elements/H4'; -export { H5 } from './legacy/typography/elements/H5'; -export { H6 } from './legacy/typography/elements/H6'; -export { HR } from './legacy/typography/elements/HR'; -export { Img } from './legacy/typography/elements/Img'; -export { LI } from './legacy/typography/elements/LI'; -export { OL } from './legacy/typography/elements/OL'; -export { P } from './legacy/typography/elements/P'; -export { Pre } from './legacy/typography/elements/Pre'; -export { Span } from './legacy/typography/elements/Span'; -export { Table } from './legacy/typography/elements/Table'; -export { TT } from './legacy/typography/elements/TT'; -export { UL } from './legacy/typography/elements/UL'; -export { Badge } from './legacy/Badge/Badge'; - -// Typography -export { Link } from './legacy/typography/link/link'; -export { DocumentWrapper } from './legacy/typography/DocumentWrapper'; -export type { - SyntaxHighlighterFormatTypes, - SyntaxHighlighterProps, - SyntaxHighlighterRendererProps, -} from './legacy/syntaxhighlighter/syntaxhighlighter-types'; -export { SyntaxHighlighter } from './legacy/syntaxhighlighter/lazy-syntaxhighlighter'; -export { createCopyToClipboardFunction } from './legacy/syntaxhighlighter/syntaxhighlighter'; - -// UI -export { ActionBar } from './legacy/ActionBar/ActionBar'; -export { Spaced } from './legacy/spaced/Spaced'; -export { Placeholder } from './legacy/placeholder/placeholder'; -export { ScrollArea } from './legacy/ScrollArea/ScrollArea'; -export { Zoom } from './legacy/Zoom/Zoom'; -export type { ActionItem } from './legacy/ActionBar/ActionBar'; -export { ErrorFormatter } from './legacy/ErrorFormatter/ErrorFormatter'; - -// Forms -export { Button } from './legacy/Button/Button'; -export { Form } from './legacy/form/index'; - -// Tooltips -export { WithTooltip, WithTooltipPure } from './legacy/tooltip/lazy-WithTooltip'; -export { TooltipMessage } from './legacy/tooltip/TooltipMessage'; -export { TooltipNote } from './legacy/tooltip/TooltipNote'; -export { - TooltipLinkList, - type Link as TooltipLinkListLink, -} from './legacy/tooltip/TooltipLinkList'; -export { default as ListItem } from './legacy/tooltip/ListItem'; - -// Toolbar and subcomponents -export { Tabs, TabsState, TabBar, TabWrapper } from './legacy/tabs/tabs'; -export { IconButton, IconButtonSkeleton, TabButton } from './legacy/bar/button'; -export { Separator, interleaveSeparators } from './legacy/bar/separator'; -export { Bar, FlexBar } from './legacy/bar/bar'; -export { AddonPanel } from './legacy/addon-panel/addon-panel'; - -// Graphics -export type { IconsProps } from './legacy/icon/icon'; -export { Icons, Symbols } from './legacy/icon/icon'; -export { icons } from './legacy/icon/icons'; -export { StorybookLogo } from './legacy/brand/StorybookLogo'; -export { StorybookIcon } from './legacy/brand/StorybookIcon'; - -// Loader -export { Loader } from './legacy/Loader/Loader'; - -// Utils -export { getStoryHref } from './legacy/utils/getStoryHref'; - -export * from './legacy/typography/DocumentFormatting'; -export * from './legacy/typography/ResetWrapper'; - -export { withReset, codeCommon } from './legacy/typography/lib/common'; - -export { ClipboardCode } from './legacy/clipboard/ClipboardCode'; - -// eslint-disable-next-line prefer-destructuring -export const components = typography.components; - -const resetComponents: Record<string, ElementType> = {}; - -Object.keys(typography.components).forEach((key) => { - // eslint-disable-next-line react/display-name - resetComponents[key] = forwardRef((props, ref) => createElement(key, { ...props, ref })); -}); - -export { resetComponents }; diff --git a/code/ui/components/src/new/Button/Button.tsx b/code/ui/components/src/new/Button/Button.tsx index 4345a530e5af..3a39d462bf84 100644 --- a/code/ui/components/src/new/Button/Button.tsx +++ b/code/ui/components/src/new/Button/Button.tsx @@ -2,7 +2,7 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; import { ButtonWrapper } from './styles'; -export type ButtonProps = ( +export type ButtonPropsOld = ( | React.ButtonHTMLAttributes<HTMLButtonElement> | React.AnchorHTMLAttributes<HTMLAnchorElement> ) & { @@ -18,7 +18,7 @@ export type ButtonProps = ( const ButtonLink = ButtonWrapper.withComponent('a'); -export const Button = forwardRef<any, ButtonProps>((props, ref) => { +export const ButtonOld = forwardRef<any, ButtonPropsOld>((props, ref) => { const { size = 'medium', variant = 'primary', @@ -60,4 +60,47 @@ export const Button = forwardRef<any, ButtonProps>((props, ref) => { ); }); +ButtonOld.displayName = 'ButtonOld'; + +type PropsOf<T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = + JSX.LibraryManagedAttributes<T, React.ComponentPropsWithRef<T>>; + +export interface ButtonProps<T extends React.ElementType = React.ElementType> { + as?: T; + children: string; + size?: 'small' | 'medium'; + variant?: 'primary' | 'secondary' | 'tertiary'; + icon?: ReactNode; + iconOnly?: boolean; + onClick?: () => void; + disabled?: boolean; + active?: boolean; +} + +export const Button: { + <E extends React.ElementType = 'button'>( + props: ButtonProps<E> & Omit<PropsOf<E>, keyof ButtonProps> + ): JSX.Element; + displayName?: string; +} = forwardRef( + ({ as, children, icon, iconOnly, ...props }: ButtonProps, ref: React.Ref<Element>) => { + const Component = as ?? ButtonWrapper; + + return ( + <Component ref={ref} {...props}> + {icon} + {!iconOnly && children} + </Component> + ); + } +); + Button.displayName = 'Button'; + +// const Link = (props: { to: string }) => <a {...props} />; + +// const A = ( +// <Button as={'a'} href='/bl'> +// asdf +// </Button> +// ); diff --git a/code/yarn.lock b/code/yarn.lock index 1fe03d3880d1..820f77a52beb 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6414,24 +6414,6 @@ __metadata: languageName: node linkType: hard -"@storybook/experimental-ui@workspace:ui/experimental-ui": - version: 0.0.0-use.local - resolution: "@storybook/experimental-ui@workspace:ui/experimental-ui" - dependencies: - "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.1.0-rc.0 - "@storybook/theming": 7.1.0-rc.0 - polished: ^4.2.2 - prettier: ^2.8.0 - typescript: ~4.9.3 - vite: ^4.4.2 - vite-plugin-turbosnap: ^1.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft - "@storybook/global@npm:^5.0.0": version: 5.0.0 resolution: "@storybook/global@npm:5.0.0" @@ -24950,17 +24932,6 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.24": - version: 8.4.25 - resolution: "postcss@npm:8.4.25" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: aa2143cb5ed6eef6cb1d38236f158c5fe11bfd1f338c930cf4901f09586874e05fa006e3fd329ca51c61202c7e90d0705379e6310251c9311116e65cb6a08c18 - languageName: node - linkType: hard - "preact-render-to-string@npm:^5.1.19": version: 5.2.6 resolution: "preact-render-to-string@npm:5.2.6" @@ -27154,20 +27125,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^3.25.2": - version: 3.26.2 - resolution: "rollup@npm:3.26.2" - dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 - languageName: node - linkType: hard - "rst-selector-parser@npm:^2.2.3": version: 2.2.3 resolution: "rst-selector-parser@npm:2.2.3" @@ -30554,7 +30511,7 @@ __metadata: languageName: node linkType: hard -"vite-plugin-turbosnap@npm:^1.0.1, vite-plugin-turbosnap@npm:^1.0.2": +"vite-plugin-turbosnap@npm:^1.0.1": version: 1.0.2 resolution: "vite-plugin-turbosnap@npm:1.0.2" checksum: baa823428ce62ac935597386a85bb525ec4334f0945aa667aeb011cc1bf23fe52865ec7f3e1bd30a02bb175ef2223a76387862ff20acef1ff2affb6bf3d71553 @@ -30598,46 +30555,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:^4.4.2": - version: 4.4.2 - resolution: "vite@npm:4.4.2" - dependencies: - esbuild: ^0.18.10 - fsevents: ~2.3.2 - postcss: ^8.4.24 - rollup: ^3.25.2 - peerDependencies: - "@types/node": ">= 14" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 8c505f45cc28a67a31a6b944d1a319c63f6cda98e1e38c6da46e604f7981cdb3fb08c022d4887a190dd88f9d0d6155e992f2206f0cacb301103f5eec53182c3b - languageName: node - linkType: hard - "vitefu@npm:^0.2.4": version: 0.2.4 resolution: "vitefu@npm:0.2.4" From 9223ba6be58cc9f56a70baf1e81d084598436130 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 12 Jul 2023 11:48:23 +0100 Subject: [PATCH 100/135] Update main.ts --- code/ui/.storybook/main.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/ui/.storybook/main.ts b/code/ui/.storybook/main.ts index 851a1c90d0af..b21c8b0f9413 100644 --- a/code/ui/.storybook/main.ts +++ b/code/ui/.storybook/main.ts @@ -8,19 +8,19 @@ const isBlocksOnly = process.env.STORYBOOK_BLOCKS_ONLY === 'true'; const allStories = [ { directory: '../components/src/new', - titlePrefix: '@storybook-ui', + titlePrefix: '@core-ui', }, { directory: '../manager/src', - titlePrefix: '@storybook-manager', + titlePrefix: '@manager', }, { directory: '../components/src/legacy', - titlePrefix: '@storybook-components', + titlePrefix: '@components', }, { directory: '../blocks/src', - titlePrefix: '@storybook-blocks', + titlePrefix: '@blocks', }, ]; From a3b01c7a7bbb3982e73abca2a85dd705fe895268 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 12 Jul 2023 11:50:46 +0100 Subject: [PATCH 101/135] Remove old button --- code/ui/components/src/new/Button/Button.tsx | 68 -------------------- 1 file changed, 68 deletions(-) diff --git a/code/ui/components/src/new/Button/Button.tsx b/code/ui/components/src/new/Button/Button.tsx index 3a39d462bf84..a195892fb53d 100644 --- a/code/ui/components/src/new/Button/Button.tsx +++ b/code/ui/components/src/new/Button/Button.tsx @@ -2,66 +2,6 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; import { ButtonWrapper } from './styles'; -export type ButtonPropsOld = ( - | React.ButtonHTMLAttributes<HTMLButtonElement> - | React.AnchorHTMLAttributes<HTMLAnchorElement> -) & { - children: string; - size?: 'small' | 'medium'; - variant?: 'primary' | 'secondary' | 'tertiary'; - icon?: ReactNode; - iconOnly?: boolean; - onClick?: () => void; - disabled?: boolean; - active?: boolean; -}; - -const ButtonLink = ButtonWrapper.withComponent('a'); - -export const ButtonOld = forwardRef<any, ButtonPropsOld>((props, ref) => { - const { - size = 'medium', - variant = 'primary', - icon, - iconOnly = false, - disabled = false, - active = false, - children, - } = props; - if ('href' in props) - return ( - <ButtonLink - ref={ref} - size={size} - variant={variant} - disabled={disabled} - active={active} - iconOnly={iconOnly} - {...(props as React.AnchorHTMLAttributes<HTMLAnchorElement>)} - > - {icon} - {!iconOnly && children} - </ButtonLink> - ); - - return ( - <ButtonWrapper - ref={ref} - size={size} - variant={variant} - disabled={disabled} - active={active} - iconOnly={iconOnly} - {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)} - > - {icon} - {!iconOnly && children} - </ButtonWrapper> - ); -}); - -ButtonOld.displayName = 'ButtonOld'; - type PropsOf<T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = JSX.LibraryManagedAttributes<T, React.ComponentPropsWithRef<T>>; @@ -96,11 +36,3 @@ export const Button: { ); Button.displayName = 'Button'; - -// const Link = (props: { to: string }) => <a {...props} />; - -// const A = ( -// <Button as={'a'} href='/bl'> -// asdf -// </Button> -// ); From 428e6ce087c680c91c92a2eac74034069cb9dd72 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 13:10:42 +0200 Subject: [PATCH 102/135] add test for early setting of selection in preview-web --- .../modules/preview-web/PreviewWeb.test.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts index 1a0188c1e55e..387aaa7107d4 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts @@ -1552,6 +1552,32 @@ describe('PreviewWeb', () => { jest.useRealTimers(); }); + it('listens for events during setup', async () => { + document.location.search = '?id=component-one--a'; + + const initialized = new PreviewWeb().initialize({ + importFn, + getProjectAnnotations, + }); + + emitter.emit(SET_CURRENT_STORY, { + storyId: 'component-one--b', + viewMode: 'story', + }); + + await initialized; + + await waitForRender(); + + await waitForSetCurrentStory(); + + expect(history.replaceState).toHaveBeenCalledWith( + {}, + '', + 'pathname?id=component-one--b&viewMode=story' + ); + }); + it('updates URL', async () => { document.location.search = '?id=component-one--a'; await createAndRenderPreview(); From 701d56013dd3c35eeafcdd70792bcd2dcefeddc2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 13:23:21 +0200 Subject: [PATCH 103/135] add migration documentation --- MIGRATION.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/MIGRATION.md b/MIGRATION.md index 618fe072a5a1..3680c3d10e6a 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1,5 +1,7 @@ <h1>Migration</h1> +- [From version 7.0.0 to 7.2.0](#from-version-700-to-720) + - [Addon API are more type-strict](#addon-api-are-more-type-strict) - [From version 6.5.x to 7.0.0](#from-version-65x-to-700) - [7.0 breaking changes](#70-breaking-changes) - [Dropped support for Node 15 and below](#dropped-support-for-node-15-and-below) @@ -300,6 +302,31 @@ - [Packages renaming](#packages-renaming) - [Deprecated embedded addons](#deprecated-embedded-addons) +## From version 7.0.0 to 7.2.0 + +#### Addon API are more type-strict + +When registering an addon using `@storybook/manager-api`, the addon API is now more type-strict. This means if you use typescript to compile your addon before publishing it might start giving you errors. + +The `type` property is now required field, and the `id` property should not be set anymore. + +Here's a correct example: +```tsx +import { addons, types } from '@storybook/manager-api'; + +addons.register('my-addon', () => { + addons.add('my-addon/panel', { + type: types.PANEL, + title: 'My Addon', + render: ({ active }) => active ? <div>Hello World</div> : null, + }); +}); +``` + +The API: `addons.addPanel()` is now deprecated, and will be removed in 8.0.0. Please use `addons.add()` instead. + +The `render` method can now be a `React.FunctionComponent` (without the `children` prop). Storybook will now render it, rather than calling it as a function. + ## From version 6.5.x to 7.0.0 A number of these changes can be made automatically by the Storybook CLI. To take advantage of these "automigrations", run `npx storybook@latest upgrade --prerelease` or `pnpx dlx storybook@latest upgrade --prerelease`. From 477ac693de81c4b12a232df4c2069c3b637a5c95 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 12 Jul 2023 12:47:01 +0100 Subject: [PATCH 104/135] Styles --- .../src/new/Button/Button.stories.tsx | 4 +- code/ui/components/src/new/Button/Button.tsx | 26 +-- code/ui/components/src/new/Button/styles.ts | 157 +++++++++--------- 3 files changed, 96 insertions(+), 91 deletions(-) diff --git a/code/ui/components/src/new/Button/Button.stories.tsx b/code/ui/components/src/new/Button/Button.stories.tsx index 50641949dc0e..9366f5af32fa 100644 --- a/code/ui/components/src/new/Button/Button.stories.tsx +++ b/code/ui/components/src/new/Button/Button.stories.tsx @@ -167,7 +167,9 @@ export const WithHref: Story = { render: () => ( <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}> <Button onClick={() => console.log('Hello')}>I am a button using onClick</Button> - <Button href="https://storybook.js.org/">I am an anchor using Href</Button> + <Button as="a" href="https://storybook.js.org/"> + I am an anchor using Href + </Button> </div> ), }; diff --git a/code/ui/components/src/new/Button/Button.tsx b/code/ui/components/src/new/Button/Button.tsx index a195892fb53d..6892dbf589ae 100644 --- a/code/ui/components/src/new/Button/Button.tsx +++ b/code/ui/components/src/new/Button/Button.tsx @@ -1,5 +1,6 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; +import { css } from '@storybook/theming'; import { ButtonWrapper } from './styles'; type PropsOf<T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = @@ -17,22 +18,23 @@ export interface ButtonProps<T extends React.ElementType = React.ElementType> { active?: boolean; } +const superStyles = css` + background-color: aliceblue; +`; + export const Button: { <E extends React.ElementType = 'button'>( props: ButtonProps<E> & Omit<PropsOf<E>, keyof ButtonProps> ): JSX.Element; displayName?: string; -} = forwardRef( - ({ as, children, icon, iconOnly, ...props }: ButtonProps, ref: React.Ref<Element>) => { - const Component = as ?? ButtonWrapper; - - return ( - <Component ref={ref} {...props}> - {icon} - {!iconOnly && children} - </Component> - ); - } -); +} = forwardRef(({ as, children, icon, ...props }: ButtonProps, ref: React.Ref<Element>) => { + const Component = as ?? 'button'; + return ( + <Component className={superStyles} as={as} ref={ref} {...props}> + {icon} + {!props.iconOnly && children} + </Component> + ); +}); Button.displayName = 'Button'; diff --git a/code/ui/components/src/new/Button/styles.ts b/code/ui/components/src/new/Button/styles.ts index 5bc8dd401204..ea7c214609a5 100644 --- a/code/ui/components/src/new/Button/styles.ts +++ b/code/ui/components/src/new/Button/styles.ts @@ -2,87 +2,88 @@ import { styled } from '@storybook/theming'; import { darken, lighten, rgba, transparentize } from 'polished'; import type { ButtonProps } from './Button'; -export const ButtonWrapper = styled.button<{ - variant: ButtonProps['variant']; - size: ButtonProps['size']; - disabled: ButtonProps['disabled']; - active: ButtonProps['active']; - iconOnly: ButtonProps['iconOnly']; -}>(({ theme, variant, size, disabled, active, iconOnly }) => ({ - border: 0, - cursor: disabled ? 'not-allowed' : 'pointer', - display: 'inline-flex', - gap: '6px', - alignItems: 'center', - justifyContent: 'center', - overflow: 'hidden', - padding: `${(() => { - if (!iconOnly && size === 'small') return '0 10px'; - if (!iconOnly && size === 'medium') return '0 12px'; - return 0; - })()}`, - width: `${(() => { - if (iconOnly && size === 'small') return '28px'; - if (iconOnly && size === 'medium') return '32px'; - return 'auto'; - })()}`, - height: size === 'small' ? '28px' : '32px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: disabled ? 0.5 : 1, - margin: 0, - fontSize: `${theme.typography.size.s1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - background: `${(() => { - if (variant === 'primary') return theme.color.secondary; - if (variant === 'secondary') return theme.button.background; - if (variant === 'tertiary' && active) return theme.background.hoverable; - return 'transparent'; - })()}`, - color: `${(() => { - if (variant === 'primary') return theme.color.lightest; - if (variant === 'secondary') return theme.input.color; - if (variant === 'tertiary' && active) return theme.color.secondary; - if (variant === 'tertiary') return theme.color.mediumdark; - return theme.input.color; - })()}`, - boxShadow: variant === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', - borderRadius: theme.input.borderRadius, +type ButtonWrapperProps = Pick< + ButtonProps, + 'variant' | 'size' | 'disabled' | 'active' | 'iconOnly' +>; - '&:hover': { - color: variant === 'tertiary' ? theme.color.secondary : null, +export const ButtonWrapper = styled.button<ButtonWrapperProps>( + ({ theme, variant, size, disabled, active, iconOnly }) => ({ + border: 0, + cursor: disabled ? 'not-allowed' : 'pointer', + display: 'inline-flex', + gap: '6px', + alignItems: 'center', + justifyContent: 'center', + overflow: 'hidden', + padding: `${(() => { + if (!iconOnly && size === 'small') return '0 10px'; + if (!iconOnly && size === 'medium') return '0 12px'; + return 0; + })()}`, + width: `${(() => { + if (iconOnly && size === 'small') return '28px'; + if (iconOnly && size === 'medium') return '32px'; + return 'auto'; + })()}`, + height: size === 'small' ? '28px' : '32px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: disabled ? 0.5 : 1, + margin: 0, + fontSize: `${theme.typography.size.s1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', background: `${(() => { - let bgColor = theme.color.secondary; - if (variant === 'primary') bgColor = theme.color.secondary; - if (variant === 'secondary') bgColor = theme.button.background; - - if (variant === 'tertiary') return transparentize(0.86, theme.color.secondary); - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + if (variant === 'primary') return theme.color.secondary; + if (variant === 'secondary') return theme.button.background; + if (variant === 'tertiary' && active) return theme.background.hoverable; + return 'transparent'; + })()}`, + color: `${(() => { + if (variant === 'primary') return theme.color.lightest; + if (variant === 'secondary') return theme.input.color; + if (variant === 'tertiary' && active) return theme.color.secondary; + if (variant === 'tertiary') return theme.color.mediumdark; + return theme.input.color; })()}`, - }, + boxShadow: variant === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', + borderRadius: theme.input.borderRadius, - '&:active': { - color: variant === 'tertiary' ? theme.color.secondary : null, - background: `${(() => { - let bgColor = theme.color.secondary; - if (variant === 'primary') bgColor = theme.color.secondary; - if (variant === 'secondary') bgColor = theme.button.background; + '&:hover': { + color: variant === 'tertiary' ? theme.color.secondary : null, + background: `${(() => { + let bgColor = theme.color.secondary; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; - if (variant === 'tertiary') return theme.background.hoverable; - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); - })()}`, - }, + if (variant === 'tertiary') return transparentize(0.86, theme.color.secondary); + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:active': { + color: variant === 'tertiary' ? theme.color.secondary : null, + background: `${(() => { + let bgColor = theme.color.secondary; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; + + if (variant === 'tertiary') return theme.background.hoverable; + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, -})); + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, + }) +); From f7c0e64ae76b99925cc0d70cf27840ca3d70afc2 Mon Sep 17 00:00:00 2001 From: Kasper Peulen <kasperpeulen@gmail.com> Date: Wed, 12 Jul 2023 14:55:38 +0200 Subject: [PATCH 105/135] Cleanup Button --- code/ui/components/src/new/Button/Button.tsx | 119 ++++++++++++++++--- code/ui/components/src/new/Button/styles.ts | 89 -------------- code/ui/components/src/new/utils/types.ts | 4 + 3 files changed, 105 insertions(+), 107 deletions(-) delete mode 100644 code/ui/components/src/new/Button/styles.ts create mode 100644 code/ui/components/src/new/utils/types.ts diff --git a/code/ui/components/src/new/Button/Button.tsx b/code/ui/components/src/new/Button/Button.tsx index 6892dbf589ae..a769bdf079e2 100644 --- a/code/ui/components/src/new/Button/Button.tsx +++ b/code/ui/components/src/new/Button/Button.tsx @@ -1,10 +1,8 @@ import type { ReactNode } from 'react'; import React, { forwardRef } from 'react'; -import { css } from '@storybook/theming'; -import { ButtonWrapper } from './styles'; - -type PropsOf<T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = - JSX.LibraryManagedAttributes<T, React.ComponentPropsWithRef<T>>; +import { styled } from '@storybook/theming'; +import { darken, lighten, rgba, transparentize } from 'polished'; +import type { PropsOf } from '../utils/types'; export interface ButtonProps<T extends React.ElementType = React.ElementType> { as?: T; @@ -18,23 +16,108 @@ export interface ButtonProps<T extends React.ElementType = React.ElementType> { active?: boolean; } -const superStyles = css` - background-color: aliceblue; -`; - export const Button: { <E extends React.ElementType = 'button'>( props: ButtonProps<E> & Omit<PropsOf<E>, keyof ButtonProps> ): JSX.Element; displayName?: string; -} = forwardRef(({ as, children, icon, ...props }: ButtonProps, ref: React.Ref<Element>) => { - const Component = as ?? 'button'; - return ( - <Component className={superStyles} as={as} ref={ref} {...props}> - {icon} - {!props.iconOnly && children} - </Component> - ); -}); +} = forwardRef( + ({ as, children, icon, ...props }: ButtonProps, ref: React.Ref<HTMLButtonElement>) => { + return ( + <StyledButton as={as} ref={ref} {...props}> + {icon} + {!props.iconOnly && children} + </StyledButton> + ); + } +); Button.displayName = 'Button'; + +const StyledButton = styled.button<Omit<ButtonProps, 'children'>>( + ({ + theme, + variant = 'primary', + size = 'medium', + disabled = false, + active = false, + iconOnly = false, + }) => ({ + border: 0, + cursor: disabled ? 'not-allowed' : 'pointer', + display: 'inline-flex', + gap: '6px', + alignItems: 'center', + justifyContent: 'center', + overflow: 'hidden', + padding: `${(() => { + if (!iconOnly && size === 'small') return '0 10px'; + if (!iconOnly && size === 'medium') return '0 12px'; + return 0; + })()}`, + width: `${(() => { + if (iconOnly && size === 'small') return '28px'; + if (iconOnly && size === 'medium') return '32px'; + return 'auto'; + })()}`, + height: size === 'small' ? '28px' : '32px', + position: 'relative', + textAlign: 'center', + textDecoration: 'none', + transitionProperty: 'background, box-shadow', + transitionDuration: '150ms', + transitionTimingFunction: 'ease-out', + verticalAlign: 'top', + whiteSpace: 'nowrap', + userSelect: 'none', + opacity: disabled ? 0.5 : 1, + margin: 0, + fontSize: `${theme.typography.size.s1}px`, + fontWeight: theme.typography.weight.bold, + lineHeight: '1', + background: `${(() => { + if (variant === 'primary') return theme.color.secondary; + if (variant === 'secondary') return theme.button.background; + if (variant === 'tertiary' && active) return theme.background.hoverable; + return 'transparent'; + })()}`, + color: `${(() => { + if (variant === 'primary') return theme.color.lightest; + if (variant === 'secondary') return theme.input.color; + if (variant === 'tertiary' && active) return theme.color.secondary; + if (variant === 'tertiary') return theme.color.mediumdark; + return theme.input.color; + })()}`, + boxShadow: variant === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', + borderRadius: theme.input.borderRadius, + + '&:hover': { + color: variant === 'tertiary' ? theme.color.secondary : null, + background: `${(() => { + let bgColor = theme.color.secondary; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; + + if (variant === 'tertiary') return transparentize(0.86, theme.color.secondary); + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:active': { + color: variant === 'tertiary' ? theme.color.secondary : null, + background: `${(() => { + let bgColor = theme.color.secondary; + if (variant === 'primary') bgColor = theme.color.secondary; + if (variant === 'secondary') bgColor = theme.button.background; + + if (variant === 'tertiary') return theme.background.hoverable; + return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); + })()}`, + }, + + '&:focus': { + boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, + outline: 'none', + }, + }) +); diff --git a/code/ui/components/src/new/Button/styles.ts b/code/ui/components/src/new/Button/styles.ts deleted file mode 100644 index ea7c214609a5..000000000000 --- a/code/ui/components/src/new/Button/styles.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { styled } from '@storybook/theming'; -import { darken, lighten, rgba, transparentize } from 'polished'; -import type { ButtonProps } from './Button'; - -type ButtonWrapperProps = Pick< - ButtonProps, - 'variant' | 'size' | 'disabled' | 'active' | 'iconOnly' ->; - -export const ButtonWrapper = styled.button<ButtonWrapperProps>( - ({ theme, variant, size, disabled, active, iconOnly }) => ({ - border: 0, - cursor: disabled ? 'not-allowed' : 'pointer', - display: 'inline-flex', - gap: '6px', - alignItems: 'center', - justifyContent: 'center', - overflow: 'hidden', - padding: `${(() => { - if (!iconOnly && size === 'small') return '0 10px'; - if (!iconOnly && size === 'medium') return '0 12px'; - return 0; - })()}`, - width: `${(() => { - if (iconOnly && size === 'small') return '28px'; - if (iconOnly && size === 'medium') return '32px'; - return 'auto'; - })()}`, - height: size === 'small' ? '28px' : '32px', - position: 'relative', - textAlign: 'center', - textDecoration: 'none', - transitionProperty: 'background, box-shadow', - transitionDuration: '150ms', - transitionTimingFunction: 'ease-out', - verticalAlign: 'top', - whiteSpace: 'nowrap', - userSelect: 'none', - opacity: disabled ? 0.5 : 1, - margin: 0, - fontSize: `${theme.typography.size.s1}px`, - fontWeight: theme.typography.weight.bold, - lineHeight: '1', - background: `${(() => { - if (variant === 'primary') return theme.color.secondary; - if (variant === 'secondary') return theme.button.background; - if (variant === 'tertiary' && active) return theme.background.hoverable; - return 'transparent'; - })()}`, - color: `${(() => { - if (variant === 'primary') return theme.color.lightest; - if (variant === 'secondary') return theme.input.color; - if (variant === 'tertiary' && active) return theme.color.secondary; - if (variant === 'tertiary') return theme.color.mediumdark; - return theme.input.color; - })()}`, - boxShadow: variant === 'secondary' ? `${theme.button.border} 0 0 0 1px inset` : 'none', - borderRadius: theme.input.borderRadius, - - '&:hover': { - color: variant === 'tertiary' ? theme.color.secondary : null, - background: `${(() => { - let bgColor = theme.color.secondary; - if (variant === 'primary') bgColor = theme.color.secondary; - if (variant === 'secondary') bgColor = theme.button.background; - - if (variant === 'tertiary') return transparentize(0.86, theme.color.secondary); - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); - })()}`, - }, - - '&:active': { - color: variant === 'tertiary' ? theme.color.secondary : null, - background: `${(() => { - let bgColor = theme.color.secondary; - if (variant === 'primary') bgColor = theme.color.secondary; - if (variant === 'secondary') bgColor = theme.button.background; - - if (variant === 'tertiary') return theme.background.hoverable; - return theme.base === 'light' ? darken(0.02, bgColor) : lighten(0.03, bgColor); - })()}`, - }, - - '&:focus': { - boxShadow: `${rgba(theme.color.secondary, 1)} 0 0 0 1px inset`, - outline: 'none', - }, - }) -); diff --git a/code/ui/components/src/new/utils/types.ts b/code/ui/components/src/new/utils/types.ts new file mode 100644 index 000000000000..f5713d0b3479 --- /dev/null +++ b/code/ui/components/src/new/utils/types.ts @@ -0,0 +1,4 @@ +import type React from 'react'; + +export type PropsOf<T extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>> = + JSX.LibraryManagedAttributes<T, React.ComponentPropsWithRef<T>>; From 3e53034524127c7d6316468852b23c1169d1844a Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 12 Jul 2023 14:12:25 +0100 Subject: [PATCH 106/135] Remove unnecessary commands --- .circleci/config.yml | 1 - code/package.json | 3 --- 2 files changed, 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b73e79428ffb..eb5494e7e43d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -248,7 +248,6 @@ jobs: command: | cd code yarn storybook:ui:chromatic - yarn storybook:experimental-ui:chromatic yarn storybook:blocks:chromatic - report-workflow-on-failure - store_test_results: diff --git a/code/package.json b/code/package.json index e5c7b7894392..95ae4ab8d687 100644 --- a/code/package.json +++ b/code/package.json @@ -49,9 +49,6 @@ "storybook:blocks": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui", "storybook:blocks:build": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:build", "storybook:blocks:chromatic": "STORYBOOK_BLOCKS_ONLY=true yarn storybook:ui:chromatic --project-token=${CHROMATIC_TOKEN_STORYBOOK_BLOCKS:-MISSING_PROJECT_TOKEN}", - "storybook:experimental-ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/experimental-ui/.storybook", - "storybook:experimental-ui:build": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js build --config-dir ./ui/experimental-ui/.storybook", - "storybook:experimental-ui:chromatic": "yarn chromatic --build-script-name storybook:experimental-ui:build --storybook-config-dir ./ui/experimental-ui/.storybook --storybook-base-dir ./code --project-token=${CHROMATIC_TOKEN_STORYBOOK_EXPERIMENTAL_UI:-MISSING_PROJECT_TOKEN} --only-changed --exit-zero-on-changes --exit-once-uploaded", "storybook:ui": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js dev --port 6006 --config-dir ./ui/.storybook", "storybook:ui:build": "NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" ./lib/cli/bin/index.js build --config-dir ./ui/.storybook", "storybook:ui:chromatic": "yarn chromatic --build-script-name storybook:ui:build --storybook-config-dir ./ui/.storybook --storybook-base-dir ./code --project-token=${CHROMATIC_TOKEN_STORYBOOK_UI:-MISSING_PROJECT_TOKEN} --only-changed --exit-zero-on-changes --exit-once-uploaded", From f0b368d88f8395c4bcfc120daa39b5959eaaaf6e Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 15:18:47 +0200 Subject: [PATCH 107/135] move test --- .../modules/preview-web/PreviewWeb.test.ts | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts index 387aaa7107d4..337e8b625a1f 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts @@ -1552,32 +1552,6 @@ describe('PreviewWeb', () => { jest.useRealTimers(); }); - it('listens for events during setup', async () => { - document.location.search = '?id=component-one--a'; - - const initialized = new PreviewWeb().initialize({ - importFn, - getProjectAnnotations, - }); - - emitter.emit(SET_CURRENT_STORY, { - storyId: 'component-one--b', - viewMode: 'story', - }); - - await initialized; - - await waitForRender(); - - await waitForSetCurrentStory(); - - expect(history.replaceState).toHaveBeenCalledWith( - {}, - '', - 'pathname?id=component-one--b&viewMode=story' - ); - }); - it('updates URL', async () => { document.location.search = '?id=component-one--a'; await createAndRenderPreview(); @@ -1650,6 +1624,32 @@ describe('PreviewWeb', () => { expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING, 'component-one--b'); expect(mockChannel.emit).toHaveBeenCalledWith(STORY_RENDERED, 'component-one--b'); }); + + it('listens for events during setup', async () => { + document.location.search = '?id=component-one--a'; + + const initialized = new PreviewWeb().initialize({ + importFn, + getProjectAnnotations, + }); + + emitter.emit(SET_CURRENT_STORY, { + storyId: 'component-one--b', + viewMode: 'story', + }); + + await initialized; + + await waitForRender(); + + await waitForSetCurrentStory(); + + expect(history.replaceState).toHaveBeenCalledWith( + {}, + '', + 'pathname?id=component-one--b&viewMode=story' + ); + }); }); describe('if called on a storybook without selection', () => { From 24abad2765f317cdbe21c60bf7dc67a1164263f5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 12 Jul 2023 15:24:09 +0200 Subject: [PATCH 108/135] fix --- code/ui/manager/src/settings/typings.d.ts | 16 ---------------- code/ui/manager/src/typings.d.ts | 12 ++++++++++++ 2 files changed, 12 insertions(+), 16 deletions(-) delete mode 100644 code/ui/manager/src/settings/typings.d.ts diff --git a/code/ui/manager/src/settings/typings.d.ts b/code/ui/manager/src/settings/typings.d.ts deleted file mode 100644 index 95e36ac9fcf9..000000000000 --- a/code/ui/manager/src/settings/typings.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -/* eslint-disable @typescript-eslint/naming-convention */ -declare module '@storybook/components/src/treeview/utils'; - -declare var FEATURES: import('@storybook/types').StorybookConfig['features']; - -declare var __REACT__: any; -declare var __REACTDOM__: any; -declare var __STORYBOOKCOMPONENTS__: any; -declare var __STORYBOOKCHANNELS__: any; -declare var __STORYBOOKCOREEVENTS__: any; -declare var __STORYBOOKROUTER__: any; -declare var __STORYBOOKTHEMING__: any; -declare var __STORYBOOKAPI__: any; -declare var __STORYBOOKADDONS__: any; -declare var __STORYBOOKCLIENTLOGGER__: any; diff --git a/code/ui/manager/src/typings.d.ts b/code/ui/manager/src/typings.d.ts index b458d60aa911..f46c49b91852 100644 --- a/code/ui/manager/src/typings.d.ts +++ b/code/ui/manager/src/typings.d.ts @@ -13,3 +13,15 @@ declare var FEATURES: import('@storybook/types').StorybookConfig['features']; declare var REFS: any; declare var VERSIONCHECK: any; declare var LOGLEVEL: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined; + +declare var __REACT__: any; +declare var __REACTDOM__: any; +declare var __STORYBOOKCOMPONENTS__: any; +declare var __STORYBOOKCOMPONENTSEXPERIMENTAL__: any; +declare var __STORYBOOKCHANNELS__: any; +declare var __STORYBOOKCOREEVENTS__: any; +declare var __STORYBOOKROUTER__: any; +declare var __STORYBOOKTHEMING__: any; +declare var __STORYBOOKAPI__: any; +declare var __STORYBOOKADDONS__: any; +declare var __STORYBOOKCLIENTLOGGER__: any; From 2aa315e3a8f076d98f57a16feaab024e4c280a29 Mon Sep 17 00:00:00 2001 From: Tom Coleman <tom@chromatic.com> Date: Thu, 13 Jul 2023 10:24:18 +1000 Subject: [PATCH 109/135] Straighten out behaviour when messages are received during init --- .../modules/preview-web/PreviewWeb.test.ts | 38 +++++++++++-------- .../preview-web/PreviewWithSelection.tsx | 7 ++++ 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts index 337e8b625a1f..2ea60edeef83 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts @@ -1601,17 +1601,19 @@ describe('PreviewWeb', () => { }); describe('if called before the preview is initialized', () => { - it('still renders the selected story, once ready', async () => { + it('works when there was no selection specifier', async () => { document.location.search = ''; // We intentionally are *not* awaiting here new PreviewWeb().initialize({ importFn, getProjectAnnotations }); - emitter.emit(SET_CURRENT_STORY, { - storyId: 'component-one--b', - viewMode: 'story', - }); + emitter.emit(SET_CURRENT_STORY, { storyId: 'component-one--b', viewMode: 'story' }); await waitForEvents([STORY_RENDERED]); + + // Check we don't render the default "story missing" UI / emit the default message + expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING); + + // We of course should emit for the selected story expect(mockChannel.emit).toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { storyId: 'component-one--b', viewMode: 'story', @@ -1621,11 +1623,10 @@ describe('PreviewWeb', () => { '', 'pathname?id=component-one--b&viewMode=story' ); - expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING, 'component-one--b'); expect(mockChannel.emit).toHaveBeenCalledWith(STORY_RENDERED, 'component-one--b'); }); - it('listens for events during setup', async () => { + it('works when there was a selection specifier', async () => { document.location.search = '?id=component-one--a'; const initialized = new PreviewWeb().initialize({ @@ -1633,22 +1634,29 @@ describe('PreviewWeb', () => { getProjectAnnotations, }); - emitter.emit(SET_CURRENT_STORY, { - storyId: 'component-one--b', - viewMode: 'story', - }); - - await initialized; + emitter.emit(SET_CURRENT_STORY, { storyId: 'component-one--b', viewMode: 'story' }); - await waitForRender(); + await waitForEvents([STORY_RENDERED]); - await waitForSetCurrentStory(); + // If we emitted CURRENT_STORY_WAS_SET for the original selection, the manager might + // get confused, so check that we don't + expect(mockChannel.emit).not.toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { + storyId: 'component-one--a', + viewMode: 'story', + }); + // Double check this doesn't happen either + expect(mockChannel.emit).not.toHaveBeenCalledWith(STORY_MISSING); expect(history.replaceState).toHaveBeenCalledWith( {}, '', 'pathname?id=component-one--b&viewMode=story' ); + expect(mockChannel.emit).toHaveBeenCalledWith(CURRENT_STORY_WAS_SET, { + storyId: 'component-one--b', + viewMode: 'story', + }); + expect(mockChannel.emit).toHaveBeenCalledWith(STORY_RENDERED, 'component-one--b'); }); }); diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx index 7b20e20c8ba1..ca30544d7c49 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWithSelection.tsx @@ -130,6 +130,13 @@ export class PreviewWithSelection<TFramework extends Renderer> extends Preview<T if (!this.storyStore.storyIndex) throw new Error(`Cannot call selectSpecifiedStory before initialization`); + // If the story has been selected during initialization - if `SET_CURRENT_STORY` is + // emitted while we are loading the preview, we don't need to do any selection now. + if (this.selectionStore.selection) { + await this.renderSelection(); + return; + } + if (!this.selectionStore.selectionSpecifier) { this.renderMissingStory(); return; From df8bf31527c9c954f0543c372257fece11eff9c5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 09:29:27 +0200 Subject: [PATCH 110/135] fix --- code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts index 2ea60edeef83..41e735ebfddb 100644 --- a/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts +++ b/code/lib/preview-api/src/modules/preview-web/PreviewWeb.test.ts @@ -1636,6 +1636,7 @@ describe('PreviewWeb', () => { emitter.emit(SET_CURRENT_STORY, { storyId: 'component-one--b', viewMode: 'story' }); + await initialized; await waitForEvents([STORY_RENDERED]); // If we emitted CURRENT_STORY_WAS_SET for the original selection, the manager might From 1869636ac2f6c483c058bcc893ab36895eae6171 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 17:27:56 +0200 Subject: [PATCH 111/135] rough draft of adding status indicators to search results --- code/ui/.storybook/manager.ts | 8 -- code/ui/.storybook/manager.tsx | 127 ++++++++++++++++++ .../manager/src/components/sidebar/Search.tsx | 23 +++- .../src/components/sidebar/SearchResults.tsx | 30 ++++- .../src/components/sidebar/Sidebar.tsx | 3 +- .../manager/src/components/sidebar/Tree.tsx | 3 +- code/ui/manager/src/utils/status.tsx | 7 +- 7 files changed, 181 insertions(+), 20 deletions(-) delete mode 100644 code/ui/.storybook/manager.ts create mode 100644 code/ui/.storybook/manager.tsx diff --git a/code/ui/.storybook/manager.ts b/code/ui/.storybook/manager.ts deleted file mode 100644 index 1ac61cf4d375..000000000000 --- a/code/ui/.storybook/manager.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { addons } from '@storybook/manager-api'; -import startCase from 'lodash/startCase.js'; - -addons.setConfig({ - sidebar: { - renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)), - }, -}); diff --git a/code/ui/.storybook/manager.tsx b/code/ui/.storybook/manager.tsx new file mode 100644 index 000000000000..61a560a7bf99 --- /dev/null +++ b/code/ui/.storybook/manager.tsx @@ -0,0 +1,127 @@ +import { addons, types } from '@storybook/manager-api'; +import { IconButton, Icons } from '@storybook/components'; +import startCase from 'lodash/startCase.js'; +import React, { Fragment } from 'react'; + +addons.setConfig({ + sidebar: { + renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)), + }, +}); + +addons.register('lalala', (api) => { + addons.add('lalala', { + title: 'lalala', + type: types.TOOL, + render() { + return ( + <Fragment> + <IconButton + title="lalala" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('lalala', { + [id]: { + description: 'lalala', + status: 'error', + title: 'lalala', + data: {}, + }, + }); + }} + > + <Icons icon="failed" /> + </IconButton> + <IconButton + title="lalala" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('lalala', { + [id]: { + description: 'lalala', + status: 'warn', + title: 'lalala', + data: {}, + }, + }); + }} + > + <Icons icon="changed" /> + </IconButton> + <IconButton + title="lalala" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('lalala', { + [id]: { + description: 'lalala', + status: 'success', + title: 'lalala', + data: {}, + }, + }); + }} + > + <Icons icon="passed" /> + </IconButton> + + <IconButton + title="foobar" + color="red" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('foobar', { + [id]: { + description: 'foobar', + status: 'error', + title: 'foobar', + data: {}, + }, + }); + }} + > + <Icons icon="failed" /> + </IconButton> + <IconButton + title="foobar" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('foobar', { + [id]: { + description: 'foobar', + status: 'warn', + title: 'foobar', + data: {}, + }, + }); + }} + > + <Icons icon="changed" /> + </IconButton> + <IconButton + title="foobar" + onClick={() => { + const { id } = api.getCurrentStoryData(); + + api.experimental_updateStatus('foobar', { + [id]: { + description: 'foobar', + status: 'success', + title: 'foobar', + data: {}, + }, + }); + }} + > + <Icons icon="passed" /> + </IconButton> + </Fragment> + ); + }, + }); +}); diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index a7fc12d7588e..c6480e455e2d 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -21,6 +21,7 @@ import type { import { isSearchResult, isExpandType, isClearType, isCloseType } from './types'; import { scrollIntoView, searchItem } from '../../utils/tree'; +import { getGroupStatus, getHighestStatus } from '../../utils/status'; const { document } = global; @@ -169,7 +170,9 @@ export const Search = React.memo<{ const selectStory = useCallback( (id: string, refId: string) => { - if (api) api.selectStory(id, undefined, { ref: refId !== DEFAULT_REF_ID && refId }); + if (api) { + api.selectStory(id, undefined, { ref: refId !== DEFAULT_REF_ID && refId }); + } inputRef.current.blur(); showAllComponents(false); }, @@ -177,9 +180,23 @@ export const Search = React.memo<{ ); const list: SearchItem[] = useMemo(() => { - return dataset.entries.reduce((acc: SearchItem[], [refId, { index }]) => { + return dataset.entries.reduce((acc: SearchItem[], [refId, { index, status }]) => { + const groupStatus = getGroupStatus(index, status); + + console.log({ groupStatus }); + if (index) { - acc.push(...Object.values(index).map((item) => searchItem(item, dataset.hash[refId]))); + acc.push( + ...Object.values(index).map((item) => { + const statusValue = status[item.id] + ? getHighestStatus(Object.values(status[item.id] || {}).map((s) => s.status)) + : null; + return { + ...searchItem(item, dataset.hash[refId]), + status: statusValue || groupStatus[item.id], + }; + }) + ); } return acc; }, []); diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index 455a2d6841c9..b8cd1a13f167 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -7,12 +7,14 @@ import type { ControllerStateAndHelpers } from 'downshift'; import { useStorybookApi } from '@storybook/manager-api'; import { PRELOAD_ENTRIES } from '@storybook/core-events'; +import type { API_StatusValue } from 'lib/types/src'; import { ComponentNode, DocumentNode, Path, RootNode, StoryNode } from './TreeNode'; import type { Match, DownshiftItem, SearchResult } from './types'; import { isCloseType, isClearType, isExpandType } from './types'; // eslint-disable-next-line import/no-cycle import { getLink } from '../../utils/tree'; import { matchesKeyCode, matchesModifiers } from '../../keybinding'; +import { statusMapping } from '../../utils/status'; const { document } = global; @@ -25,14 +27,18 @@ const ResultsList = styled.ol({ }); const ResultRow = styled.li<{ isHighlighted: boolean }>(({ theme, isHighlighted }) => ({ - display: 'block', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', margin: 0, padding: 0, + paddingRight: 20, background: isHighlighted ? theme.background.hoverable : 'transparent', cursor: 'pointer', 'a:hover, button:hover': { background: 'transparent', }, + gap: 10, })); const NoResults = styled.div(({ theme }) => ({ @@ -109,7 +115,12 @@ const Highlight: FC<{ match?: Match }> = React.memo(function Highlight({ childre }); const Result: FC< - SearchResult & { icon: string; isHighlighted: boolean; onClick: MouseEventHandler } + SearchResult & { + icon: string; + isHighlighted: boolean; + onClick: MouseEventHandler; + status: API_StatusValue; + } > = React.memo(function Result({ item, matches, icon, onClick, ...props }) { const click: MouseEventHandler = useCallback( (event) => { @@ -163,7 +174,17 @@ const Result: FC< node = <DocumentNode href={getLink(item, item.refId)} {...nodeProps} />; } - return <ResultRow {...props}>{node}</ResultRow>; + console.log(item.status); + console.log(statusMapping[item.status]); + + const [i, iconColor] = item.status ? statusMapping[item.status] : []; + + return ( + <ResultRow {...props}> + {node} + {item.status ? <Icons icon={i} style={{ color: iconColor }} /> : null} + </ResultRow> + ); }); export const SearchResults: FC<{ @@ -202,6 +223,9 @@ export const SearchResults: FC<{ }, [closeMenu, enableShortcuts, isLoading]); const mouseOverHandler = useCallback((event: MouseEvent) => { + if (!api) { + return; + } const currentTarget = event.currentTarget as HTMLElement; const storyId = currentTarget.getAttribute('data-id'); const refId = currentTarget.getAttribute('data-refid'); diff --git a/code/ui/manager/src/components/sidebar/Sidebar.tsx b/code/ui/manager/src/components/sidebar/Sidebar.tsx index 37dfe408cd8e..49afb53d7ac4 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.tsx @@ -101,11 +101,12 @@ export const Sidebar = React.memo(function Sidebar({ refs = {}, }: SidebarProps) { const selected: Selection = useMemo(() => storyId && { storyId, refId }, [storyId, refId]); - const dataset = useCombination({ index, indexError, previewInitialized, status }, refs); const isLoading = !index && !indexError; const lastViewedProps = useLastViewed(selected); + console.log({ dataset }); + return ( <Container className="container sidebar-container"> <CustomScrollArea vertical> diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 10d791b248c7..805e609b4506 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -528,7 +528,8 @@ export const Tree = React.memo<{ } const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); - const color = groupStatus[itemId]; + const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][2] : null; + console.log({ color }); return ( <Node diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx index 4175f11bf35c..78f16988d04c 100644 --- a/code/ui/manager/src/utils/status.tsx +++ b/code/ui/manager/src/utils/status.tsx @@ -28,8 +28,8 @@ export function getGroupStatus( [x: string]: Partial<API_HashEntry>; }, status: API_StatusState -): Record<string, string> { - return Object.values(collapsedData).reduce<Record<string, string>>((acc, item) => { +): Record<string, API_StatusValue> { + return Object.values(collapsedData).reduce<Record<string, API_StatusValue>>((acc, item) => { if (item.type === 'group' || item.type === 'component') { const leafs = getDescendantIds(collapsedData as any, item.id, false) .map((id) => collapsedData[id]) @@ -40,8 +40,7 @@ export function getGroupStatus( ); if (combinedStatus) { - // eslint-disable-next-line prefer-destructuring - acc[item.id] = statusMapping[combinedStatus][2]; + acc[item.id] = combinedStatus; } } return acc; From 5dcce1ff4ab2d3b99e96cd01552620683f76eb1d Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 17:33:21 +0200 Subject: [PATCH 112/135] cleanup --- .../ui/manager/src/components/sidebar/Search.tsx | 4 +--- .../src/components/sidebar/SearchResults.tsx | 4 ---- .../manager/src/components/sidebar/Sidebar.tsx | 2 -- code/ui/manager/src/components/sidebar/Tree.tsx | 1 - code/ui/manager/src/components/sidebar/types.ts | 5 +++-- code/ui/manager/src/utils/status.test.ts | 16 ++++++++-------- 6 files changed, 12 insertions(+), 20 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index c6480e455e2d..cb5e833e18ba 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -180,11 +180,9 @@ export const Search = React.memo<{ ); const list: SearchItem[] = useMemo(() => { - return dataset.entries.reduce((acc: SearchItem[], [refId, { index, status }]) => { + return dataset.entries.reduce<SearchItem[]>((acc, [refId, { index, status }]) => { const groupStatus = getGroupStatus(index, status); - console.log({ groupStatus }); - if (index) { acc.push( ...Object.values(index).map((item) => { diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index b8cd1a13f167..a3d6489f071f 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -119,7 +119,6 @@ const Result: FC< icon: string; isHighlighted: boolean; onClick: MouseEventHandler; - status: API_StatusValue; } > = React.memo(function Result({ item, matches, icon, onClick, ...props }) { const click: MouseEventHandler = useCallback( @@ -174,9 +173,6 @@ const Result: FC< node = <DocumentNode href={getLink(item, item.refId)} {...nodeProps} />; } - console.log(item.status); - console.log(statusMapping[item.status]); - const [i, iconColor] = item.status ? statusMapping[item.status] : []; return ( diff --git a/code/ui/manager/src/components/sidebar/Sidebar.tsx b/code/ui/manager/src/components/sidebar/Sidebar.tsx index 49afb53d7ac4..f8daa49b726a 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.tsx @@ -105,8 +105,6 @@ export const Sidebar = React.memo(function Sidebar({ const isLoading = !index && !indexError; const lastViewedProps = useLastViewed(selected); - console.log({ dataset }); - return ( <Container className="container sidebar-container"> <CustomScrollArea vertical> diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 805e609b4506..1954de851e7c 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -529,7 +529,6 @@ export const Tree = React.memo<{ const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][2] : null; - console.log({ color }); return ( <Node diff --git a/code/ui/manager/src/components/sidebar/types.ts b/code/ui/manager/src/components/sidebar/types.ts index c050d30e860c..c0bd12417d66 100644 --- a/code/ui/manager/src/components/sidebar/types.ts +++ b/code/ui/manager/src/components/sidebar/types.ts @@ -1,8 +1,9 @@ import type { StoriesHash, State } from '@storybook/manager-api'; import type { ControllerStateAndHelpers } from 'downshift'; +import type { API_StatusState, API_StatusValue } from 'lib/types/src'; export type Refs = State['refs']; -export type RefType = Refs[keyof Refs]; +export type RefType = Refs[keyof Refs] & { status?: API_StatusState }; export type Item = StoriesHash[keyof StoriesHash]; export type Dataset = Record<string, Item>; @@ -56,7 +57,7 @@ export interface ExpandType { moreCount: number; } -export type SearchItem = Item & { refId: string; path: string[] }; +export type SearchItem = Item & { refId: string; path: string[]; status?: API_StatusValue }; export type SearchResult = Fuse.FuseResultWithMatches<SearchItem> & Fuse.FuseResultWithScore<SearchItem>; diff --git a/code/ui/manager/src/utils/status.test.ts b/code/ui/manager/src/utils/status.test.ts index 7d10a62cf125..294e23caea6d 100644 --- a/code/ui/manager/src/utils/status.test.ts +++ b/code/ui/manager/src/utils/status.test.ts @@ -23,10 +23,10 @@ describe('getGroupStatus', () => { }) ).toMatchInlineSnapshot(` Object { - "group-1": "#A15C20", - "root-1-child-a1": null, - "root-1-child-a2": null, - "root-3-child-a2": null, + "group-1": "warn", + "root-1-child-a1": "unknown", + "root-1-child-a2": "unknown", + "root-3-child-a2": "unknown", } `); }); @@ -40,10 +40,10 @@ describe('getGroupStatus', () => { }) ).toMatchInlineSnapshot(` Object { - "group-1": "brown", - "root-1-child-a1": null, - "root-1-child-a2": null, - "root-3-child-a2": null, + "group-1": "error", + "root-1-child-a1": "unknown", + "root-1-child-a2": "unknown", + "root-3-child-a2": "unknown", } `); }); From 3cf9e3ef3e61f0898560224bb5728d150405e505 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 17:51:13 +0200 Subject: [PATCH 113/135] fix bugs, add story for search --- code/ui/manager/src/components/sidebar/Search.tsx | 11 ++++++----- .../src/components/sidebar/Sidebar.stories.tsx | 13 +++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index cb5e833e18ba..af2c858efdf5 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -181,17 +181,18 @@ export const Search = React.memo<{ const list: SearchItem[] = useMemo(() => { return dataset.entries.reduce<SearchItem[]>((acc, [refId, { index, status }]) => { - const groupStatus = getGroupStatus(index, status); + const groupStatus = getGroupStatus(index || {}, status); if (index) { acc.push( ...Object.values(index).map((item) => { - const statusValue = status[item.id] - ? getHighestStatus(Object.values(status[item.id] || {}).map((s) => s.status)) - : null; + const statusValue = + status && status[item.id] + ? getHighestStatus(Object.values(status[item.id] || {}).map((s) => s.status)) + : null; return { ...searchItem(item, dataset.hash[refId]), - status: statusValue || groupStatus[item.id], + status: statusValue || groupStatus[item.id] || null, }; }) ); diff --git a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx index ca16e283a3f3..b08c9252b992 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx @@ -2,6 +2,7 @@ import React from 'react'; import type { IndexHash, State } from 'lib/manager-api/src'; import type { StoryObj, Meta } from '@storybook/react'; +import { within, userEvent } from '@storybook/testing-library'; import { Sidebar, DEFAULT_REF_ID } from './Sidebar'; import { standardData as standardHeaderData } from './Heading.stories'; import * as ExplorerStories from './Explorer.stories'; @@ -184,6 +185,7 @@ export const StatusesCollapsed: Story = { /> ), }; + export const StatusesOpen: Story = { ...StatusesCollapsed, args: { @@ -204,3 +206,14 @@ export const StatusesOpen: Story = { }, {}), }, }; + +export const Searching: Story = { + ...StatusesOpen, + parameters: { theme: 'light' }, + play: async ({ canvasElement }) => { + const canvas = await within(canvasElement); + const search = await canvas.getByPlaceholderText('Find components'); + userEvent.clear(search); + userEvent.type(search, 'B2'); + }, +}; From 30b0252bc99686b7fb8e543ae479707951a5c8c6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 18:14:32 +0200 Subject: [PATCH 114/135] cleanup --- code/ui/manager/src/components/sidebar/SearchResults.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index a3d6489f071f..346c15427784 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -7,7 +7,6 @@ import type { ControllerStateAndHelpers } from 'downshift'; import { useStorybookApi } from '@storybook/manager-api'; import { PRELOAD_ENTRIES } from '@storybook/core-events'; -import type { API_StatusValue } from 'lib/types/src'; import { ComponentNode, DocumentNode, Path, RootNode, StoryNode } from './TreeNode'; import type { Match, DownshiftItem, SearchResult } from './types'; import { isCloseType, isClearType, isExpandType } from './types'; From 3684ff1b7e9d7a276ab6b239823028dcab41e689 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 19:03:00 +0200 Subject: [PATCH 115/135] fixes --- code/ui/.storybook/manager.tsx | 117 ------------------ .../components/sidebar/Sidebar.stories.tsx | 13 +- 2 files changed, 9 insertions(+), 121 deletions(-) diff --git a/code/ui/.storybook/manager.tsx b/code/ui/.storybook/manager.tsx index 61a560a7bf99..775a1f63c8ed 100644 --- a/code/ui/.storybook/manager.tsx +++ b/code/ui/.storybook/manager.tsx @@ -8,120 +8,3 @@ addons.setConfig({ renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)), }, }); - -addons.register('lalala', (api) => { - addons.add('lalala', { - title: 'lalala', - type: types.TOOL, - render() { - return ( - <Fragment> - <IconButton - title="lalala" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('lalala', { - [id]: { - description: 'lalala', - status: 'error', - title: 'lalala', - data: {}, - }, - }); - }} - > - <Icons icon="failed" /> - </IconButton> - <IconButton - title="lalala" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('lalala', { - [id]: { - description: 'lalala', - status: 'warn', - title: 'lalala', - data: {}, - }, - }); - }} - > - <Icons icon="changed" /> - </IconButton> - <IconButton - title="lalala" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('lalala', { - [id]: { - description: 'lalala', - status: 'success', - title: 'lalala', - data: {}, - }, - }); - }} - > - <Icons icon="passed" /> - </IconButton> - - <IconButton - title="foobar" - color="red" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('foobar', { - [id]: { - description: 'foobar', - status: 'error', - title: 'foobar', - data: {}, - }, - }); - }} - > - <Icons icon="failed" /> - </IconButton> - <IconButton - title="foobar" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('foobar', { - [id]: { - description: 'foobar', - status: 'warn', - title: 'foobar', - data: {}, - }, - }); - }} - > - <Icons icon="changed" /> - </IconButton> - <IconButton - title="foobar" - onClick={() => { - const { id } = api.getCurrentStoryData(); - - api.experimental_updateStatus('foobar', { - [id]: { - description: 'foobar', - status: 'success', - title: 'foobar', - data: {}, - }, - }); - }} - > - <Icons icon="passed" /> - </IconButton> - </Fragment> - ); - }, - }); -}); diff --git a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx index b08c9252b992..66fe63fbe43b 100644 --- a/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Sidebar.stories.tsx @@ -9,6 +9,11 @@ import * as ExplorerStories from './Explorer.stories'; import { mockDataset } from './mockdata'; import type { RefType } from './types'; +const wait = (ms: number) => + new Promise<void>((resolve) => { + setTimeout(resolve, ms); + }); + const meta = { component: Sidebar, title: 'Sidebar/Sidebar', @@ -202,17 +207,17 @@ export const StatusesOpen: Story = { addonB: { status: 'error', title: 'Addon B', description: 'This is a big deal!' }, }, }; - return acc; }, {}), }, }; export const Searching: Story = { ...StatusesOpen, - parameters: { theme: 'light' }, - play: async ({ canvasElement }) => { + parameters: { theme: 'light', chromatic: { delay: 2200 } }, + play: async ({ canvasElement, step }) => { + await step('wait 2000ms', () => wait(2000)); const canvas = await within(canvasElement); - const search = await canvas.getByPlaceholderText('Find components'); + const search = await canvas.findByPlaceholderText('Find components'); userEvent.clear(search); userEvent.type(search, 'B2'); }, From b0a8da6b4cfa7933643012e51615dcf08b9573c2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Thu, 13 Jul 2023 22:33:36 +0200 Subject: [PATCH 116/135] change to icon circle --- code/ui/manager/src/components/sidebar/SearchResults.tsx | 4 +++- code/ui/manager/src/components/sidebar/Tree.tsx | 4 +++- code/ui/manager/src/utils/status.tsx | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index 346c15427784..8cca81f84cb1 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -177,7 +177,9 @@ const Result: FC< return ( <ResultRow {...props}> {node} - {item.status ? <Icons icon={i} style={{ color: iconColor }} /> : null} + {item.status ? ( + <Icons width="8px" height="8px" icon={i} style={{ color: iconColor }} /> + ) : null} </ResultRow> ); }); diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index 1954de851e7c..cf8af37dd52b 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -249,6 +249,8 @@ const Node = React.memo<NodeProps>(function Node({ description: v.description, right: ( <Icons + width="8px" + height="8px" icon={statusMapping[v.status][0]} style={{ color: statusMapping[v.status][1] }} /> @@ -258,7 +260,7 @@ const Node = React.memo<NodeProps>(function Node({ )} closeOnOutsideClick > - <Icons icon={icon} style={{ color: iconColor }} /> + <Icons width="8px" height="8px" icon={icon} style={{ color: iconColor }} /> </WithTooltip> ) : null} </LeafNodeStyleWrapper> diff --git a/code/ui/manager/src/utils/status.tsx b/code/ui/manager/src/utils/status.tsx index 78f16988d04c..259949d3c1ea 100644 --- a/code/ui/manager/src/utils/status.tsx +++ b/code/ui/manager/src/utils/status.tsx @@ -11,9 +11,9 @@ export const statusMapping: Record< > = { unknown: [null, null, null], pending: ['watch', 'currentColor', 'currentColor'], - success: ['passed', 'green', 'currentColor'], - warn: ['changed', 'orange', '#A15C20'], - error: ['failed', 'red', 'brown'], + success: ['circle', 'green', 'currentColor'], + warn: ['circle', 'orange', '#A15C20'], + error: ['circle', 'red', 'brown'], }; export const getHighestStatus = (statuses: API_StatusValue[]): API_StatusValue => { From 312c23f51ba94fe952feaa950be8a4f516fdadf4 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 16 Jul 2023 22:27:16 +0100 Subject: [PATCH 117/135] Create new TextField component --- .../src/new/TextField/TextField.stories.tsx | 32 +++++++++++ .../src/new/TextField/TextField.tsx | 55 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 code/ui/components/src/new/TextField/TextField.stories.tsx create mode 100644 code/ui/components/src/new/TextField/TextField.tsx diff --git a/code/ui/components/src/new/TextField/TextField.stories.tsx b/code/ui/components/src/new/TextField/TextField.stories.tsx new file mode 100644 index 000000000000..cba6424c9b17 --- /dev/null +++ b/code/ui/components/src/new/TextField/TextField.stories.tsx @@ -0,0 +1,32 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { TextField } from './TextField'; + +const meta: Meta<typeof TextField> = { + title: 'TextField', + component: TextField, + tags: ['autodocs'], +}; + +export default meta; +type Story = StoryObj<typeof TextField>; + +export const Base: Story = { + args: { + placeholder: 'Hello World', + }, +}; + +export const Filled: Story = { + args: { + ...Base.args, + value: 'Hello World', + }, +}; + +export const Disabled: Story = { + args: { + ...Base.args, + disabled: true, + }, +}; diff --git a/code/ui/components/src/new/TextField/TextField.tsx b/code/ui/components/src/new/TextField/TextField.tsx new file mode 100644 index 000000000000..d4e5bc5649fa --- /dev/null +++ b/code/ui/components/src/new/TextField/TextField.tsx @@ -0,0 +1,55 @@ +import React, { forwardRef } from 'react'; +import { styled } from '@storybook/theming'; + +interface TextFieldProps { + disabled?: boolean; + placeholder?: string; + value?: string; +} + +export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(({ ...props }, ref) => { + return <StyledTextField ref={ref} {...props} />; +}); + +TextField.displayName = 'TextField'; + +const StyledTextField = styled.input(({ theme }) => ({ + // resets + appearance: 'none', + border: '0 none', + margin: ' 0', + position: 'relative', + + // styles + display: 'flex', + alignItems: 'center', + width: '100%', + height: '32px', + transition: 'box-shadow 200ms ease-out, opacity 200ms ease-out', + color: theme.input.color, + background: theme.input.background, + boxShadow: `${theme.input.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + fontSize: theme.typography.size.s2 - 1, + padding: '0 10px', + boxSizing: 'border-box', + + '&:focus': { + boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, + outline: 'none', + }, + + '&[disabled]': { + cursor: 'not-allowed', + opacity: 0.5, + }, + + '&:-webkit-autofill': { + WebkitBoxShadow: `0 0 0 3em ${theme.color.lightest} inset`, + }, + + '&::placeholder': { + color: theme.textMutedColor, + opacity: 1, + }, +})); From f56ded7793e710b1949de96f0f69e4b558f2ae31 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 16 Jul 2023 22:55:30 +0100 Subject: [PATCH 118/135] Add Textarea component --- .../src/new/Textarea/Textarea.stories.tsx | 33 +++++++++++ .../components/src/new/Textarea/Textarea.tsx | 58 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 code/ui/components/src/new/Textarea/Textarea.stories.tsx create mode 100644 code/ui/components/src/new/Textarea/Textarea.tsx diff --git a/code/ui/components/src/new/Textarea/Textarea.stories.tsx b/code/ui/components/src/new/Textarea/Textarea.stories.tsx new file mode 100644 index 000000000000..b23516d8f2bd --- /dev/null +++ b/code/ui/components/src/new/Textarea/Textarea.stories.tsx @@ -0,0 +1,33 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { Textarea } from './Textarea'; + +const meta: Meta<typeof Textarea> = { + title: 'Textarea', + component: Textarea, + tags: ['autodocs'], +}; + +export default meta; +type Story = StoryObj<typeof Textarea>; + +export const Base: Story = { + args: { + placeholder: 'Hello World', + }, +}; + +export const Filled: Story = { + args: { + ...Base.args, + value: + 'Self ocean ultimate reason faith virtues evil eternal-return moral strong superiority. Society will christian god holiest evil virtues ultimate salvation aversion victorious strong eternal-return. Ascetic pious hope selfish battle pinnacle revaluation passion ocean passion chaos reason intentions. Hope hatred pious superiority ascetic chaos ultimate mountains ideal. Superiority good abstract hatred holiest passion ultimate evil inexpedient joy. Salvation war salvation ideal decieve good law ascetic hatred transvaluation horror good. Zarathustra aversion pious truth burying evil inexpedient spirit virtues virtues hope salvation transvaluation. Enlightenment chaos ascetic salvation god holiest play marvelous oneself ocean. Enlightenment faithful dead truth insofar fearful madness love.Inexpedient war hatred superiority disgust justice superiority. Chaos justice contradict christian decieve god. Revaluation suicide hope enlightenment decrepit truth hatred insofar gains sexuality merciful ocean revaluation depths. Revaluation ocean superiority endless of evil horror. Ultimate salvation joy good good endless will horror aversion superiority depths. Evil hatred ideal pious joy reason.', + }, +}; + +export const Disabled: Story = { + args: { + ...Base.args, + disabled: true, + }, +}; diff --git a/code/ui/components/src/new/Textarea/Textarea.tsx b/code/ui/components/src/new/Textarea/Textarea.tsx new file mode 100644 index 000000000000..15a156bf8b1f --- /dev/null +++ b/code/ui/components/src/new/Textarea/Textarea.tsx @@ -0,0 +1,58 @@ +import React, { forwardRef } from 'react'; +import { styled } from '@storybook/theming'; +import TextareaAutoResize from 'react-textarea-autosize'; + +interface TextareaProps { + disabled?: boolean; + placeholder?: string; + value?: string; +} + +export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(({ ...props }, ref) => { + return <StyledTextarea ref={ref} {...props} />; +}); + +Textarea.displayName = 'Textarea'; + +const StyledTextarea = styled(TextareaAutoResize)(({ theme }) => ({ + // resets + appearance: 'none', + border: '0 none', + margin: ' 0', + position: 'relative', + + // styles + display: 'flex', + alignItems: 'center', + width: '100%', + height: '32px', + transition: 'box-shadow 200ms ease-out, opacity 200ms ease-out', + color: theme.input.color, + background: theme.input.background, + boxShadow: `${theme.input.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + fontSize: theme.typography.size.s2 - 1, + padding: '6px 10px', + boxSizing: 'border-box', + minHeight: 32, + lineHeight: '20px', + + '&:focus': { + boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, + outline: 'none', + }, + + '&[disabled]': { + cursor: 'not-allowed', + opacity: 0.5, + }, + + '&:-webkit-autofill': { + WebkitBoxShadow: `0 0 0 3em ${theme.color.lightest} inset`, + }, + + '&::placeholder': { + color: theme.textMutedColor, + opacity: 1, + }, +})); From f9b9e9a8669ac8c4933672f94a5b30a089a1b295 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Sun, 16 Jul 2023 22:55:53 +0100 Subject: [PATCH 119/135] Rename TextField component into Input --- .../Input.stories.tsx} | 10 +++++----- .../{TextField/TextField.tsx => Input/Input.tsx} | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) rename code/ui/components/src/new/{TextField/TextField.stories.tsx => Input/Input.stories.tsx} (68%) rename code/ui/components/src/new/{TextField/TextField.tsx => Input/Input.tsx} (74%) diff --git a/code/ui/components/src/new/TextField/TextField.stories.tsx b/code/ui/components/src/new/Input/Input.stories.tsx similarity index 68% rename from code/ui/components/src/new/TextField/TextField.stories.tsx rename to code/ui/components/src/new/Input/Input.stories.tsx index cba6424c9b17..8130f39aa72d 100644 --- a/code/ui/components/src/new/TextField/TextField.stories.tsx +++ b/code/ui/components/src/new/Input/Input.stories.tsx @@ -1,15 +1,15 @@ import type { Meta, StoryObj } from '@storybook/react'; -import { TextField } from './TextField'; +import { Input } from './Input'; -const meta: Meta<typeof TextField> = { - title: 'TextField', - component: TextField, +const meta: Meta<typeof Input> = { + title: 'Input', + component: Input, tags: ['autodocs'], }; export default meta; -type Story = StoryObj<typeof TextField>; +type Story = StoryObj<typeof Input>; export const Base: Story = { args: { diff --git a/code/ui/components/src/new/TextField/TextField.tsx b/code/ui/components/src/new/Input/Input.tsx similarity index 74% rename from code/ui/components/src/new/TextField/TextField.tsx rename to code/ui/components/src/new/Input/Input.tsx index d4e5bc5649fa..da10006c960e 100644 --- a/code/ui/components/src/new/TextField/TextField.tsx +++ b/code/ui/components/src/new/Input/Input.tsx @@ -1,28 +1,27 @@ import React, { forwardRef } from 'react'; import { styled } from '@storybook/theming'; -interface TextFieldProps { +interface InputProps { disabled?: boolean; placeholder?: string; value?: string; } -export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(({ ...props }, ref) => { - return <StyledTextField ref={ref} {...props} />; +export const Input = forwardRef<HTMLInputElement, InputProps>(({ ...props }, ref) => { + return <StyledInput ref={ref} {...props} />; }); -TextField.displayName = 'TextField'; +Input.displayName = 'Input'; -const StyledTextField = styled.input(({ theme }) => ({ +const StyledInput = styled.input(({ theme }) => ({ // resets appearance: 'none', border: '0 none', + display: 'block', margin: ' 0', position: 'relative', // styles - display: 'flex', - alignItems: 'center', width: '100%', height: '32px', transition: 'box-shadow 200ms ease-out, opacity 200ms ease-out', @@ -31,8 +30,9 @@ const StyledTextField = styled.input(({ theme }) => ({ boxShadow: `${theme.input.border} 0 0 0 1px inset`, borderRadius: theme.input.borderRadius, fontSize: theme.typography.size.s2 - 1, - padding: '0 10px', + padding: '6px 10px', boxSizing: 'border-box', + lineHeight: '20px', '&:focus': { boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, From be6ad7b303436cd4d9903a7512430ddad8c4fddf Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 17 Jul 2023 13:02:44 +0100 Subject: [PATCH 120/135] First pass at creating a new Select component --- code/ui/components/package.json | 1 + .../src/new/Select/Select.stories.tsx | 91 +++ code/ui/components/src/new/Select/Select.tsx | 166 +++++ .../components/src/new/Select/SelectItem.tsx | 62 ++ code/yarn.lock | 583 +++++++++++++++++- 5 files changed, 902 insertions(+), 1 deletion(-) create mode 100644 code/ui/components/src/new/Select/Select.stories.tsx create mode 100644 code/ui/components/src/new/Select/Select.tsx create mode 100644 code/ui/components/src/new/Select/SelectItem.tsx diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 4e9c170459ff..582fefddaabc 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -67,6 +67,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { + "@radix-ui/react-select": "^1.2.2", "@storybook/client-logger": "7.1.0-rc.2", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", diff --git a/code/ui/components/src/new/Select/Select.stories.tsx b/code/ui/components/src/new/Select/Select.stories.tsx new file mode 100644 index 000000000000..ca5558964a43 --- /dev/null +++ b/code/ui/components/src/new/Select/Select.stories.tsx @@ -0,0 +1,91 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; + +import { Select } from './Select'; + +const meta: Meta<typeof Select> = { + title: 'Select', + component: Select, + tags: ['autodocs'], +}; + +export default meta; +type Story = StoryObj<typeof Select>; + +export const Base: Story = { + args: { placeholder: 'Select a fruit...' }, + render: (_, { args }) => ( + <Select {...args}> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + <Select.Item value="aubergine">Aubergine</Select.Item> + <Select.Item value="broccoli">Broccoli</Select.Item> + <Select.Item value="carrot">Carrot</Select.Item> + <Select.Item value="courgette">Courgette</Select.Item> + <Select.Item value="leek">Leek</Select.Item> + </Select> + ), +}; diff --git a/code/ui/components/src/new/Select/Select.tsx b/code/ui/components/src/new/Select/Select.tsx new file mode 100644 index 000000000000..622c13fc44cb --- /dev/null +++ b/code/ui/components/src/new/Select/Select.tsx @@ -0,0 +1,166 @@ +import * as RadixSelect from '@radix-ui/react-select'; +import type { ElementRef, FC, ReactNode } from 'react'; +import React, { forwardRef } from 'react'; +import { styled } from '@storybook/theming'; + +interface SelectProps { + placeholder?: string; +} + +const FakeIcon = styled.div(({ theme }) => ({ + width: 12, + height: 12, + backgroundColor: theme.color.mediumdark, +})); + +interface SelectItemProps { + children: ReactNode; + value: string; +} + +const Item = forwardRef<HTMLDivElement, SelectItemProps>(({ children, ...props }, forwardedRef) => { + return ( + <StyledItem {...props} ref={forwardedRef}> + <RadixSelect.ItemText>{children}</RadixSelect.ItemText> + <StyledItemIndicator className="SelectItemIndicator"> + <FakeIcon /> + </StyledItemIndicator> + </StyledItem> + ); +}); + +Item.displayName = 'SelectItem'; + +export const Select: FC<SelectProps> = Object.assign( + forwardRef<ElementRef<typeof RadixSelect.Root>, SelectProps>(function Select( + { placeholder, children, ...props }, + ref + ) { + return ( + <RadixSelect.Root {...props}> + <StyledTrigger> + <RadixSelect.Value placeholder={placeholder} /> + <RadixSelect.Icon> + <FakeIcon /> + </RadixSelect.Icon> + </StyledTrigger> + <RadixSelect.Portal> + <StyledContent> + <StyledScrollUpButton> + <FakeIcon /> + </StyledScrollUpButton> + <StyledViewport>{children}</StyledViewport> + <StyledScrollDownButton> + <FakeIcon /> + </StyledScrollDownButton> + <RadixSelect.Arrow /> + </StyledContent> + </RadixSelect.Portal> + </RadixSelect.Root> + ); + }), + { displayName: 'Select', Item } +); + +Select.displayName = 'Select'; + +const StyledTrigger = styled(RadixSelect.Trigger)(({ theme }) => ({ + all: 'unset', + display: 'flex', + width: '100%', + height: '32px', + alignItems: 'center', + justifyContent: 'space-between', + transition: 'box-shadow 200ms ease-out, opacity 200ms ease-out', + color: theme.input.color, + background: theme.input.background, + boxShadow: `${theme.input.border} 0 0 0 1px inset`, + borderRadius: theme.input.borderRadius, + fontSize: theme.typography.size.s2 - 1, + padding: '6px 10px', + boxSizing: 'border-box', + lineHeight: '20px', + + '&:focus': { + boxShadow: `${theme.color.secondary} 0 0 0 1px inset`, + outline: 'none', + }, + + '&[disabled]': { + cursor: 'not-allowed', + opacity: 0.5, + }, + + '&[data-placeholder]': { + color: theme.textMutedColor, + }, + + '&:-webkit-autofill': { + WebkitBoxShadow: `0 0 0 3em ${theme.color.lightest} inset`, + }, +})); + +const StyledContent = styled(RadixSelect.Content)(({ theme }) => ({ + overflow: 'hidden', + backgroundColor: 'white', + borderRadius: '6px', + boxShadow: + '0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2)', +})); + +const StyledViewport = styled(RadixSelect.Viewport)(({ theme }) => ({ + padding: '5px', +})); + +const StyledScrollUpButton = styled(RadixSelect.ScrollUpButton)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + height: '25px', + backgroundColor: 'white', + color: 'blue', + cursor: 'default', +})); + +const StyledScrollDownButton = styled(RadixSelect.ScrollDownButton)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + height: '25px', + backgroundColor: 'white', + color: 'blue', + cursor: 'default', +})); + +const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ + fontSize: '13px', + lineHeight: 1, + color: 'blue', + borderRadius: '3px', + display: 'flex', + alignItems: 'center', + height: '25px', + padding: '0 35px 0 25px', + position: 'relative', + userSelect: 'none', + + '&[data-disabled]': { + color: 'red', + pointerEvents: 'none', + }, + + '&[data-highlighted]': { + outline: 'none', + backgroundColor: 'green', + color: 'white', + }, +})); + +const StyledItemIndicator = styled(RadixSelect.ItemIndicator)(({ theme }) => ({ + position: 'absolute', + left: 0, + width: '25px', + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', +})); diff --git a/code/ui/components/src/new/Select/SelectItem.tsx b/code/ui/components/src/new/Select/SelectItem.tsx new file mode 100644 index 000000000000..f8b20ef50b72 --- /dev/null +++ b/code/ui/components/src/new/Select/SelectItem.tsx @@ -0,0 +1,62 @@ +import * as RadixSelect from '@radix-ui/react-select'; +import React, { forwardRef } from 'react'; +import { styled } from '@storybook/theming'; + +interface SelectItemProps { + children: React.ReactNode; + value: string; +} + +const FakeIcon = styled.div(({ theme }) => ({ + width: 12, + height: 12, + backgroundColor: theme.color.mediumdark, +})); + +export const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>( + ({ children, ...props }, forwardedRef) => { + return ( + <StyledItem {...props} ref={forwardedRef}> + <RadixSelect.ItemText>{children}</RadixSelect.ItemText> + <StyledItemIndicator className="SelectItemIndicator"> + <FakeIcon /> + </StyledItemIndicator> + </StyledItem> + ); + } +); + +SelectItem.displayName = 'SelectItem'; + +const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ + fontSize: '13px', + lineHeight: 1, + color: 'blue', + borderRadius: '3px', + display: 'flex', + alignItems: 'center', + height: '25px', + padding: '0 35px 0 25px', + position: 'relative', + userSelect: 'none', + + '&[data-disabled]': { + color: 'red', + pointerEvents: 'none', + }, + + '&[data-highlighted]': { + outline: 'none', + backgroundColor: 'green', + color: 'white', + }, +})); + +const StyledItemIndicator = styled(RadixSelect.ItemIndicator)(({ theme }) => ({ + position: 'absolute', + left: 0, + width: '25px', + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', +})); diff --git a/code/yarn.lock b/code/yarn.lock index fbe219ccb248..3a22212557d5 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -2230,7 +2230,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": version: 7.22.6 resolution: "@babel/runtime@npm:7.22.6" dependencies: @@ -2837,6 +2837,34 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.3.1": + version: 1.3.1 + resolution: "@floating-ui/core@npm:1.3.1" + checksum: 894bc3637c03beda184a4460cb53155fd30c2a0956569e1c714b7df9e3439517b1c34ad9a8114ea15a6c08d1e3f1d40741d259f0f1087fc3ea96fae7dfeb697e + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.3.0": + version: 1.4.5 + resolution: "@floating-ui/dom@npm:1.4.5" + dependencies: + "@floating-ui/core": ^1.3.1 + checksum: 2c406920221d99ba585f769c7aea450299cbd4d316b307151a214c861bd4deda3f724589d94b1bc676a9a33958d5a9d40b4b1e1065350e8699cc7a79f74f506e + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.0": + version: 2.0.1 + resolution: "@floating-ui/react-dom@npm:2.0.1" + dependencies: + "@floating-ui/dom": ^1.3.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 856c0c9de0a9117bcc69b1363fd9fa188133b9714394609db937903ab4330e9851becfd2a83453f40834de1a18377caf329b6b71afc1c69d7c5687f87da80ed4 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -4925,6 +4953,452 @@ __metadata: languageName: node linkType: hard +"@radix-ui/number@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/number@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 42e4870cd14459da6da03e43c7507dc4c807ed787a87bda52912a0d1d6d5013326b697c18c9625fc6a2cf0af2b45d9c86747985b45358fd92ab646b983978e3c + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/primitive@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 912216455537db3ca77f3e7f70174fb2b454fbd4a37a0acb7cfadad9ab6131abdfb787472242574460a3c301edf45738340cc84f6717982710082840fde7d916 + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-arrow@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: c931f6d7e0bac50fd1654a0303a303aff74a68a13a33a851a43a7c88677b53a92ca6557920b9105144a3002f899ce888437d20ddd7803a5c716edac99587626d + languageName: node + linkType: hard + +"@radix-ui/react-collection@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-collection@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: cefa56383d7451ca79e4bd5a29aaeef6c205a04297213efd149aaead82fc8cde4fb8298e20e6b3613e5696e43f814fb4489805428f6604834fb31f73c6725fa8 + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-compose-refs@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: be06f8dab35b5a1bffa7a5982fb26218ddade1acb751288333e3b89d7b4a7dfb5a6371be83876dac0ec2ebe0866d295e8618b778608e1965342986ea448040ec + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-context@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3de5761b32cc70cd61715527f29d8c699c01ab28c195ced972ccbc7025763a373a68f18c9f948c7a7b922e469fd2df7fee5f7536e3f7bad44ffc06d959359333 + languageName: node + linkType: hard + +"@radix-ui/react-direction@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-direction@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b1a45b4d1d5070ca3b5864b920f6c6210c962bdb519abb62b38b1baef9d06737dc3d8ecdb61860b7504a735235a539652f5977c7299ec021da84e6b0f64d988a + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-dismissable-layer@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-escape-keydown": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: a7b9695092cd4109a7b4a4a66b7f634c42d4f39aa0893621a8ee5e8bc90f8ae27e741df66db726c341a60d2115e3f813520fee1f5cc4fb05d77914b4ade3819f + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-focus-guards@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-focus-scope@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: bfff46919666c122f5b812ee427494ae8408c0eebee30337bd2ce0eedf539f0feaa242f790304ef9df15425b837010ffc6061ce467bedd2c5fd9373bee2b95da + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad + languageName: node + linkType: hard + +"@radix-ui/react-popper@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-popper@npm:1.1.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@floating-ui/react-dom": ^2.0.0 + "@radix-ui/react-arrow": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-rect": 1.0.1 + "@radix-ui/react-use-size": 1.0.1 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 4bd069b79f7046af2c0967b8e43f727cd09834cbd6df1e3d5a943c4f83428ff8b646882737fdf7593c22e261a1d13768a5c020138d79503862ae2e1729081bba + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-portal@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: baf295bbbf09ead37b64ee1dc025a6a540960f5e60552766d78f6065504c67d4bcf49fad5e2073617d9a3011daafad625aa3bd1da7a886c704833b22a49e888f + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-primitive@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 67a66ff8898a5e7739eda228ab6f5ce808858da1dce967014138d87e72b6bbfc93dc1467c706d98d1a2b93bf0b6e09233d1a24d31c78227b078444c1a69c42be + languageName: node + linkType: hard + +"@radix-ui/react-select@npm:^1.2.2": + version: 1.2.2 + resolution: "@radix-ui/react-select@npm:1.2.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/number": 1.0.1 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-dismissable-layer": 1.0.4 + "@radix-ui/react-focus-guards": 1.0.1 + "@radix-ui/react-focus-scope": 1.0.3 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-popper": 1.1.2 + "@radix-ui/react-portal": 1.0.3 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-previous": 1.0.1 + "@radix-ui/react-visually-hidden": 1.0.3 + aria-hidden: ^1.1.1 + react-remove-scroll: 2.5.5 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 888fffa703a8f79b45c01d5f03ad9aae66250ddfff827bbba4f222c4d0720aa2f01a3e4b6bd80acabaf5e2fa7ad79de9e9dfd14831f7f4c24337d4d8dfb58ccc + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.0.2": + version: 1.0.2 + resolution: "@radix-ui/react-slot@npm:1.0.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3af6ea4891e6fa8091e666802adffe7718b3cd390a10fa9229a5f40f8efded9f3918ea01b046103d93923d41cc32119505ebb6bde76cad07a87b6cf4f2119347 + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-callback-ref@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 331b432be1edc960ca148637ae6087220873ee828ceb13bd155926ef8f49e862812de5b379129f6aaefcd11be53715f3237e6caa9a33d9c0abfff43f3ba58938 + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 13cd0c38395c5838bc9a18238020d3bcf67fb340039e6d1cbf438be1b91d64cf6900b78121f3dc9219faeb40dcc7b523ce0f17e4a41631655690e5a30a40886a + languageName: node + linkType: hard + +"@radix-ui/react-use-previous@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-previous@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f5fbc602108668484a4ed506b7842482222d1d03094362e26abb7fdd593eee8794fc47d85b3524fb9d00884801c89a6eefd0bed0971eba1ec189c637b6afd398 + languageName: node + linkType: hard + +"@radix-ui/react-use-rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 94c5ab31dfd3678c0cb77a30025e82b3a287577c1a8674b0d703a36d27434bc9c59790e0bebf57ed153f0b8e0d8c3b9675fc9787b9eac525a09abcda8fa9e7eb + languageName: node + linkType: hard + +"@radix-ui/react-use-size@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-size@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b109a4b3781781c4dc641a1173f0a6fcb0b0f7b2d7cdba5848a46070c9fb4e518909a46c20a3c2efbc78737c64859c59ead837f2940e8c8394d1c503ef58773b + languageName: node + linkType: hard + +"@radix-ui/react-visually-hidden@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-visually-hidden@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 0cbc12c2156b3fa0e40090cafd8525ce84c16a6b5a038a8e8fc7cbb16ed6da9ab369593962c57a18c41a16ec8713e0195c68ea34072ef1ca254ed4d4c0770bb4 + languageName: node + linkType: hard + +"@radix-ui/rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 4c5159661340acc31b11e1f2ebd87a1521d39bfa287544dd2cd75b399539a4b625d38a1501c90ceae21fcca18ed164b0c3735817ff140ae334098192c110e571 + languageName: node + linkType: hard + "@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.1": version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" @@ -6050,6 +6524,7 @@ __metadata: resolution: "@storybook/components@workspace:ui/components" dependencies: "@popperjs/core": ^2.6.0 + "@radix-ui/react-select": ^1.2.2 "@storybook/client-logger": 7.1.0-rc.2 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 @@ -10162,6 +10637,15 @@ __metadata: languageName: node linkType: hard +"aria-hidden@npm:^1.1.1": + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" + dependencies: + tslib: ^2.0.0 + checksum: 46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d + languageName: node + linkType: hard + "aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" @@ -13681,6 +14165,13 @@ __metadata: languageName: node linkType: hard +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -16618,6 +17109,13 @@ __metadata: languageName: node linkType: hard +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 + languageName: node + linkType: hard + "get-npm-tarball-url@npm:^2.0.3": version: 2.0.3 resolution: "get-npm-tarball-url@npm:2.0.3" @@ -25723,6 +26221,41 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.3": + version: 2.3.4 + resolution: "react-remove-scroll-bar@npm:2.3.4" + dependencies: + react-style-singleton: ^2.2.1 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2262750dc1022c56d2c79e8d865c00045881c57bcaca74810ae8adac35cfdf723ff7d6b3b0e95c85eb9a0cff90bb4b1e0af801bd703ce8c0a2e35ab14ff1babb + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.5": + version: 2.5.5 + resolution: "react-remove-scroll@npm:2.5.5" + dependencies: + react-remove-scroll-bar: ^2.3.3 + react-style-singleton: ^2.2.1 + tslib: ^2.1.0 + use-callback-ref: ^1.3.0 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 + languageName: node + linkType: hard + "react-resize-detector@npm:^7.1.2": version: 7.1.2 resolution: "react-resize-detector@npm:7.1.2" @@ -25759,6 +26292,23 @@ __metadata: languageName: node linkType: hard +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: ^1.0.0 + invariant: ^2.2.4 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad + languageName: node + linkType: hard + "react-syntax-highlighter@npm:^15.4.5, react-syntax-highlighter@npm:^15.5.0": version: 15.5.0 resolution: "react-syntax-highlighter@npm:15.5.0" @@ -30026,6 +30576,21 @@ __metadata: languageName: node linkType: hard +"use-callback-ref@npm:^1.3.0": + version: 1.3.0 + resolution: "use-callback-ref@npm:1.3.0" + dependencies: + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 8a0867ffd441f358c66d79567970a745cc78ac2f98840a81c1fa749a525e8716116c645497d886a815e1dcf40ad81a107ebd6a7d15fd9ab5925c44a994a1d89a + languageName: node + linkType: hard + "use-composed-ref@npm:^1.3.0": version: 1.3.0 resolution: "use-composed-ref@npm:1.3.0" @@ -30073,6 +30638,22 @@ __metadata: languageName: node linkType: hard +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: ^1.1.0 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 + languageName: node + linkType: hard + "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" From 42ba72825d23924da7afe190cd8d8d5785d21aa3 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 17 Jul 2023 15:12:57 +0100 Subject: [PATCH 121/135] Improve styling + api of the Select component --- .../src/new/Select/Select.stories.tsx | 147 +++++++-------- code/ui/components/src/new/Select/Select.tsx | 174 ++++++++++-------- .../src/new/Select/icons/Arrowdown.tsx | 29 +++ .../src/new/Select/icons/Arrowup.tsx | 29 +++ .../components/src/new/Select/icons/Check.tsx | 29 +++ .../src/new/Select/icons/ExpandAlt.tsx | 29 +++ .../src/new/Select/icons/IconWrapper.tsx | 29 +++ .../components/src/new/Select/icons/types.ts | 10 + 8 files changed, 320 insertions(+), 156 deletions(-) create mode 100644 code/ui/components/src/new/Select/icons/Arrowdown.tsx create mode 100644 code/ui/components/src/new/Select/icons/Arrowup.tsx create mode 100644 code/ui/components/src/new/Select/icons/Check.tsx create mode 100644 code/ui/components/src/new/Select/icons/ExpandAlt.tsx create mode 100644 code/ui/components/src/new/Select/icons/IconWrapper.tsx create mode 100644 code/ui/components/src/new/Select/icons/types.ts diff --git a/code/ui/components/src/new/Select/Select.stories.tsx b/code/ui/components/src/new/Select/Select.stories.tsx index ca5558964a43..ad5ca84a1a32 100644 --- a/code/ui/components/src/new/Select/Select.stories.tsx +++ b/code/ui/components/src/new/Select/Select.stories.tsx @@ -3,89 +3,84 @@ import React from 'react'; import { Select } from './Select'; -const meta: Meta<typeof Select> = { +const meta: Meta<typeof Select.Root> = { title: 'Select', - component: Select, + component: Select.Root, tags: ['autodocs'], }; export default meta; -type Story = StoryObj<typeof Select>; +type Story = StoryObj<typeof Select.Root>; export const Base: Story = { - args: { placeholder: 'Select a fruit...' }, + args: {}, render: (_, { args }) => ( - <Select {...args}> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - <Select.Item value="aubergine">Aubergine</Select.Item> - <Select.Item value="broccoli">Broccoli</Select.Item> - <Select.Item value="carrot">Carrot</Select.Item> - <Select.Item value="courgette">Courgette</Select.Item> - <Select.Item value="leek">Leek</Select.Item> - </Select> + <Select.Root {...args}> + <Select.Trigger> + <Select.Value placeholder="Select a fruit…" /> + </Select.Trigger> + <Select.Content> + <Select.Item value="Avocado">Avocado</Select.Item> + <Select.Item value="Banana">Banana</Select.Item> + <Select.Item value="Bilberry">Bilberry</Select.Item> + <Select.Item value="Blackberry">Blackberry</Select.Item> + <Select.Item value="Blackcurrant">Blackcurrant</Select.Item> + <Select.Item value="Black sapote">Black sapote</Select.Item> + <Select.Item value="Blueberry">Blueberry</Select.Item> + <Select.Item value="Boysenberry">Boysenberry</Select.Item> + <Select.Item value="Breadfruit">Breadfruit</Select.Item> + <Select.Item value="Cacao">Cacao</Select.Item> + <Select.Item value="Cactus pear">Cactus pear</Select.Item> + <Select.Item value="Canistel">Canistel</Select.Item> + <Select.Item value="Catmon">Catmon</Select.Item> + <Select.Item value="Cempedak">Cempedak</Select.Item> + <Select.Item value="Cherimoya">Cherimoya</Select.Item> + <Select.Item value="Cherry">Cherry</Select.Item> + <Select.Item value="Chico fruit">Chico fruit</Select.Item> + <Select.Item value="Cloudberry">Cloudberry</Select.Item> + <Select.Item value="Coco de mer">Coco de mer</Select.Item> + <Select.Item value="Coconut">Coconut</Select.Item> + <Select.Item value="Crab apple">Crab apple</Select.Item> + <Select.Item value="Cranberry">Cranberry</Select.Item> + <Select.Item value="Currant">Currant</Select.Item> + <Select.Item value="Damson">Damson</Select.Item> + <Select.Item value="Date">Date</Select.Item> + <Select.Item value="Dragonfruit">Dragonfruit</Select.Item> + <Select.Item value="Durian">Durian</Select.Item> + <Select.Item value="Elderberry">Elderberry</Select.Item> + <Select.Item value="Feijoa">Feijoa</Select.Item> + <Select.Item value="Fig">Fig</Select.Item> + <Select.Item value="Finger Lime">Finger Lime</Select.Item> + <Select.Item value="Gac Fruit">Gac Fruit</Select.Item> + <Select.Item value="Goji berry">Goji berry</Select.Item> + <Select.Item value="Gooseberry">Gooseberry</Select.Item> + <Select.Item value="Grape">Grape</Select.Item> + <Select.Item value="Raisin">Raisin</Select.Item> + <Select.Item value="Grapefruit">Grapefruit</Select.Item> + <Select.Item value="Grewia asiatica">Grewia asiatica</Select.Item> + <Select.Item value="Guava">Guava</Select.Item> + <Select.Item value="Guyabano">Guyabano</Select.Item> + <Select.Item value="Hala Fruit">Hala Fruit</Select.Item> + <Select.Item value="Honeyberry">Honeyberry</Select.Item> + <Select.Item value="Huckleberry">Huckleberry</Select.Item> + <Select.Item value="Jabuticaba">Jabuticaba</Select.Item> + <Select.Item value="Jackfruit">Jackfruit</Select.Item> + <Select.Item value="Jambul">Jambul</Select.Item> + <Select.Item value="Japanese plum">Japanese plum</Select.Item> + <Select.Item value="Jostaberry">Jostaberry</Select.Item> + <Select.Item value="Jujube">Jujube</Select.Item> + <Select.Item value="Juniper berry">Juniper berry</Select.Item> + <Select.Item value="Kaffir Lime">Kaffir Lime</Select.Item> + <Select.Item value="Kiwano">Kiwano</Select.Item> + <Select.Item value="Kiwifruit">Kiwifruit</Select.Item> + <Select.Item value="Kumquat">Kumquat</Select.Item> + <Select.Item value="Lanzones">Lanzones</Select.Item> + <Select.Item value="Lemon">Lemon</Select.Item> + <Select.Item value="Lime">Lime</Select.Item> + <Select.Item value="Loganberry">Loganberry</Select.Item> + <Select.Item value="Longan">Longan</Select.Item> + <Select.Item value="Loquat">Loquat</Select.Item> + </Select.Content> + </Select.Root> ), }; diff --git a/code/ui/components/src/new/Select/Select.tsx b/code/ui/components/src/new/Select/Select.tsx index 622c13fc44cb..9070efda5b43 100644 --- a/code/ui/components/src/new/Select/Select.tsx +++ b/code/ui/components/src/new/Select/Select.tsx @@ -1,70 +1,79 @@ -import * as RadixSelect from '@radix-ui/react-select'; -import type { ElementRef, FC, ReactNode } from 'react'; -import React, { forwardRef } from 'react'; +import * as React from 'react'; +import * as SelectPrimitive from '@radix-ui/react-select'; import { styled } from '@storybook/theming'; - -interface SelectProps { - placeholder?: string; -} - -const FakeIcon = styled.div(({ theme }) => ({ - width: 12, - height: 12, - backgroundColor: theme.color.mediumdark, -})); - -interface SelectItemProps { - children: ReactNode; - value: string; -} - -const Item = forwardRef<HTMLDivElement, SelectItemProps>(({ children, ...props }, forwardedRef) => { - return ( - <StyledItem {...props} ref={forwardedRef}> - <RadixSelect.ItemText>{children}</RadixSelect.ItemText> - <StyledItemIndicator className="SelectItemIndicator"> - <FakeIcon /> - </StyledItemIndicator> - </StyledItem> - ); -}); - -Item.displayName = 'SelectItem'; - -export const Select: FC<SelectProps> = Object.assign( - forwardRef<ElementRef<typeof RadixSelect.Root>, SelectProps>(function Select( - { placeholder, children, ...props }, - ref - ) { - return ( - <RadixSelect.Root {...props}> - <StyledTrigger> - <RadixSelect.Value placeholder={placeholder} /> - <RadixSelect.Icon> - <FakeIcon /> - </RadixSelect.Icon> - </StyledTrigger> - <RadixSelect.Portal> - <StyledContent> - <StyledScrollUpButton> - <FakeIcon /> - </StyledScrollUpButton> - <StyledViewport>{children}</StyledViewport> - <StyledScrollDownButton> - <FakeIcon /> - </StyledScrollDownButton> - <RadixSelect.Arrow /> - </StyledContent> - </RadixSelect.Portal> - </RadixSelect.Root> - ); - }), - { displayName: 'Select', Item } -); - -Select.displayName = 'Select'; - -const StyledTrigger = styled(RadixSelect.Trigger)(({ theme }) => ({ +import ExpandAlt from './icons/ExpandAlt'; +import Arrowup from './icons/Arrowup'; +import Arrowdown from './icons/Arrowdown'; +import Check from './icons/Check'; + +const SelectTrigger = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Trigger>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> +>(({ className, children, ...props }, ref) => ( + <StyledTrigger ref={ref} {...props}> + {children} + <SelectPrimitive.Icon asChild> + <ExpandAlt size={12} /> + </SelectPrimitive.Icon> + </StyledTrigger> +)); +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; + +const SelectContent = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Content>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> +>(({ className, children, ...props }, ref) => ( + <SelectPrimitive.Portal> + <StyledContent ref={ref} {...props}> + <StyledScrollUpButton> + <Arrowup size={12} /> + </StyledScrollUpButton> + <StyledViewport>{children}</StyledViewport> + <StyledScrollDownButton> + <Arrowdown size={12} /> + </StyledScrollDownButton> + </StyledContent> + </SelectPrimitive.Portal> +)); +SelectContent.displayName = SelectPrimitive.Content.displayName; + +const SelectLabel = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Label>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> +>(({ className, ...props }, ref) => <SelectPrimitive.Label ref={ref} {...props} />); +SelectLabel.displayName = SelectPrimitive.Label.displayName; + +const SelectItem = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Item>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> +>(({ className, children, ...props }, ref) => ( + <StyledItem ref={ref} {...props}> + <StyledItemIndicator> + <Check size={12} /> + </StyledItemIndicator> + <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText> + </StyledItem> +)); +SelectItem.displayName = SelectPrimitive.Item.displayName; + +const SelectSeparator = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Separator>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> +>(({ className, ...props }, ref) => <SelectPrimitive.Separator ref={ref} {...props} />); +SelectSeparator.displayName = SelectPrimitive.Separator.displayName; + +export const Select = { + Root: SelectPrimitive.Root, + Group: SelectPrimitive.Group, + Value: SelectPrimitive.Value, + Trigger: SelectTrigger, + Content: SelectContent, + Label: SelectLabel, + Item: SelectItem, + Separator: SelectSeparator, +}; + +const StyledTrigger = styled(SelectPrimitive.Trigger)(({ theme }) => ({ all: 'unset', display: 'flex', width: '100%', @@ -100,42 +109,47 @@ const StyledTrigger = styled(RadixSelect.Trigger)(({ theme }) => ({ }, })); -const StyledContent = styled(RadixSelect.Content)(({ theme }) => ({ +const StyledContent = styled(SelectPrimitive.Content)(({ theme }) => ({ + boxSizing: 'border-box', overflow: 'hidden', - backgroundColor: 'white', + backgroundColor: theme.input.background, borderRadius: '6px', + border: theme.base === 'dark' ? `1px solid ${theme.input.border}` : 'none', + width: '100%', boxShadow: '0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2)', })); -const StyledViewport = styled(RadixSelect.Viewport)(({ theme }) => ({ +const StyledViewport = styled(SelectPrimitive.Viewport)(() => ({ + boxSizing: 'border-box', + width: '100%', padding: '5px', })); -const StyledScrollUpButton = styled(RadixSelect.ScrollUpButton)(({ theme }) => ({ +const StyledScrollUpButton = styled(SelectPrimitive.ScrollUpButton)(({ theme }) => ({ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '25px', - backgroundColor: 'white', - color: 'blue', + backgroundColor: theme.input.background, + color: theme.input.color, cursor: 'default', })); -const StyledScrollDownButton = styled(RadixSelect.ScrollDownButton)(({ theme }) => ({ +const StyledScrollDownButton = styled(SelectPrimitive.ScrollDownButton)(({ theme }) => ({ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '25px', - backgroundColor: 'white', - color: 'blue', + backgroundColor: theme.input.background, + color: theme.input.color, cursor: 'default', })); -const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ +const StyledItem = styled(SelectPrimitive.Item)(({ theme }) => ({ fontSize: '13px', lineHeight: 1, - color: 'blue', + color: theme.input.color, borderRadius: '3px', display: 'flex', alignItems: 'center', @@ -151,12 +165,12 @@ const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ '&[data-highlighted]': { outline: 'none', - backgroundColor: 'green', - color: 'white', + backgroundColor: theme.barSelectedColor, + color: theme.barBg, }, })); -const StyledItemIndicator = styled(RadixSelect.ItemIndicator)(({ theme }) => ({ +const StyledItemIndicator = styled(SelectPrimitive.ItemIndicator)(() => ({ position: 'absolute', left: 0, width: '25px', diff --git a/code/ui/components/src/new/Select/icons/Arrowdown.tsx b/code/ui/components/src/new/Select/icons/Arrowdown.tsx new file mode 100644 index 000000000000..d8437ca5d122 --- /dev/null +++ b/code/ui/components/src/new/Select/icons/Arrowdown.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import type { IconProps } from './types'; +import { IconWrapper } from './IconWrapper'; + +export const Arrowdown = (allProps: IconProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + <IconWrapper + icon={ + <svg + width="inherit" + height="inherit" + viewBox="0 0 14 14" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + d="M1.146 5.604l5.5 5.5a.5.5 0 00.708 0l5.5-5.5a.5.5 0 00-.708-.708L7 10.043 1.854 4.896a.5.5 0 10-.708.708z" + fill="currentColor" + /> + </svg> + } + {...restProps} + /> + ); +}; + +export default Arrowdown; diff --git a/code/ui/components/src/new/Select/icons/Arrowup.tsx b/code/ui/components/src/new/Select/icons/Arrowup.tsx new file mode 100644 index 000000000000..24f722e410a6 --- /dev/null +++ b/code/ui/components/src/new/Select/icons/Arrowup.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import type { IconProps } from './types'; +import { IconWrapper } from './IconWrapper'; + +export const Arrowup = (allProps: IconProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + <IconWrapper + icon={ + <svg + width="inherit" + height="inherit" + viewBox="0 0 14 14" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + d="M7.354 2.896l5.5 5.5a.5.5 0 01-.708.708L7 3.957 1.854 9.104a.5.5 0 11-.708-.708l5.5-5.5a.5.5 0 01.708 0z" + fill="currentColor" + /> + </svg> + } + {...restProps} + /> + ); +}; + +export default Arrowup; diff --git a/code/ui/components/src/new/Select/icons/Check.tsx b/code/ui/components/src/new/Select/icons/Check.tsx new file mode 100644 index 000000000000..4d5beb1531a3 --- /dev/null +++ b/code/ui/components/src/new/Select/icons/Check.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import type { IconProps } from './types'; +import { IconWrapper } from './IconWrapper'; + +export const Check = (allProps: IconProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + <IconWrapper + icon={ + <svg + width="inherit" + height="inherit" + viewBox="0 0 14 14" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + d="M13.854 3.354a.5.5 0 00-.708-.708L5 10.793.854 6.646a.5.5 0 10-.708.708l4.5 4.5a.5.5 0 00.708 0l8.5-8.5z" + fill="currentColor" + /> + </svg> + } + {...restProps} + /> + ); +}; + +export default Check; diff --git a/code/ui/components/src/new/Select/icons/ExpandAlt.tsx b/code/ui/components/src/new/Select/icons/ExpandAlt.tsx new file mode 100644 index 000000000000..7f0626adcbea --- /dev/null +++ b/code/ui/components/src/new/Select/icons/ExpandAlt.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import type { IconProps } from './types'; +import { IconWrapper } from './IconWrapper'; + +export const ExpandAlt = (allProps: IconProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + <IconWrapper + icon={ + <svg + width="inherit" + height="inherit" + viewBox="0 0 14 14" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + d="M7.354.146l4 4a.5.5 0 01-.708.708L7 1.207 3.354 4.854a.5.5 0 11-.708-.708l4-4a.5.5 0 01.708 0zM11.354 9.146a.5.5 0 010 .708l-4 4a.5.5 0 01-.708 0l-4-4a.5.5 0 11.708-.708L7 12.793l3.646-3.647a.5.5 0 01.708 0z" + fill="currentColor" + /> + </svg> + } + {...restProps} + /> + ); +}; + +export default ExpandAlt; diff --git a/code/ui/components/src/new/Select/icons/IconWrapper.tsx b/code/ui/components/src/new/Select/icons/IconWrapper.tsx new file mode 100644 index 000000000000..a4c60d6709f8 --- /dev/null +++ b/code/ui/components/src/new/Select/icons/IconWrapper.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import type { IconProps } from './types'; + +export const IconWrapper: React.FC<{ icon: React.ReactNode } & IconProps> = ({ + icon, + color: colorProp, + size: sizeProp, + ...restProps +}) => { + const color = colorProp || 'currentColor'; + const size = sizeProp || '14px'; + + return ( + <span + role="img" + aria-hidden="true" + style={{ + color, + width: size, + height: size, + display: 'inline-flex', + fontSize: 'inherit', + }} + {...restProps} + > + {icon} + </span> + ); +}; diff --git a/code/ui/components/src/new/Select/icons/types.ts b/code/ui/components/src/new/Select/icons/types.ts new file mode 100644 index 000000000000..142493c5ee59 --- /dev/null +++ b/code/ui/components/src/new/Select/icons/types.ts @@ -0,0 +1,10 @@ +import type React from 'react'; + +export type IconProps = { + /** Set icon fill color from design system */ + color?: string; + /** Set width and height of icon in pixels */ + size?: number; + /** Props to pass directly to svg element */ + svgProps?: React.SVGProps<SVGSVGElement>; +} & Omit<React.HTMLProps<HTMLSpanElement>, 'color' | 'size'>; From 4d2bcad3b1ad1f0826ead9943d5b6bcfb889dcc3 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Mon, 17 Jul 2023 15:38:48 +0100 Subject: [PATCH 122/135] Update Select.stories.tsx --- .../src/new/Select/Select.stories.tsx | 139 +++++++++--------- 1 file changed, 72 insertions(+), 67 deletions(-) diff --git a/code/ui/components/src/new/Select/Select.stories.tsx b/code/ui/components/src/new/Select/Select.stories.tsx index ad5ca84a1a32..452fe113fba4 100644 --- a/code/ui/components/src/new/Select/Select.stories.tsx +++ b/code/ui/components/src/new/Select/Select.stories.tsx @@ -7,6 +7,9 @@ const meta: Meta<typeof Select.Root> = { title: 'Select', component: Select.Root, tags: ['autodocs'], + parameters: { + layout: 'centered', + }, }; export default meta; @@ -15,72 +18,74 @@ type Story = StoryObj<typeof Select.Root>; export const Base: Story = { args: {}, render: (_, { args }) => ( - <Select.Root {...args}> - <Select.Trigger> - <Select.Value placeholder="Select a fruit…" /> - </Select.Trigger> - <Select.Content> - <Select.Item value="Avocado">Avocado</Select.Item> - <Select.Item value="Banana">Banana</Select.Item> - <Select.Item value="Bilberry">Bilberry</Select.Item> - <Select.Item value="Blackberry">Blackberry</Select.Item> - <Select.Item value="Blackcurrant">Blackcurrant</Select.Item> - <Select.Item value="Black sapote">Black sapote</Select.Item> - <Select.Item value="Blueberry">Blueberry</Select.Item> - <Select.Item value="Boysenberry">Boysenberry</Select.Item> - <Select.Item value="Breadfruit">Breadfruit</Select.Item> - <Select.Item value="Cacao">Cacao</Select.Item> - <Select.Item value="Cactus pear">Cactus pear</Select.Item> - <Select.Item value="Canistel">Canistel</Select.Item> - <Select.Item value="Catmon">Catmon</Select.Item> - <Select.Item value="Cempedak">Cempedak</Select.Item> - <Select.Item value="Cherimoya">Cherimoya</Select.Item> - <Select.Item value="Cherry">Cherry</Select.Item> - <Select.Item value="Chico fruit">Chico fruit</Select.Item> - <Select.Item value="Cloudberry">Cloudberry</Select.Item> - <Select.Item value="Coco de mer">Coco de mer</Select.Item> - <Select.Item value="Coconut">Coconut</Select.Item> - <Select.Item value="Crab apple">Crab apple</Select.Item> - <Select.Item value="Cranberry">Cranberry</Select.Item> - <Select.Item value="Currant">Currant</Select.Item> - <Select.Item value="Damson">Damson</Select.Item> - <Select.Item value="Date">Date</Select.Item> - <Select.Item value="Dragonfruit">Dragonfruit</Select.Item> - <Select.Item value="Durian">Durian</Select.Item> - <Select.Item value="Elderberry">Elderberry</Select.Item> - <Select.Item value="Feijoa">Feijoa</Select.Item> - <Select.Item value="Fig">Fig</Select.Item> - <Select.Item value="Finger Lime">Finger Lime</Select.Item> - <Select.Item value="Gac Fruit">Gac Fruit</Select.Item> - <Select.Item value="Goji berry">Goji berry</Select.Item> - <Select.Item value="Gooseberry">Gooseberry</Select.Item> - <Select.Item value="Grape">Grape</Select.Item> - <Select.Item value="Raisin">Raisin</Select.Item> - <Select.Item value="Grapefruit">Grapefruit</Select.Item> - <Select.Item value="Grewia asiatica">Grewia asiatica</Select.Item> - <Select.Item value="Guava">Guava</Select.Item> - <Select.Item value="Guyabano">Guyabano</Select.Item> - <Select.Item value="Hala Fruit">Hala Fruit</Select.Item> - <Select.Item value="Honeyberry">Honeyberry</Select.Item> - <Select.Item value="Huckleberry">Huckleberry</Select.Item> - <Select.Item value="Jabuticaba">Jabuticaba</Select.Item> - <Select.Item value="Jackfruit">Jackfruit</Select.Item> - <Select.Item value="Jambul">Jambul</Select.Item> - <Select.Item value="Japanese plum">Japanese plum</Select.Item> - <Select.Item value="Jostaberry">Jostaberry</Select.Item> - <Select.Item value="Jujube">Jujube</Select.Item> - <Select.Item value="Juniper berry">Juniper berry</Select.Item> - <Select.Item value="Kaffir Lime">Kaffir Lime</Select.Item> - <Select.Item value="Kiwano">Kiwano</Select.Item> - <Select.Item value="Kiwifruit">Kiwifruit</Select.Item> - <Select.Item value="Kumquat">Kumquat</Select.Item> - <Select.Item value="Lanzones">Lanzones</Select.Item> - <Select.Item value="Lemon">Lemon</Select.Item> - <Select.Item value="Lime">Lime</Select.Item> - <Select.Item value="Loganberry">Loganberry</Select.Item> - <Select.Item value="Longan">Longan</Select.Item> - <Select.Item value="Loquat">Loquat</Select.Item> - </Select.Content> - </Select.Root> + <div style={{ width: 400 }}> + <Select.Root {...args}> + <Select.Trigger> + <Select.Value placeholder="Select a fruit…" /> + </Select.Trigger> + <Select.Content> + <Select.Item value="Avocado">Avocado</Select.Item> + <Select.Item value="Banana">Banana</Select.Item> + <Select.Item value="Bilberry">Bilberry</Select.Item> + <Select.Item value="Blackberry">Blackberry</Select.Item> + <Select.Item value="Blackcurrant">Blackcurrant</Select.Item> + <Select.Item value="Black sapote">Black sapote</Select.Item> + <Select.Item value="Blueberry">Blueberry</Select.Item> + <Select.Item value="Boysenberry">Boysenberry</Select.Item> + <Select.Item value="Breadfruit">Breadfruit</Select.Item> + <Select.Item value="Cacao">Cacao</Select.Item> + <Select.Item value="Cactus pear">Cactus pear</Select.Item> + <Select.Item value="Canistel">Canistel</Select.Item> + <Select.Item value="Catmon">Catmon</Select.Item> + <Select.Item value="Cempedak">Cempedak</Select.Item> + <Select.Item value="Cherimoya">Cherimoya</Select.Item> + <Select.Item value="Cherry">Cherry</Select.Item> + <Select.Item value="Chico fruit">Chico fruit</Select.Item> + <Select.Item value="Cloudberry">Cloudberry</Select.Item> + <Select.Item value="Coco de mer">Coco de mer</Select.Item> + <Select.Item value="Coconut">Coconut</Select.Item> + <Select.Item value="Crab apple">Crab apple</Select.Item> + <Select.Item value="Cranberry">Cranberry</Select.Item> + <Select.Item value="Currant">Currant</Select.Item> + <Select.Item value="Damson">Damson</Select.Item> + <Select.Item value="Date">Date</Select.Item> + <Select.Item value="Dragonfruit">Dragonfruit</Select.Item> + <Select.Item value="Durian">Durian</Select.Item> + <Select.Item value="Elderberry">Elderberry</Select.Item> + <Select.Item value="Feijoa">Feijoa</Select.Item> + <Select.Item value="Fig">Fig</Select.Item> + <Select.Item value="Finger Lime">Finger Lime</Select.Item> + <Select.Item value="Gac Fruit">Gac Fruit</Select.Item> + <Select.Item value="Goji berry">Goji berry</Select.Item> + <Select.Item value="Gooseberry">Gooseberry</Select.Item> + <Select.Item value="Grape">Grape</Select.Item> + <Select.Item value="Raisin">Raisin</Select.Item> + <Select.Item value="Grapefruit">Grapefruit</Select.Item> + <Select.Item value="Grewia asiatica">Grewia asiatica</Select.Item> + <Select.Item value="Guava">Guava</Select.Item> + <Select.Item value="Guyabano">Guyabano</Select.Item> + <Select.Item value="Hala Fruit">Hala Fruit</Select.Item> + <Select.Item value="Honeyberry">Honeyberry</Select.Item> + <Select.Item value="Huckleberry">Huckleberry</Select.Item> + <Select.Item value="Jabuticaba">Jabuticaba</Select.Item> + <Select.Item value="Jackfruit">Jackfruit</Select.Item> + <Select.Item value="Jambul">Jambul</Select.Item> + <Select.Item value="Japanese plum">Japanese plum</Select.Item> + <Select.Item value="Jostaberry">Jostaberry</Select.Item> + <Select.Item value="Jujube">Jujube</Select.Item> + <Select.Item value="Juniper berry">Juniper berry</Select.Item> + <Select.Item value="Kaffir Lime">Kaffir Lime</Select.Item> + <Select.Item value="Kiwano">Kiwano</Select.Item> + <Select.Item value="Kiwifruit">Kiwifruit</Select.Item> + <Select.Item value="Kumquat">Kumquat</Select.Item> + <Select.Item value="Lanzones">Lanzones</Select.Item> + <Select.Item value="Lemon">Lemon</Select.Item> + <Select.Item value="Lime">Lime</Select.Item> + <Select.Item value="Loganberry">Loganberry</Select.Item> + <Select.Item value="Longan">Longan</Select.Item> + <Select.Item value="Loquat">Loquat</Select.Item> + </Select.Content> + </Select.Root> + </div> ), }; From 6c45e623065bd9255c8638efe7b87cfff9b5f8c1 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 10:34:13 +0200 Subject: [PATCH 123/135] cleanup --- code/addons/interactions/src/components/TabStatus.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/addons/interactions/src/components/TabStatus.tsx b/code/addons/interactions/src/components/TabStatus.tsx index bf6919612846..bce1efc72df8 100644 --- a/code/addons/interactions/src/components/TabStatus.tsx +++ b/code/addons/interactions/src/components/TabStatus.tsx @@ -1,13 +1,7 @@ import { styled } from '@storybook/theming'; -import ReactDOM from 'react-dom'; import { StatusIcon } from './StatusIcon'; -export const TabStatus = ({ children }: { children: React.ReactChild }) => { - const container = global.document.getElementById('tabbutton-storybook-interactions-panel'); - return container && ReactDOM.createPortal(children, container); -}; - export const TabIcon = styled(StatusIcon)({ marginLeft: 5, }); From f17dce7561357036b518b659ab1acf63054d8619 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 14:05:37 +0200 Subject: [PATCH 124/135] fix visual s --- code/ui/manager/src/components/sidebar/Tree.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index cf8af37dd52b..ee69087f11f1 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -249,8 +249,6 @@ const Node = React.memo<NodeProps>(function Node({ description: v.description, right: ( <Icons - width="8px" - height="8px" icon={statusMapping[v.status][0]} style={{ color: statusMapping[v.status][1] }} /> @@ -260,7 +258,9 @@ const Node = React.memo<NodeProps>(function Node({ )} closeOnOutsideClick > - <Icons width="8px" height="8px" icon={icon} style={{ color: iconColor }} /> + <Action type="button"> + <Icons icon={icon} style={{ color: iconColor }} /> + </Action> </WithTooltip> ) : null} </LeafNodeStyleWrapper> From 5da09e9d6148b9b602ba083ade0cf60f62151093 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 14:21:23 +0200 Subject: [PATCH 125/135] selected one is white --- code/ui/manager/src/components/sidebar/Tree.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index ee69087f11f1..8d5ac50484ea 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -259,7 +259,7 @@ const Node = React.memo<NodeProps>(function Node({ closeOnOutsideClick > <Action type="button"> - <Icons icon={icon} style={{ color: iconColor }} /> + <Icons icon={icon} style={{ color: isSelected ? 'white' : iconColor }} /> </Action> </WithTooltip> ) : null} From a164fd1bb503726c79412974438b1b97731db68d Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Tue, 18 Jul 2023 17:19:58 +0100 Subject: [PATCH 126/135] Some cleaning --- code/ui/components/src/new/Select/Select.tsx | 10 +++++----- code/ui/components/src/new/Select/SelectItem.tsx | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/ui/components/src/new/Select/Select.tsx b/code/ui/components/src/new/Select/Select.tsx index 9070efda5b43..0ae606877434 100644 --- a/code/ui/components/src/new/Select/Select.tsx +++ b/code/ui/components/src/new/Select/Select.tsx @@ -1,10 +1,10 @@ import * as React from 'react'; import * as SelectPrimitive from '@radix-ui/react-select'; import { styled } from '@storybook/theming'; -import ExpandAlt from './icons/ExpandAlt'; -import Arrowup from './icons/Arrowup'; -import Arrowdown from './icons/Arrowdown'; -import Check from './icons/Check'; +import { ExpandAlt } from './icons/ExpandAlt'; +import { Arrowup } from './icons/Arrowup'; +import { Arrowdown } from './icons/Arrowdown'; +import { Check } from './icons/Check'; const SelectTrigger = React.forwardRef< React.ElementRef<typeof SelectPrimitive.Trigger>, @@ -114,7 +114,7 @@ const StyledContent = styled(SelectPrimitive.Content)(({ theme }) => ({ overflow: 'hidden', backgroundColor: theme.input.background, borderRadius: '6px', - border: theme.base === 'dark' ? `1px solid ${theme.input.border}` : 'none', + border: theme.base === 'dark' ? `1px solid ${theme.input.border}` : '1px solid transparent', width: '100%', boxShadow: '0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2)', diff --git a/code/ui/components/src/new/Select/SelectItem.tsx b/code/ui/components/src/new/Select/SelectItem.tsx index f8b20ef50b72..6206e76095ca 100644 --- a/code/ui/components/src/new/Select/SelectItem.tsx +++ b/code/ui/components/src/new/Select/SelectItem.tsx @@ -28,7 +28,7 @@ export const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>( SelectItem.displayName = 'SelectItem'; -const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ +const StyledItem = styled(RadixSelect.Item)(() => ({ fontSize: '13px', lineHeight: 1, color: 'blue', @@ -52,7 +52,7 @@ const StyledItem = styled(RadixSelect.Item)(({ theme }) => ({ }, })); -const StyledItemIndicator = styled(RadixSelect.ItemIndicator)(({ theme }) => ({ +const StyledItemIndicator = styled(RadixSelect.ItemIndicator)(() => ({ position: 'absolute', left: 0, width: '25px', From b1bff003befb1032e078a4a55e2c146723578493 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:04:49 +0200 Subject: [PATCH 127/135] add a check script so most packages can be checked without linking --- 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/gfm/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 +- code/addons/storyshots-core/package.json | 2 +- code/addons/storyshots-puppeteer/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/deprecated/addons/package.json | 2 +- .../channel-postmessage/package.json | 2 +- .../deprecated/channel-websocket/package.json | 2 +- code/deprecated/client-api/package.json | 2 +- code/deprecated/core-client/package.json | 2 +- code/deprecated/manager-api-shim/package.json | 2 +- code/deprecated/preview-web/package.json | 2 +- code/deprecated/store/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue-vite/package.json | 2 +- code/frameworks/vue-webpack5/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/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-plugin/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/manager-api/package.json | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/postinstall/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/presets/create-react-app/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/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- scripts/prepare/check.ts | 80 +++++++++++++++++++ 88 files changed, 167 insertions(+), 87 deletions(-) create mode 100644 scripts/prepare/check.ts diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index ce2a52a5386e..612a0d5ff0a5 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -59,7 +59,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 0905b055a970..04b698d8f97d 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -76,7 +76,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index e18a3fc41938..26128a713df0 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -72,7 +72,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 96597e6d218c..e76a33702e1c 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -64,7 +64,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index f0ba3a7907d3..d27003bf434d 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -93,7 +93,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index e1af4dc5c087..bfdc135d190b 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -115,7 +115,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index 99a8c7d8a72f..bc607631eec0 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -47,7 +47,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index a7ae4c532db5..38b1300a7d80 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -57,7 +57,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index f65ccc5848cb..b3d131ffbb74 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -68,7 +68,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 5fb2d77148fd..506d4881525a 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -66,7 +66,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 509ed2e5e1dc..94f818a247df 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -76,7 +76,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index b0229f64dc19..d640f1b8eabe 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -71,7 +71,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index 00a5e705dd12..0d8ea3410553 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -74,7 +74,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/storyshots-core/package.json b/code/addons/storyshots-core/package.json index 8e5035133ed9..d36cf2a0db03 100644 --- a/code/addons/storyshots-core/package.json +++ b/code/addons/storyshots-core/package.json @@ -32,7 +32,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { diff --git a/code/addons/storyshots-puppeteer/package.json b/code/addons/storyshots-puppeteer/package.json index 301f5bbe0ca5..f28ad08e21a5 100644 --- a/code/addons/storyshots-puppeteer/package.json +++ b/code/addons/storyshots-puppeteer/package.json @@ -31,7 +31,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index 32b11982fe7e..392d06446a5b 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -49,7 +49,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index f0137a75015d..f431300582db 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -64,7 +64,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 40e5db908038..e1a658fe67c5 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -69,7 +69,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 21358a566e93..71a5d5d82456 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index 6a86e40a3b67..d5aa2768e19d 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 98f8b8f259a1..4b835f82677b 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -51,7 +51,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/deprecated/addons/package.json b/code/deprecated/addons/package.json index 946acd25510a..01bf737806e0 100644 --- a/code/deprecated/addons/package.json +++ b/code/deprecated/addons/package.json @@ -40,7 +40,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/deprecated/channel-postmessage/package.json b/code/deprecated/channel-postmessage/package.json index 4c9f61f6ebb6..0b389b0fd790 100644 --- a/code/deprecated/channel-postmessage/package.json +++ b/code/deprecated/channel-postmessage/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/deprecated/channel-websocket/package.json b/code/deprecated/channel-websocket/package.json index 3243376d4200..2eec52fe94ac 100644 --- a/code/deprecated/channel-websocket/package.json +++ b/code/deprecated/channel-websocket/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/deprecated/client-api/package.json b/code/deprecated/client-api/package.json index 88714bf7ab17..946d814f2d5a 100644 --- a/code/deprecated/client-api/package.json +++ b/code/deprecated/client-api/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/deprecated/core-client/package.json b/code/deprecated/core-client/package.json index 76a89270248c..64a7614f8099 100644 --- a/code/deprecated/core-client/package.json +++ b/code/deprecated/core-client/package.json @@ -31,7 +31,7 @@ "module": "dist/entry.mjs", "types": "dist/entry.d.ts", "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/deprecated/manager-api-shim/package.json b/code/deprecated/manager-api-shim/package.json index fd1bca475b27..45e71ba4e257 100644 --- a/code/deprecated/manager-api-shim/package.json +++ b/code/deprecated/manager-api-shim/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/deprecated/preview-web/package.json b/code/deprecated/preview-web/package.json index a3a8616f6fe8..056f7782a0fa 100644 --- a/code/deprecated/preview-web/package.json +++ b/code/deprecated/preview-web/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/deprecated/store/package.json b/code/deprecated/store/package.json index 41ccc547f707..7ceca5494b6b 100644 --- a/code/deprecated/store/package.json +++ b/code/deprecated/store/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index ad79fe4eca10..6d46043864bf 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -27,7 +27,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index b9f2bf5e919d..4ffc4d335fc7 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 63f650327adc..d971e2c4e966 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 14258d631acf..8823db34ade8 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -54,7 +54,7 @@ "*.d.ts" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index c74d7c3a40f6..84a4b395ab8d 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -42,7 +42,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 5c9ffa2b0eb4..e994102da998 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index f7c785e49f36..2eecf2e3881c 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 7665ce96e115..0547c32c072b 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 1652a558d251..e2bb618fcf4c 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index cff7c69c2dfc..9c6e9871c7d2 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index 463e8787a032..4b46ec53c038 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 38be149ede20..981736171b17 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -46,7 +46,7 @@ "*.d.ts" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/vue-vite/package.json b/code/frameworks/vue-vite/package.json index 5eb10c6a8e62..5c8159b0d32f 100644 --- a/code/frameworks/vue-vite/package.json +++ b/code/frameworks/vue-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/vue-webpack5/package.json b/code/frameworks/vue-webpack5/package.json index 1b5630f76f4d..c34a564037dc 100644 --- a/code/frameworks/vue-webpack5/package.json +++ b/code/frameworks/vue-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 0e81388427e4..269facaf2121 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index bc533de95119..cbf532add8ff 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 9d76b4321ebf..2f1b85942297 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -43,7 +43,7 @@ "*.d.ts" ], "scripts": { - "check": "tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 7707c387dc35..0cb3e19f7358 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -46,7 +46,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 28c88bcbec9d..3dd3368cbd38 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -64,7 +64,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 1fcfc30fcddc..9bd3956de4a1 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -49,7 +49,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts", "test": "jest test/**/*.test.js" }, diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 63df41c98db3..5108f319b340 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 418b1f2324dc..d59374a22def 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -41,7 +41,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 2b61c1aa8fc6..425cd29259d2 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index b1fae162a37c..b593eabd8d5d 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 7307973107ed..503a76e6f54e 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -50,7 +50,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index c0098e347e37..e8b274475be0 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 6e109375f135..82bc6331bc7e 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index 3acca4181f61..ccba3dda6bf9 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -37,7 +37,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 5277be1f62ee..621204561739 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index eed3009c3a83..f31671949df3 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 3606f01ed813..39e84326daf2 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -38,7 +38,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 1d4e82d24342..1ccb73147a68 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -37,7 +37,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { diff --git a/code/lib/postinstall/package.json b/code/lib/postinstall/package.json index f3b0220588d0..2703727f3f6a 100644 --- a/code/lib/postinstall/package.json +++ b/code/lib/postinstall/package.json @@ -40,7 +40,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 0d372feed6e0..9838ce29c4a7 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -63,7 +63,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index f63295505081..7edc4bbc4e83 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -51,7 +51,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/esm-bundle.ts" }, "devDependencies": { diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index 6fd5299a2eb3..67f865a0e0b4 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -49,7 +49,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 89f39d007e6c..c9e3388b5568 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 5be349908930..4243d210165f 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -40,7 +40,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index 30de3fbd430e..28bf90684709 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 504fa4fae38e..cb6af6c14bb9 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 40c14195bb73..1676d89c5a73 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index aae62c08aecb..c8b67e478017 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 14472b729a52..e1035a00238a 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 041e2c7c7be0..a91416277780 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index a01398790eff..2df91891daa1 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -59,7 +59,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 5bb0e268cb3b..5756f411daf2 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -49,7 +49,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 47431d89989e..45efb2ee01a2 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -59,7 +59,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/vue-webpack/package.json b/code/presets/vue-webpack/package.json index ea15ea1f1a49..7820cc57fe1f 100644 --- a/code/presets/vue-webpack/package.json +++ b/code/presets/vue-webpack/package.json @@ -54,7 +54,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index 5fec90da4ed2..0186a5b0def7 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -54,7 +54,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/presets/web-components-webpack/package.json b/code/presets/web-components-webpack/package.json index c145988ce6ce..3ca95d692bd7 100644 --- a/code/presets/web-components-webpack/package.json +++ b/code/presets/web-components-webpack/package.json @@ -47,7 +47,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index d90c69dcbca7..a036ef947ce4 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index b41abe56f30b..3c050167faca 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -44,7 +44,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 31c8ae575ce2..6faeea8a0b82 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -48,7 +48,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index f4b0bd928143..6a4c231a3543 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -49,7 +49,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 2f2521fdb468..1f6e5bf245fa 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -47,7 +47,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index c2d7bd274ea5..5f1326b58e35 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -39,7 +39,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/ui/components/package.json b/code/ui/components/package.json index a23aa0dd0e83..f02bd1d1b5cb 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -63,7 +63,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 4b8d95629973..45ac1d41e38c 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -46,7 +46,7 @@ "*.d.ts" ], "scripts": { - "check": "../../../scripts/node_modules/.bin/tsc --noEmit", + "check": "../../../scripts/prepare/check.ts", "prep": "../../../scripts/prepare/esm-bundle.ts" }, "devDependencies": { diff --git a/scripts/prepare/check.ts b/scripts/prepare/check.ts new file mode 100644 index 000000000000..d200e921ea0b --- /dev/null +++ b/scripts/prepare/check.ts @@ -0,0 +1,80 @@ +#!/usr/bin/env ../../node_modules/.bin/ts-node-script + +import { join } from 'path'; +import fs from 'fs-extra'; +import * as ts from 'typescript'; + +const run = async ({ cwd }: { cwd: string }) => { + const { + bundler: { tsConfig: tsconfigPath = 'tsconfig.json' }, + } = await fs.readJson(join(cwd, 'package.json')); + + const { options, fileNames } = getTSFilesAndConfig(tsconfigPath); + const { program, host } = getTSProgramAndHost(fileNames, options); + + const tsDiagnostics = getTSDiagnostics(program, cwd, host); + if (tsDiagnostics.length > 0) { + console.log(tsDiagnostics); + process.exit(1); + } else { + console.log('no type errors'); + } + + // TODO, add more package checks here, like: + // - check for missing dependencies/peerDependencies + // - check for unused exports + + console.log('done'); +}; + +run({ cwd: process.cwd() }).catch((err: unknown) => { + // We can't let the stack try to print, it crashes in a way that sets the exit code to 0. + // Seems to have something to do with running JSON.parse() on binary / base64 encoded sourcemaps + // in @cspotcode/source-map-support + if (err instanceof Error) { + console.error(err.message); + } + process.exit(1); +}); + +function getTSDiagnostics(program: ts.Program, cwd: string, host: ts.CompilerHost): any { + return ts.formatDiagnosticsWithColorAndContext( + ts.getPreEmitDiagnostics(program).filter((d) => d.file.fileName.startsWith(cwd)), + host + ); +} + +function getTSProgramAndHost(fileNames: string[], options: ts.CompilerOptions) { + const program = ts.createProgram({ + rootNames: fileNames, + options: { + module: ts.ModuleKind.CommonJS, + ...options, + declaration: false, + noEmit: true, + }, + }); + + const host = ts.createCompilerHost(program.getCompilerOptions()); + return { program, host }; +} + +function getTSFilesAndConfig(tsconfigPath: string) { + const content = ts.readJsonConfigFile(tsconfigPath, ts.sys.readFile); + return ts.parseJsonSourceFileConfigFileContent( + content, + { + useCaseSensitiveFileNames: true, + readDirectory: ts.sys.readDirectory, + fileExists: ts.sys.fileExists, + readFile: ts.sys.readFile, + }, + process.cwd(), + { + noEmit: true, + outDir: join(process.cwd(), 'types'), + target: ts.ScriptTarget.ES2022, + declaration: false, + } + ); +} From 1af46cfad5f79e305131de986949a23136e53165 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:05:47 +0200 Subject: [PATCH 128/135] set skipLibCheck to true for perf, and checking .d.ts files doesn't really do any good anyway --- code/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/tsconfig.json b/code/tsconfig.json index e28f13442121..26de1b5ba684 100644 --- a/code/tsconfig.json +++ b/code/tsconfig.json @@ -10,7 +10,7 @@ "moduleResolution": "Node", "target": "ES2020", "module": "CommonJS", - "skipLibCheck": false, + "skipLibCheck": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, From 7910e2dbf70f39e9ca2a7b39dd989497b95fe0d8 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:20:33 +0200 Subject: [PATCH 129/135] update check task to allow for running with linking --- scripts/tasks/check.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/tasks/check.ts b/scripts/tasks/check.ts index 2c7fa33a7c79..8514d453dde4 100644 --- a/scripts/tasks/check.ts +++ b/scripts/tasks/check.ts @@ -4,7 +4,8 @@ import { maxConcurrentTasks } from '../utils/maxConcurrentTasks'; const parallel = process.env.CI ? 8 : maxConcurrentTasks; -const command = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer`; +const linkCommand = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer,@storybook/vue,@storybook/svelte,@storybook/vue3,@storybook/angular`; +const nolinkCommand = `nx run-many --target="check" --all --parallel=${parallel} --exclude=@storybook/addon-storyshots,@storybook/addon-storyshots-puppeteer`; export const check: Task = { description: 'Typecheck the source code of the monorepo', @@ -13,9 +14,8 @@ export const check: Task = { return false; }, async run({ codeDir }, { dryRun, debug, link }) { - if (link) throw new Error('Cannot check when linked, please run with `--no-link`'); return exec( - command, + link ? linkCommand : nolinkCommand, { cwd: codeDir }, { startMessage: '🥾 Checking types validity', From 67fe0942067a8d7242e04a4dc33eec816a6ecdf6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:22:39 +0200 Subject: [PATCH 130/135] chmod check script --- scripts/prepare/check.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/prepare/check.ts diff --git a/scripts/prepare/check.ts b/scripts/prepare/check.ts old mode 100644 new mode 100755 From 77193b0a80856ef53bc2e5595ca0084372eb768b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:23:37 +0200 Subject: [PATCH 131/135] change codemod entrypoint to ts --- code/lib/codemod/package.json | 2 +- code/lib/codemod/src/{index.js => index.ts} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename code/lib/codemod/src/{index.js => index.ts} (94%) diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index d59374a22def..cf9296466690 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -82,7 +82,7 @@ }, "bundler": { "entries": [ - "./src/index.js", + "./src/index.ts", "./src/transforms/add-component-parameters.js", "./src/transforms/csf-2-to-3.ts", "./src/transforms/csf-hoist-story-annotations.js", diff --git a/code/lib/codemod/src/index.js b/code/lib/codemod/src/index.ts similarity index 94% rename from code/lib/codemod/src/index.js rename to code/lib/codemod/src/index.ts index 4809d9f3d200..00473ad0f79a 100644 --- a/code/lib/codemod/src/index.js +++ b/code/lib/codemod/src/index.ts @@ -25,13 +25,13 @@ export function listCodemods() { const renameAsync = promisify(fs.rename); -async function renameFile(file, from, to, { logger }) { +async function renameFile(file: any, from: any, to: any, { logger }: any) { const newFile = file.replace(from, to); logger.log(`Rename: ${file} ${newFile}`); return renameAsync(file, newFile); } -export async function runCodemod(codemod, { glob, logger, dryRun, rename, parser }) { +export async function runCodemod(codemod: any, { glob, logger, dryRun, rename, parser }: any) { const codemods = listCodemods(); if (!codemods.includes(codemod)) { throw new Error(`Unknown codemod ${codemod}. Run --list for options.`); From d8b514c293142187caeeacfc53991e4cfe57042a Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 21:24:00 +0200 Subject: [PATCH 132/135] fix a global type issue --- code/lib/instrumenter/src/instrumenter.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/lib/instrumenter/src/instrumenter.test.ts b/code/lib/instrumenter/src/instrumenter.test.ts index da65f5498dd7..eadb1f7d5c84 100644 --- a/code/lib/instrumenter/src/instrumenter.test.ts +++ b/code/lib/instrumenter/src/instrumenter.test.ts @@ -37,7 +37,9 @@ global.location = { reload: jest.fn() }; global.HTMLElement = HTMLElement; const storyId = 'kind--story'; -global.window.__STORYBOOK_PREVIEW__ = { selectionStore: { selection: { storyId } } }; +global.window.__STORYBOOK_PREVIEW__ = { + selectionStore: { selection: { storyId, viewMode: 'story' } }, +} as any; const setRenderPhase = (newPhase: string) => addons.getChannel().emit(STORY_RENDER_PHASE_CHANGED, { newPhase, storyId }); From 92a494e8317e0ae8fc0f820738be63883984d01b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 22:14:33 +0200 Subject: [PATCH 133/135] regen lockfiles --- code/yarn.lock | 942 +++++++++++++++++++++++++--------------------- scripts/yarn.lock | 909 ++++++++++++++++++++++---------------------- 2 files changed, 945 insertions(+), 906 deletions(-) diff --git a/code/yarn.lock b/code/yarn.lock index 6a0f2faeaca2..d1ab427890f5 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -219,13 +219,13 @@ __metadata: linkType: hard "@angular/animations@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/animations@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/animations@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.1.4 - checksum: 9738722a1e5f7f232b5453cca1e0e441164ded88c473f2411ec10632bd992d602e8026f71502b0e0f3dee66c439e333da86e1c0a413f2c4d3d86106e66c48e59 + "@angular/core": 16.1.5 + checksum: fe5d5c6fec7ce5e432107a4bcb25dc52f0ee4520eefd822d8fb1153fa4cd1b5c19af9c7ca8fb32b4668bb47939065207ab6b19b8d1f5177fd02b33a108a43577 languageName: node linkType: hard @@ -258,20 +258,20 @@ __metadata: linkType: hard "@angular/common@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/common@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/common@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.1.4 + "@angular/core": 16.1.5 rxjs: ^6.5.3 || ^7.4.0 - checksum: 0b6fa09cda4a2026731e4c275f95b54ffbc8b74d40973dda7a7d791e8d61b0e518ad9ad3707eb14372dfee6cad243149280b22c3d9369fbc51dde4dc883d87bb + checksum: b9abab8d12a5ad77d0b8071199dd3b38343a1814b30c841334d2945668895c2f23472f9605dc4cb4aca6f5c31fb516f995595f2714f90deb54a6a3d27e20b899 languageName: node linkType: hard "@angular/compiler-cli@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/compiler-cli@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/compiler-cli@npm:16.1.5" dependencies: "@babel/core": 7.22.5 "@jridgewell/sourcemap-codec": ^1.4.14 @@ -282,83 +282,83 @@ __metadata: tslib: ^2.3.0 yargs: ^17.2.1 peerDependencies: - "@angular/compiler": 16.1.4 + "@angular/compiler": 16.1.5 typescript: ">=4.9.3 <5.2" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: ff4124bef99a4f4c45a781314db2db2789232083a3c00427b70469980fadb3ea5a05dfa4470aa258f343b7f351fc3637995e4aa2cf0020502785abe6d5540483 + checksum: 401d9645d9a5715fcfa9b83fcd99143001eee84276aa09cb1b3aaa214f6786a18bf24f302a5bd89fbca7ad0789aedaac46409a58d7a114e95d3c56bb1a144846 languageName: node linkType: hard "@angular/compiler@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/compiler@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/compiler@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/core": 16.1.4 + "@angular/core": 16.1.5 peerDependenciesMeta: "@angular/core": optional: true - checksum: c279d3072b8d35dc4bcf45fb6979dc2ffa97a10c961e511c16c4a15c553aaf4d914005fdbf7f41a7ed555abe077351b084cd3e41318df3f49865ff2390dea637 + checksum: dbf1b5074927f99b472808b3ddc0a42681f91ffd66d944862e4ad428d86f02e3b8e65ae1912df191dfbfe32cebce0cc1daa76fe0a4f96dfbfb1f465cce96fc4c languageName: node linkType: hard "@angular/core@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/core@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/core@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.13.0 - checksum: 8c0e8ceb1addd3359d964b790aade2cb27e05f2f1dd0ca4070d1f39898eb8c38232881515029c212556b5eb195deec9fc8052278a994957977df0963945d5bbf + checksum: 8d01c024320c09facdc4ab51073bbde5eccbfda4dff0763c6a332cc4f7a9aaa1ab0b5e97eda844995507bdd0063f97d1d12d7a2ed5c7d87681a3c9210e3975ca languageName: node linkType: hard "@angular/forms@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/forms@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/forms@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.1.4 - "@angular/core": 16.1.4 - "@angular/platform-browser": 16.1.4 + "@angular/common": 16.1.5 + "@angular/core": 16.1.5 + "@angular/platform-browser": 16.1.5 rxjs: ^6.5.3 || ^7.4.0 - checksum: 201d018a320e82d261787e40ad63ee177df64b4272aef342bdc0b9f5e0630d54c515f7ead3b0fbf9b4de8d2e2100f73bc65771e1d5de07c45a485685dd70b562 + checksum: 441ea82e447fb4c8b053dff2097544eb787e5f95efaaf00d44cccf7accba9a549cdd3973d730a8dd8ba0e1f9b2d01f83fd6ed36a192515a595076fa35ac45c53 languageName: node linkType: hard "@angular/platform-browser-dynamic@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/platform-browser-dynamic@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/platform-browser-dynamic@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/common": 16.1.4 - "@angular/compiler": 16.1.4 - "@angular/core": 16.1.4 - "@angular/platform-browser": 16.1.4 - checksum: cf428de8fa17a3efdffc0d9f6caa1db0e72252d1a59983c1d3ed4a294aca275824ff788308bce2c8575c99f839208ea9aa5ff066369bdb41a1afa90936b31d33 + "@angular/common": 16.1.5 + "@angular/compiler": 16.1.5 + "@angular/core": 16.1.5 + "@angular/platform-browser": 16.1.5 + checksum: 87d2dcdb41f7d744aa1d9a0227228b66916e2d5c58710b8b58b4619b14d20f026aca626e25c7c1b14e5b2b6e9414597054e40d7c645f5ea59bc5042e39487f6b languageName: node linkType: hard "@angular/platform-browser@npm:^16.0.0-rc.4": - version: 16.1.4 - resolution: "@angular/platform-browser@npm:16.1.4" + version: 16.1.5 + resolution: "@angular/platform-browser@npm:16.1.5" dependencies: tslib: ^2.3.0 peerDependencies: - "@angular/animations": 16.1.4 - "@angular/common": 16.1.4 - "@angular/core": 16.1.4 + "@angular/animations": 16.1.5 + "@angular/common": 16.1.5 + "@angular/core": 16.1.5 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 6b0abd83b43cfbe182c3047c4d3c8b045655d0e3be68b54cabd1d22d8b12b4ce534dfb69af474a13c396013dba6cdf9efe5e7530216bde5745c1dffa28b2d2d9 + checksum: 720afdb71019008cf7adcaef26068bbc2edf53b6f5bcb2ac0e365a355f3d6774574fe234f376ec544ce7f750fac1f8ece0189d47dc456bcb0bbaf1191abdee54 languageName: node linkType: hard @@ -400,10 +400,10 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/compat-data@npm:7.22.6" - checksum: 09971bda48c46e19d8f1d8c817ebd60ccca2ca30b90324ba6227cfa3765847a9ddd7730481ec81149a2270e2c90c2674e41ebbb73258e48c37922171ffe1e6dc +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: 1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad languageName: node linkType: hard @@ -454,29 +454,29 @@ __metadata: linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.22.0, @babel/core@npm:^7.22.1, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": - version: 7.22.8 - resolution: "@babel/core@npm:7.22.8" + version: 7.22.9 + resolution: "@babel/core@npm:7.22.9" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 - "@babel/helper-compilation-targets": ^7.22.6 - "@babel/helper-module-transforms": ^7.22.5 + "@babel/generator": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-module-transforms": ^7.22.9 "@babel/helpers": ^7.22.6 "@babel/parser": ^7.22.7 "@babel/template": ^7.22.5 "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - checksum: d506ac42eaf2f7c3c190cc91a1413bb9ae5c067e06268fa962cb5fd0e67fc0feb48c7fa51527da378e3cc3a92a13a3420bae877df89207d880c839b6bb73e662 + semver: ^6.3.1 + checksum: 4dffc8844bd8ab5c292e795f3eb0e636246177d28b75ec99f3349a29fe08a9f3e089fe68b857ed160f3312c035c8fb73fdc83b0c781f4629164e548a7d62a8c7 languageName: node linkType: hard -"@babel/generator@npm:7.22.7, @babel/generator@npm:^7.12.11, @babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7": +"@babel/generator@npm:7.22.7": version: 7.22.7 resolution: "@babel/generator@npm:7.22.7" dependencies: @@ -488,6 +488,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.22.0, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2, @babel/generator@npm:^7.8.7": + version: 7.22.9 + resolution: "@babel/generator@npm:7.22.9" + dependencies: + "@babel/types": ^7.22.5 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 6ef82c7f6dc8f749c0eb3a04fe35acab032a9221d82984e67cbbada449ca857dd981e08c129f9cf5d2f342ba00efcc683a99e46a470f233b0948edf197e35d26 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:7.22.5, @babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -506,50 +518,50 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-compilation-targets@npm:7.22.6" +"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.22.6 + "@babel/compat-data": ^7.22.9 "@babel/helper-validator-option": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 browserslist: ^4.21.9 lru-cache: ^5.1.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: a37ae986bbfc61bc1adebe05a415ac03e0e8100e4b1ccbfd6ed90ffe201947beae9d7bd2cebe562199e1326797f908153d7b544520786eecf99fccb9db3c0fa9 + checksum: 543b9a45800c1db2f91cc53462ed1799834a1259e498d3d91f45816ae79d19719ef957fa00b0f015d8b768eac09fd1f4f5f42f868c5a10f4389e3883a3f050f1 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.6" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6, @babel/helper-create-class-features-plugin@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-member-expression-to-functions": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@nicolo-ribaudo/semver-v6": ^6.3.3 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4411b40bad0b4f1927eaaabbedd0b75cb9a7c18d18c3c2139dcf66a59352092632d8e38fe462337206167f11a6d4a70459ecc06a0ae30400dcbe56773fe3617d + checksum: f383152992996b0b936e555aaef35264852908720216c298f677f4b53ba3c4325b700c6a62ff08a8e1377d76ed6538e1bd5232557266eae777cc06b7eb3dd4ad languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.6 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.6" + version: 7.22.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 regexpu-core: ^5.3.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 09e195edf82c94d04fe4a53dc2dc38f9bac499625e99da21e2b16b3f3f765971ce903b7621fe868e496117a5084fd513d05b5ca58b57f46acc641af84eedc68d + checksum: 056c9913299ba399194d9aef5f4281a81806f66979c3c9c6da19b2e29bc92abad6d6d6be0cd4b3ed5945abbdf2d4c45362ee26a012f75f16de7d26859dfde11d languageName: node linkType: hard @@ -612,19 +624,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-transforms@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-module-imports": ^7.22.5 "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/helper-validator-identifier": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: a28cf9a91ed657392f75ada08d96a46e8d0df420b7d5d1ac0bb1633d1404807d0cb6e6a3b0666c747d30f378fbb34985d30c6f25e2fcdd69dc58656e47aafe92 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 languageName: node linkType: hard @@ -645,30 +656,28 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.18.9, @babel/helper-remap-async-to-generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.5" + version: 7.22.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.5 - "@babel/types": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: a4ec78db69db61dbc65eb5b07c8ab4e836caf89a3a8b2983c2afcde805c11f5c660e0932739315d9f08d7ac442360822227ce9f9fdd9436993d342de9a043cf5 + checksum: e753f19726846df26a13a304632aff2bc6e437201f27eecc7ba12db04b9175062da307e72512cf4761e659ec82cb71016352acd83fbe5e527f4b881ce1e633e8 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-replace-supers@npm:7.22.5" +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-member-expression-to-functions": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 0590aa037340e069de866f313eca7d7f0031bd95b56e5182bef79c05a97e763a6098fa4ab77fed8e3798e832bb6a3230bea438e669bc4d90112f09e841bff064 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 languageName: node linkType: hard @@ -699,7 +708,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": +"@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: @@ -729,15 +738,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-wrap-function@npm:7.22.5" +"@babel/helper-wrap-function@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-wrap-function@npm:7.22.9" dependencies: "@babel/helper-function-name": ^7.22.5 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 "@babel/types": ^7.22.5 - checksum: 34aa811cc433a3fe2d1bcb7c703ad57c523fd9cad5df8da0651175569cb63dc95b1557305735d922d94a4420e11b2a87d65dbe7f14b49b69e2c7a9c0fdea5647 + checksum: 233c10fe3b38efbf8fcf9bcda8b45b998e963d352beb1966012f4b0be8c221776546a999190c77f0a43524b35c0271691453baf71fe2772fcf7f7938d3621b0d languageName: node linkType: hard @@ -1790,18 +1798,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.22.0": - version: 7.22.7 - resolution: "@babel/plugin-transform-runtime@npm:7.22.7" + version: 7.22.9 + resolution: "@babel/plugin-transform-runtime@npm:7.22.9" dependencies: "@babel/helper-module-imports": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 babel-plugin-polyfill-corejs2: ^0.4.4 babel-plugin-polyfill-corejs3: ^0.8.2 babel-plugin-polyfill-regenerator: ^0.5.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e0768cedf474c3744bedb28f073ef1630f7d1ac33467033ae8ead6a9586cdf007c9d0a63b5d1941c5f29dc95568d700ea0672e17bacb0eb21bf81a49f83346c8 + checksum: 36a5c4a69ca709c6d74b35217b46d72c55a4447f7825a93cb628251b6736391d66d97635877ecb48ff1ddc4516e2e5b6e2e87999835c2c8e08b948eba5f9edfc languageName: node linkType: hard @@ -1862,16 +1870,16 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-typescript@npm:7.22.5" + version: 7.22.9 + resolution: "@babel/plugin-transform-typescript@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.9 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-typescript": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1ee79ead40f8a299dd643d433a514e2bc970f954d27c3a92d62f2139a19128c31d76d094df7e1c1789a70528f349ba536f271a0b47117c77ca49cd26f8b1c66d + checksum: dc0623bbb21bffdc3c64bf5f50677ba06c6bd9f17edae08fd40f3e639632a716efce91100a46aeaad064e082ee71dfd35941cb605bf27f5d32363912a86ba07f languageName: node linkType: hard @@ -2023,11 +2031,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.22.0": - version: 7.22.7 - resolution: "@babel/preset-env@npm:7.22.7" + version: 7.22.9 + resolution: "@babel/preset-env@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-compilation-targets": ^7.22.6 + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 @@ -2101,14 +2109,14 @@ __metadata: "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": ^0.1.5 "@babel/types": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 babel-plugin-polyfill-corejs2: ^0.4.4 babel-plugin-polyfill-corejs3: ^0.8.2 babel-plugin-polyfill-regenerator: ^0.5.1 core-js-compat: ^3.31.0 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4463c50ccab7aa06a60dde5c1f6e94fdf18e425935b13a1bf168ece9b7bd29dcad015a788581a5c5297bae28a3adcea2472fc74d4e1296aa7195ce0a72a9cac5 + checksum: fad75686dd55638be71657edbd428bb0266a3f34bc6e367bd55fbff911652c971fcea3e5c346288d4e0a15c81b732c4a2549fce97910b602e19170fe1ddf72d0 languageName: node linkType: hard @@ -2613,156 +2621,156 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm64@npm:0.18.11" +"@esbuild/android-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm64@npm:0.18.14" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm@npm:0.18.11" +"@esbuild/android-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm@npm:0.18.14" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-x64@npm:0.18.11" +"@esbuild/android-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-x64@npm:0.18.14" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-arm64@npm:0.18.11" +"@esbuild/darwin-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-arm64@npm:0.18.14" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-x64@npm:0.18.11" +"@esbuild/darwin-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-x64@npm:0.18.14" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-arm64@npm:0.18.11" +"@esbuild/freebsd-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-arm64@npm:0.18.14" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-x64@npm:0.18.11" +"@esbuild/freebsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-x64@npm:0.18.14" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm64@npm:0.18.11" +"@esbuild/linux-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm64@npm:0.18.14" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm@npm:0.18.11" +"@esbuild/linux-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm@npm:0.18.14" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ia32@npm:0.18.11" +"@esbuild/linux-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ia32@npm:0.18.14" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-loong64@npm:0.18.11" +"@esbuild/linux-loong64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-loong64@npm:0.18.14" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-mips64el@npm:0.18.11" +"@esbuild/linux-mips64el@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-mips64el@npm:0.18.14" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ppc64@npm:0.18.11" +"@esbuild/linux-ppc64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ppc64@npm:0.18.14" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-riscv64@npm:0.18.11" +"@esbuild/linux-riscv64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-riscv64@npm:0.18.14" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-s390x@npm:0.18.11" +"@esbuild/linux-s390x@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-s390x@npm:0.18.14" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-x64@npm:0.18.11" +"@esbuild/linux-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-x64@npm:0.18.14" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/netbsd-x64@npm:0.18.11" +"@esbuild/netbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/netbsd-x64@npm:0.18.14" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/openbsd-x64@npm:0.18.11" +"@esbuild/openbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/openbsd-x64@npm:0.18.14" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/sunos-x64@npm:0.18.11" +"@esbuild/sunos-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/sunos-x64@npm:0.18.14" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-arm64@npm:0.18.11" +"@esbuild/win32-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-arm64@npm:0.18.14" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-ia32@npm:0.18.11" +"@esbuild/win32-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-ia32@npm:0.18.14" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-x64@npm:0.18.11" +"@esbuild/win32-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-x64@npm:0.18.14" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3901,72 +3909,72 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:13.4.9": - version: 13.4.9 - resolution: "@next/env@npm:13.4.9" - checksum: 712cd2012d42f28bd9af5659cab1cb6e2b33e6ada38f06a83411cbdcc90e39c94c924a4eb7ab3635bf5ef5fa88d24ed856e1e5f07d6c470fef317daf88d5d520 +"@next/env@npm:13.4.10": + version: 13.4.10 + resolution: "@next/env@npm:13.4.10" + checksum: dbb86ba0b8afdab6d7d590dd8b47dab5a6284f7845b8a55be876a3f3b2f3d5732355a44c9813289c1f4af0465d8322b557384c0a58c9a62338904e591c60ad2e languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-darwin-arm64@npm:13.4.9" +"@next/swc-darwin-arm64@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-darwin-arm64@npm:13.4.10" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-darwin-x64@npm:13.4.9" +"@next/swc-darwin-x64@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-darwin-x64@npm:13.4.10" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-linux-arm64-gnu@npm:13.4.9" +"@next/swc-linux-arm64-gnu@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-linux-arm64-gnu@npm:13.4.10" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-linux-arm64-musl@npm:13.4.9" +"@next/swc-linux-arm64-musl@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-linux-arm64-musl@npm:13.4.10" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-linux-x64-gnu@npm:13.4.9" +"@next/swc-linux-x64-gnu@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-linux-x64-gnu@npm:13.4.10" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-linux-x64-musl@npm:13.4.9" +"@next/swc-linux-x64-musl@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-linux-x64-musl@npm:13.4.10" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-win32-arm64-msvc@npm:13.4.9" +"@next/swc-win32-arm64-msvc@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-win32-arm64-msvc@npm:13.4.10" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-win32-ia32-msvc@npm:13.4.9" +"@next/swc-win32-ia32-msvc@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-win32-ia32-msvc@npm:13.4.10" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:13.4.9": - version: 13.4.9 - resolution: "@next/swc-win32-x64-msvc@npm:13.4.9" +"@next/swc-win32-x64-msvc@npm:13.4.10": + version: 13.4.10 + resolution: "@next/swc-win32-x64-msvc@npm:13.4.10" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -8123,90 +8131,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-darwin-arm64@npm:1.3.68" +"@swc/core-darwin-arm64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-arm64@npm:1.3.70" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-darwin-x64@npm:1.3.68" +"@swc/core-darwin-x64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-x64@npm:1.3.70" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" +"@swc/core-linux-arm-gnueabihf@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.70" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" +"@swc/core-linux-arm64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" +"@swc/core-linux-arm64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" +"@swc/core-linux-x64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-x64-musl@npm:1.3.68" +"@swc/core-linux-x64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-musl@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" +"@swc/core-win32-arm64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.70" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" +"@swc/core-win32-ia32-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.70" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" +"@swc/core-win32-x64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.70" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.23, @swc/core@npm:^1.3.49": - version: 1.3.68 - resolution: "@swc/core@npm:1.3.68" - dependencies: - "@swc/core-darwin-arm64": 1.3.68 - "@swc/core-darwin-x64": 1.3.68 - "@swc/core-linux-arm-gnueabihf": 1.3.68 - "@swc/core-linux-arm64-gnu": 1.3.68 - "@swc/core-linux-arm64-musl": 1.3.68 - "@swc/core-linux-x64-gnu": 1.3.68 - "@swc/core-linux-x64-musl": 1.3.68 - "@swc/core-win32-arm64-msvc": 1.3.68 - "@swc/core-win32-ia32-msvc": 1.3.68 - "@swc/core-win32-x64-msvc": 1.3.68 + version: 1.3.70 + resolution: "@swc/core@npm:1.3.70" + dependencies: + "@swc/core-darwin-arm64": 1.3.70 + "@swc/core-darwin-x64": 1.3.70 + "@swc/core-linux-arm-gnueabihf": 1.3.70 + "@swc/core-linux-arm64-gnu": 1.3.70 + "@swc/core-linux-arm64-musl": 1.3.70 + "@swc/core-linux-x64-gnu": 1.3.70 + "@swc/core-linux-x64-musl": 1.3.70 + "@swc/core-win32-arm64-msvc": 1.3.70 + "@swc/core-win32-ia32-msvc": 1.3.70 + "@swc/core-win32-x64-msvc": 1.3.70 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -8233,7 +8241,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 3788a944fb99934a3280f5d168ca758784d6a6bb554c7282d90db1bb78af9a98420171b5b6abbb4bac9556d0795e4b1332601d7eb528ee6caeffca351b8dabf9 + checksum: 9433f6df1623de33c400d45bec65b1e54ad9e250ff1c24b3adb6d1925c753dc694ea0a0c6d75456fcf28d0c3e01866c3a880f24d23e35b2f62a9a3218ce7c15e languageName: node linkType: hard @@ -8300,8 +8308,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^5.11.9, @testing-library/jest-dom@npm:^5.16.2": - version: 5.16.5 - resolution: "@testing-library/jest-dom@npm:5.16.5" + version: 5.17.0 + resolution: "@testing-library/jest-dom@npm:5.17.0" dependencies: "@adobe/css-tools": ^4.0.1 "@babel/runtime": ^7.9.2 @@ -8312,7 +8320,7 @@ __metadata: dom-accessibility-api: ^0.5.6 lodash: ^4.17.15 redent: ^3.0.0 - checksum: 0925fda78096cca355d164d5358b84b9371c4fb6ba60ce60c2263446ac6d9c6aaca75e2792cdb42699fe78c379924c53db672a3510361b577ebb89a0c6e1c629 + checksum: 24e09c5779ea44644945ec26f2e4e5f48aecfe57d469decf2317a3253a5db28d865c55ad0ea4818d8d1df7572a6486c45daa06fa09644a833a7dd84563881939 languageName: node linkType: hard @@ -8738,11 +8746,11 @@ __metadata: linkType: hard "@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" + version: 2.3.5 + resolution: "@types/hast@npm:2.3.5" dependencies: - "@types/unist": "*" - checksum: 635cfe9a8e91f6b3c15c9929455d0136ac4d75c5b7f596ce21b453cecdfda785e89b10eb2b2d9da9d43e548b1d65ba3e20c741bbaf83823575c9c45001ade4bb + "@types/unist": ^2 + checksum: 3fc5185e7fb5139a4f60f0d4450179c1f88b7e288a054415b273e4a32f0c4cfe825a4cad075824dcdf3984609b47f13141f8900dedb3aeab482ae5a16275e807 languageName: node linkType: hard @@ -8908,11 +8916,11 @@ __metadata: linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.11 - resolution: "@types/mdast@npm:3.0.11" + version: 3.0.12 + resolution: "@types/mdast@npm:3.0.12" dependencies: - "@types/unist": "*" - checksum: 569ec32ac16deb42f2c9e7cdbfb5be0f67d2407036b49ba9cfa07ad0258b044c259922acba170eaed165ebcf5eb168032fbb4b3e35023fe8c581fe46e9bcbad0 + "@types/unist": ^2 + checksum: b5af41e4f19a149eba58cde8ccacc36117640aefe28966637c54c27a8fbcfa3972e88cafd859c7bf39cd5c4e965e4196169001beac4a1980cfee6b08eea896a6 languageName: node linkType: hard @@ -9290,11 +9298,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.7 - resolution: "@types/testing-library__jest-dom@npm:5.14.7" + version: 5.14.8 + resolution: "@types/testing-library__jest-dom@npm:5.14.8" dependencies: "@types/jest": "*" - checksum: 793a8505e8551d6567271aa1999e7b41447c9ca6e00ffc4a26e62b6cf732b473c2d91ccf38d000c794a79975089a8c941cb775756c6135ffb00d65457480c5c1 + checksum: 83b9e7470da50d1a594c0afd999f689955e61cb8d9a8a32582ca14f73cc8503428376f98414becc1dc9e712f3de8ee2e49f41ed0117ab6a382c79988682e857e languageName: node linkType: hard @@ -9328,10 +9336,10 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/unist@npm:2.0.7" + checksum: ecfb4ad9909ba9390fc3b6923a1d783e99753b0687f5cd99a0e56b6c05e1c72bf4e55cb1b8c0ffda49c6cbead4636de351a130f63d7648c554dc526038733b25 languageName: node linkType: hard @@ -9636,30 +9644,30 @@ __metadata: languageName: node linkType: hard -"@volar/language-core@npm:1.8.0, @volar/language-core@npm:~1.8.0": - version: 1.8.0 - resolution: "@volar/language-core@npm:1.8.0" +"@volar/language-core@npm:1.9.0, @volar/language-core@npm:~1.9.0": + version: 1.9.0 + resolution: "@volar/language-core@npm:1.9.0" dependencies: - "@volar/source-map": 1.8.0 - checksum: fe59ff005e1c0b4e03f3606c56922d849850a135edeeee78615859e0185303e0e13ded69dc2d2b01532ed49a4198f4e4ebbec3ccc8f1b88f61b8b217e17badf8 + "@volar/source-map": 1.9.0 + checksum: aaa61dd8b6428d67427136ff4166e1e13ff89c4ca05a06ee7006a0932fc693712d703cc237726016155af82f5c43870895f179281479fd1e7fd51669bee6379b languageName: node linkType: hard -"@volar/source-map@npm:1.8.0, @volar/source-map@npm:~1.8.0": - version: 1.8.0 - resolution: "@volar/source-map@npm:1.8.0" +"@volar/source-map@npm:1.9.0, @volar/source-map@npm:~1.9.0": + version: 1.9.0 + resolution: "@volar/source-map@npm:1.9.0" dependencies: muggle-string: ^0.3.1 - checksum: e2ae0901e81d0ea2c44deb08559752987a242ac4f3ff7950e83500882ff828863dc07f669cf06717aff7becfd4a521c0b91c8a1b083efb99fa419ee477ce8730 + checksum: bf3ac6c597abeee911b0d557b43c24971cabe76e5fa0545490998619518a34ea54c7d9374eddfc9b5d8fa43333443c369f2cba9342d9069c7b26eb14a3b7aeb7 languageName: node linkType: hard -"@volar/typescript@npm:~1.8.0": - version: 1.8.0 - resolution: "@volar/typescript@npm:1.8.0" +"@volar/typescript@npm:~1.9.0": + version: 1.9.0 + resolution: "@volar/typescript@npm:1.9.0" dependencies: - "@volar/language-core": 1.8.0 - checksum: 874cbca7612a5f2330a51c8bb7d66aa4e2d99dc63ed456cb486933bc5c72035cf1299fdf7292ceae83ffb042ddf073de02a71810ed07f33b030a3d1daf9284c6 + "@volar/language-core": 1.9.0 + checksum: 66a93c45b729d9a586c8889fe8249ecf4a83212b5671e5caf84132101170784a31bf8e09afc24b119dd9c18c2ce71993bde2b78746e5a4492da834eda7c17aea languageName: node linkType: hard @@ -9803,12 +9811,12 @@ __metadata: languageName: node linkType: hard -"@vue/language-core@npm:1.8.4": - version: 1.8.4 - resolution: "@vue/language-core@npm:1.8.4" +"@vue/language-core@npm:1.8.5": + version: 1.8.5 + resolution: "@vue/language-core@npm:1.8.5" dependencies: - "@volar/language-core": ~1.8.0 - "@volar/source-map": ~1.8.0 + "@volar/language-core": ~1.9.0 + "@volar/source-map": ~1.9.0 "@vue/compiler-dom": ^3.3.0 "@vue/reactivity": ^3.3.0 "@vue/shared": ^3.3.0 @@ -9820,7 +9828,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 694ab54766d6899ac4a0574f394041e8018388edb3873480982a8fd2bde7bd8dc13df6e944de7605a38623897da7737eb334f77c2e90923df56dca2f35e171a3 + checksum: 0d5aabe8cd62ba2a40538bcb967344971a13d45e0803a933e29cd12c411d9e3fd7d781fc3abe0ffe4e2c00fff9d15ca7210b38b987c78355d6f61d925aefc2e0 languageName: node linkType: hard @@ -9923,13 +9931,13 @@ __metadata: languageName: node linkType: hard -"@vue/typescript@npm:1.8.4": - version: 1.8.4 - resolution: "@vue/typescript@npm:1.8.4" +"@vue/typescript@npm:1.8.5": + version: 1.8.5 + resolution: "@vue/typescript@npm:1.8.5" dependencies: - "@volar/typescript": ~1.8.0 - "@vue/language-core": 1.8.4 - checksum: ce00b60d87d912308dbb27b2aea1799961dad479ae43afee0574ef9d7ba70be137eb20d052519a667beedf30f2539c71e9f99beb6c43ee85ded2bc051eacba3f + "@volar/typescript": ~1.9.0 + "@vue/language-core": 1.8.5 + checksum: 2dd29100ad6841b25e876ef8895f52dffac3cf1a8d85d3b1243e7246aeb8d7fdbd2ca7a2d3e68105439699b8b1202b64e2194f7756077e14d37b90ab7653c913 languageName: node linkType: hard @@ -10599,12 +10607,12 @@ __metadata: linkType: hard "are-we-there-yet@npm:^4.0.0": - version: 4.0.0 - resolution: "are-we-there-yet@npm:4.0.0" + version: 4.0.1 + resolution: "are-we-there-yet@npm:4.0.1" dependencies: delegates: ^1.0.0 readable-stream: ^4.1.0 - checksum: 760008e32948e9f738c5a288792d187e235fee0f170e042850bc7ff242f2a499f3f2874d6dd43ac06f5d9f5306137bc51bbdd4ae0bb11379c58b01678e0f684d + checksum: ca4c89c08236a7ecbb909c29d0a7b9e02e1df9b0e438a75b317aa6bdcd0392bb20ce5365c4af571923a6c8c835aa85d50bf1f80c60453b794ee3b02dcdfd39bb languageName: node linkType: hard @@ -10839,6 +10847,20 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.1": + version: 1.0.1 + resolution: "arraybuffer.prototype.slice@npm:1.0.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.0 + get-intrinsic: ^1.2.1 + is-array-buffer: ^3.0.2 + is-shared-array-buffer: ^1.0.2 + checksum: db460cb4a96c3c9e27a2a7eed5d0ab1fcfccae9fc8cd1b4883cbb03cd29060b373e0723e78b5c786fdec2025a0ab12eb840c72b2f26016bac906b91bc4e9e4db + languageName: node + linkType: hard + "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -11518,14 +11540,14 @@ __metadata: linkType: hard "bin-links@npm:^4.0.1": - version: 4.0.1 - resolution: "bin-links@npm:4.0.1" + version: 4.0.2 + resolution: "bin-links@npm:4.0.2" dependencies: cmd-shim: ^6.0.0 npm-normalize-package-bin: ^3.0.0 read-cmd-shim: ^4.0.0 write-file-atomic: ^5.0.0 - checksum: f89d84bf421aed326bc57e755623ba3810683529b3fb8329194f3970a1fe07bac88990c64a0dbdd57cb1290d4e0eae5fd3dacc59c60640eeb626ff5b1a249ac2 + checksum: ccc576b2a54508fc02fe41ba5520c48b0e45faed7a29b5700666bc9fcf608a69958ff23bfc8e35907806c0d038e11e18da0cca857072f3be834d85e366f5d7c7 languageName: node linkType: hard @@ -12312,9 +12334,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001514 - resolution: "caniuse-lite@npm:1.0.30001514" - checksum: 61e775d64dc992ba2b912fb74d2816c69fe7e1c3ab94f92bd94afcd44328ad9737e003872f85c1b9a0bd7a231eb6a260962297de2d3094dc106c4ed444cde03e + version: 1.0.30001516 + resolution: "caniuse-lite@npm:1.0.30001516" + checksum: 64ae815c5319c7054146d8c443a34edcfce766e97b9e24cec030d4ce787b114fa949dff047cc59883967fd275b41e3dfdbe87ff53c65f475b4a7e93fa3fdb59d languageName: node linkType: hard @@ -14596,9 +14618,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.431": - version: 1.4.455 - resolution: "electron-to-chromium@npm:1.4.455" - checksum: 4436a41a91530a254d86c49fe41dc2842e84097be459679134a153104886f162d025eb4907619dac19eac1d48ccc96c0d2d86c96fb5818dab29b6237c1f5ffbd + version: 1.4.463 + resolution: "electron-to-chromium@npm:1.4.463" + checksum: d56cbe2d9dc9914584fbe3f443a594aaa8acf808f2a3a6e59703724a9cc87c2b5626b9a4ee9e7f50076b7969f0f46cab4952b93e2458315877bd381059904140 languageName: node linkType: hard @@ -15049,16 +15071,17 @@ __metadata: linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" + version: 1.22.1 + resolution: "es-abstract@npm:1.22.1" dependencies: array-buffer-byte-length: ^1.0.0 + arraybuffer.prototype.slice: ^1.0.1 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 @@ -15078,15 +15101,19 @@ __metadata: object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 + safe-array-concat: ^1.0.0 safe-regex-test: ^1.0.0 string.prototype.trim: ^1.2.7 string.prototype.trimend: ^1.0.6 string.prototype.trimstart: ^1.0.6 + typed-array-buffer: ^1.0.0 + typed-array-byte-length: ^1.0.0 + typed-array-byte-offset: ^1.0.0 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.9 - checksum: 7dc2c882bafbb13609b9c35c29f0717ebf5a4dbde23a73803be821f349aa38d55f324318ccebb6da83c074260622f11d0a7f4cd1e0e19f52cc03b6b5386693fb + which-typed-array: ^1.1.10 + checksum: 36abed2b7efa8dd337d938e50d0b97d070c0ef45b2257eec0ae8c3edc5c7e8f3e2906530afda5c0b8a4f44299391d078237fd5ea454ac4e9adb6f8343bf84980 languageName: node linkType: hard @@ -15215,40 +15242,40 @@ __metadata: linkType: hard "esbuild-wasm@npm:>=0.13.8": - version: 0.18.11 - resolution: "esbuild-wasm@npm:0.18.11" + version: 0.18.14 + resolution: "esbuild-wasm@npm:0.18.14" bin: esbuild: bin/esbuild - checksum: 2f987f9b725b68e454fd6c8a0f98601bb80c366f32995374666c00a1097f3aa40f9bef754e6fb1c3bfe80999816c56473c15ae56f65a58cf66f4a088a09368ed + checksum: 637ddf78568fa763acb066308aab2b45874e4ea25df0ecf30b9db37f3aea2aa1c2d83fb6991242ab1af2a4d1d6351269c537bc361968c2480ebbadfdfb0c1684 languageName: node linkType: hard "esbuild@npm:^0.18.0": - version: 0.18.11 - resolution: "esbuild@npm:0.18.11" - dependencies: - "@esbuild/android-arm": 0.18.11 - "@esbuild/android-arm64": 0.18.11 - "@esbuild/android-x64": 0.18.11 - "@esbuild/darwin-arm64": 0.18.11 - "@esbuild/darwin-x64": 0.18.11 - "@esbuild/freebsd-arm64": 0.18.11 - "@esbuild/freebsd-x64": 0.18.11 - "@esbuild/linux-arm": 0.18.11 - "@esbuild/linux-arm64": 0.18.11 - "@esbuild/linux-ia32": 0.18.11 - "@esbuild/linux-loong64": 0.18.11 - "@esbuild/linux-mips64el": 0.18.11 - "@esbuild/linux-ppc64": 0.18.11 - "@esbuild/linux-riscv64": 0.18.11 - "@esbuild/linux-s390x": 0.18.11 - "@esbuild/linux-x64": 0.18.11 - "@esbuild/netbsd-x64": 0.18.11 - "@esbuild/openbsd-x64": 0.18.11 - "@esbuild/sunos-x64": 0.18.11 - "@esbuild/win32-arm64": 0.18.11 - "@esbuild/win32-ia32": 0.18.11 - "@esbuild/win32-x64": 0.18.11 + version: 0.18.14 + resolution: "esbuild@npm:0.18.14" + dependencies: + "@esbuild/android-arm": 0.18.14 + "@esbuild/android-arm64": 0.18.14 + "@esbuild/android-x64": 0.18.14 + "@esbuild/darwin-arm64": 0.18.14 + "@esbuild/darwin-x64": 0.18.14 + "@esbuild/freebsd-arm64": 0.18.14 + "@esbuild/freebsd-x64": 0.18.14 + "@esbuild/linux-arm": 0.18.14 + "@esbuild/linux-arm64": 0.18.14 + "@esbuild/linux-ia32": 0.18.14 + "@esbuild/linux-loong64": 0.18.14 + "@esbuild/linux-mips64el": 0.18.14 + "@esbuild/linux-ppc64": 0.18.14 + "@esbuild/linux-riscv64": 0.18.14 + "@esbuild/linux-s390x": 0.18.14 + "@esbuild/linux-x64": 0.18.14 + "@esbuild/netbsd-x64": 0.18.14 + "@esbuild/openbsd-x64": 0.18.14 + "@esbuild/sunos-x64": 0.18.14 + "@esbuild/win32-arm64": 0.18.14 + "@esbuild/win32-ia32": 0.18.14 + "@esbuild/win32-x64": 0.18.14 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -15296,7 +15323,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: f038043facb479fc26e14eef203c8ddda2aeffeb18e82af74d0eb3daea0c3d6184d343ab62c86e5b036b3a7ae87e02388f4c60379777bf1e8f3e26156c906802 + checksum: 0a2656670b0e1263e4cf3737f78d304aff1cf76222b2196a12dacc7b520308f8ffb6e5f62ca2d4550bd4d46c215b1d852efe5b7036c667403c0f55e88d89f360 languageName: node linkType: hard @@ -15648,12 +15675,12 @@ __metadata: linkType: hard "eslint-scope@npm:^7.2.0": - version: 7.2.0 - resolution: "eslint-scope@npm:7.2.0" + version: 7.2.1 + resolution: "eslint-scope@npm:7.2.1" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 5b48a3cc2485a3a58ca0bdecfb557c349009308a9b2afb24d070b1c0c254d445ee86d78bfee2c4ed6d1b8944307604a987c92f6d7e611e29de5d06256747a0ff + checksum: 7207497acab2be257979d43403368fb07d3172227d576e04f5906218d76ed7ee99e7116ca71c31b4e00ecc7bb0a00efd98b338c74aa9eec7b7dea7010f9e6da8 languageName: node linkType: hard @@ -15672,8 +15699,8 @@ __metadata: linkType: hard "eslint@npm:^8.28.0": - version: 8.44.0 - resolution: "eslint@npm:8.44.0" + version: 8.45.0 + resolution: "eslint@npm:8.45.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 @@ -15700,7 +15727,6 @@ __metadata: globals: ^13.19.0 graphemer: ^1.4.0 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 @@ -15712,11 +15738,10 @@ __metadata: natural-compare: ^1.4.0 optionator: ^0.9.3 strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: a31ca4571a67012629936d891141a4a5747d5902fb7f4e10119a5acd632e0976b9ba1b761d8c81cff8a9cc3e796df2c56f86c02535fd977de962a98ce585624a + checksum: 2a043b8d3b9a5684e2f66bd446c3dc8522cc7afbb0982d0a5be76ea1f578d0e617598a7b289616a861ab8272b57f6056acb2b264bec6302c9b0921a1cfa66fdb languageName: node linkType: hard @@ -15732,13 +15757,13 @@ __metadata: linkType: hard "espree@npm:^9.6.0": - version: 9.6.0 - resolution: "espree@npm:9.6.0" + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -16604,9 +16629,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.211.1 - resolution: "flow-parser@npm:0.211.1" - checksum: dcfeff46aab22f7c36c59cc787b9d97a4c23b1e9805aa05b0d940eab2c8de61da411cde2f83866adb2b1b941ba896ae02119514abe6e223e2721afce426e723e + version: 0.212.0 + resolution: "flow-parser@npm:0.212.0" + checksum: ea3ea009d3b6d7c368e57676de5ac8d317ec509566e042613be0a183918640a60366f66859c71245a69a8647e19e2ab1fcd5afdcc858320447346175d8817ef6 languageName: node linkType: hard @@ -18470,13 +18495,13 @@ __metadata: linkType: hard "immutable@npm:^4.0.0": - version: 4.3.0 - resolution: "immutable@npm:4.3.0" - checksum: e09d40ceb442972f1cbd2914638d1a201853155b8edfbafc44e7aabcf221890e55e8f03d5b3d884666264bf973e02bbf72f83a12b9754bc2c9e47cf8827dd571 + version: 4.3.1 + resolution: "immutable@npm:4.3.1" + checksum: 7dbe08e9568d83ddcc4eae0116385fd5642c77e4cf03c222f9d667733bfd1870d574f487c85d78ed12f55f2358372bea156732008569531f3a4740f2ce114d0e languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -19277,15 +19302,11 @@ __metadata: linkType: hard "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 + which-typed-array: ^1.1.11 + checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard @@ -20563,11 +20584,11 @@ __metadata: linkType: hard "keyv@npm:^4.0.0": - version: 4.5.2 - resolution: "keyv@npm:4.5.2" + version: 4.5.3 + resolution: "keyv@npm:4.5.3" dependencies: json-buffer: 3.0.1 - checksum: b633bf53a5afa5591f383d326746226e110e59f13c7e1e8d3e3c9580d2c2345c5eefc21cce168cd5be7fa34b9163e391927146fbd2b7ee7aa2f3aa02b7f0a7de + checksum: 7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 languageName: node linkType: hard @@ -22755,9 +22776,9 @@ __metadata: linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.1 - resolution: "minipass@npm:7.0.1" - checksum: 47e4f3567c4d4c20b4a6e04ec99397d606f25038fa5490b60b05b1e104285e7001d7e19c0af2b74fe500823d808eb03fe70652a7ded2753afd748c75d3fd2624 + version: 7.0.2 + resolution: "minipass@npm:7.0.2" + checksum: 5e800acfc9dc75eacac5c4969ab50210463a8afbe8b487de1ae681106e17eb93772513854b6a38462b200b5758af95eeeb481945e050ce76f575ff1150fff4b4 languageName: node linkType: hard @@ -23044,19 +23065,19 @@ __metadata: linkType: hard "next@npm:^13.4.8": - version: 13.4.9 - resolution: "next@npm:13.4.9" - dependencies: - "@next/env": 13.4.9 - "@next/swc-darwin-arm64": 13.4.9 - "@next/swc-darwin-x64": 13.4.9 - "@next/swc-linux-arm64-gnu": 13.4.9 - "@next/swc-linux-arm64-musl": 13.4.9 - "@next/swc-linux-x64-gnu": 13.4.9 - "@next/swc-linux-x64-musl": 13.4.9 - "@next/swc-win32-arm64-msvc": 13.4.9 - "@next/swc-win32-ia32-msvc": 13.4.9 - "@next/swc-win32-x64-msvc": 13.4.9 + version: 13.4.10 + resolution: "next@npm:13.4.10" + dependencies: + "@next/env": 13.4.10 + "@next/swc-darwin-arm64": 13.4.10 + "@next/swc-darwin-x64": 13.4.10 + "@next/swc-linux-arm64-gnu": 13.4.10 + "@next/swc-linux-arm64-musl": 13.4.10 + "@next/swc-linux-x64-gnu": 13.4.10 + "@next/swc-linux-x64-musl": 13.4.10 + "@next/swc-win32-arm64-msvc": 13.4.10 + "@next/swc-win32-ia32-msvc": 13.4.10 + "@next/swc-win32-x64-msvc": 13.4.10 "@swc/helpers": 0.5.1 busboy: 1.6.0 caniuse-lite: ^1.0.30001406 @@ -23098,7 +23119,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 75e05ab1b3ce854031ef788df45ab378dd8c38a7eedf9562b5526b6cdd7552bf0c5e8d81ef8a479f49d665590deff5a42e2c6b61e9e0a676fb72dc48a88292fb + checksum: d560ad073a4d70dc77b0bdccabf1385342d206490a1ff1668c750d1cdbcf0083f7d1e570f66c73f7786abbe69cfbd0b1fbe0f0df878f9ba5596569f36a2c23f5 languageName: node linkType: hard @@ -25235,14 +25256,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.4.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24": - version: 8.4.25 - resolution: "postcss@npm:8.4.25" +"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.4.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.25": + version: 8.4.26 + resolution: "postcss@npm:8.4.26" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: aa2143cb5ed6eef6cb1d38236f158c5fe11bfd1f338c930cf4901f09586874e05fa006e3fd329ca51c61202c7e90d0705379e6310251c9311116e65cb6a08c18 + checksum: 29c603d6b30b2f94bf971bc430600f271da76fa3ae38d4c6b255e957213051b8eeb02829e128ec4e9fa2a7bb710ba7992ebaf1997e3a9ace48caf49b48a10f6b languageName: node linkType: hard @@ -26604,15 +26625,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.2 - resolution: "recast@npm:0.23.2" + version: 0.23.3 + resolution: "recast@npm:0.23.3" dependencies: assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: 48addbe43930bb265b292929571d1e845a56c70913c1c75c234f11c54d20b82c7ee647bcde657fc845f545769faacd1e44e66c5d46567e9fb8bff90e86c19948 + checksum: 2f2d0ce271b187e29f8ea15bf3c319e708376145aaef2797e9a9d3e337e12178bd0d05d607baf601bb607075fbc040ca51f2d58a8bd566d8069c8a9d4b334608 languageName: node linkType: hard @@ -27465,8 +27486,8 @@ __metadata: linkType: hard "rollup@npm:^3.20.1, rollup@npm:^3.21.0, rollup@npm:^3.25.2": - version: 3.26.2 - resolution: "rollup@npm:3.26.2" + version: 3.26.3 + resolution: "rollup@npm:3.26.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -27474,7 +27495,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 + checksum: 41d02540dcb125150d2dc4a136e35776290eef489ed0735814afcdcfd3e0a8944cd30875daa872360e4fe8bf75bb4adf41090913a32e636722f43a5d2caf241e languageName: node linkType: hard @@ -27561,6 +27582,18 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-array-concat@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: 792d41fde9834583980912cb16bee511ce25e1759d3c467fdbbb3fc3245346a2289a6476d821713aa1ae23cc1d613d17e79c80e55adb29577f6a29e6f45e7f46 + languageName: node + linkType: hard + "safe-buffer@npm:5.1.1": version: 5.1.1 resolution: "safe-buffer@npm:5.1.1" @@ -27829,12 +27862,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: - semver: ./bin/semver.js - checksum: 1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 + semver: bin/semver.js + checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -28940,7 +28973,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -29053,8 +29086,8 @@ __metadata: linkType: hard "svelte-check@npm:^3.4.3": - version: 3.4.5 - resolution: "svelte-check@npm:3.4.5" + version: 3.4.6 + resolution: "svelte-check@npm:3.4.6" dependencies: "@jridgewell/trace-mapping": ^0.3.17 chokidar: ^3.4.1 @@ -29062,13 +29095,13 @@ __metadata: import-fresh: ^3.2.1 picocolors: ^1.0.0 sade: ^1.7.4 - svelte-preprocess: ^5.0.3 + svelte-preprocess: ^5.0.4 typescript: ^5.0.3 peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 bin: svelte-check: bin/svelte-check - checksum: 7f6ebacc0a3251a9e6cbcdc5aa47e2198d08117bcf87ddebdfd7e761e942c90b4a1d057d453e1e79296045963dc0e6607aa9ec913f4c34b70d5509b30f000645 + checksum: 7f537831af8f2c47859ca72f4a929d24c58f2946f949f7c9721351be97ff9d0674c57db003e3ad3883fdd85761b7950c5c11513c2a917c91091f155e2d026350 languageName: node linkType: hard @@ -29110,7 +29143,7 @@ __metadata: languageName: node linkType: hard -"svelte-preprocess@npm:^5.0.3": +"svelte-preprocess@npm:^5.0.4": version: 5.0.4 resolution: "svelte-preprocess@npm:5.0.4" dependencies: @@ -29417,8 +29450,8 @@ __metadata: linkType: hard "terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.18.2 - resolution: "terser@npm:5.18.2" + version: 5.19.1 + resolution: "terser@npm:5.19.1" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -29426,7 +29459,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 7a7203eceef379c6381f5b43aaed509d12381c7453baee28b320fcd968523347f1bf4ba297cd3155ec860e9604279a1c9bc7060b35d9c34fae94c80cfa2738c2 + checksum: 32f81b877240140312921c6333671ad31258dd7f1c123847f98fc31ba8f72dda7843d24bf6536501ecdfe2a619f7eb87fc56a68134f6f38d482cbe7b1aafedd3 languageName: node linkType: hard @@ -29863,13 +29896,13 @@ __metadata: linkType: hard "tsconfig-paths-webpack-plugin@npm:^4.0.1": - version: 4.0.1 - resolution: "tsconfig-paths-webpack-plugin@npm:4.0.1" + version: 4.1.0 + resolution: "tsconfig-paths-webpack-plugin@npm:4.1.0" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.7.0 tsconfig-paths: ^4.1.2 - checksum: c5d09b669b07806b5f4e5aafd893824a9e302ddb8e011ad48c4cf65143414b5b317f09d84e2b8a13ad1e5b52d658e7eb1f71af1dc267533eb766b3f144963b30 + checksum: c030e867e70a3f6d1799fdffa209c3a35e1435ad99aac01946b9ebb0fa8208b7b508c1dfe8c8e13d6a2ef70c75b4db062fbfd3c1f3362c69b6c65ffd4a50e226 languageName: node linkType: hard @@ -29975,9 +30008,9 @@ __metadata: linkType: hard "type-fest@npm:^3.11.0": - version: 3.13.0 - resolution: "type-fest@npm:3.13.0" - checksum: 8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 languageName: node linkType: hard @@ -29991,6 +30024,42 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + is-typed-array: ^1.1.10 + checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" @@ -30478,14 +30547,14 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.3.2 - resolution: "unplugin@npm:1.3.2" + version: 1.4.0 + resolution: "unplugin@npm:1.4.0" dependencies: acorn: ^8.9.0 chokidar: ^3.5.3 webpack-sources: ^3.2.3 webpack-virtual-modules: ^0.5.0 - checksum: 8c3152b8329db2f5d671ec37c1222ffebf0f4f68abadc7d9c7f80336e543d477e97f176a7e0862b830bc3c9334ed340bf13da29fd2d332c3113fdd85584c6c4d + checksum: d006fe3ddfcd6578e36f2951f6a21419af2ba8812bc16681876a725a0981b339c920e6afb2cd222d74ca5943e0aa41260cff8fb3528dae12e66419369ae616fc languageName: node linkType: hard @@ -30930,12 +30999,12 @@ __metadata: linkType: hard "vite@npm:^4.0.0, vite@npm:^4.0.4": - version: 4.4.2 - resolution: "vite@npm:4.4.2" + version: 4.4.4 + resolution: "vite@npm:4.4.4" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 - postcss: ^8.4.24 + postcss: ^8.4.25 rollup: ^3.25.2 peerDependencies: "@types/node": ">= 14" @@ -30965,7 +31034,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 8c505f45cc28a67a31a6b944d1a319c63f6cda98e1e38c6da46e604f7981cdb3fb08c022d4887a190dd88f9d0d6155e992f2206f0cacb301103f5eec53182c3b + checksum: 7030c008595eecaf03800292ca6ac626941b7d90b9c18e3ca0de62f8127cb6f7624c2c5e4e5528260fff807996e56e099a6d3bd069a7644eedc13c7df081d818 languageName: node linkType: hard @@ -31046,9 +31115,9 @@ __metadata: linkType: hard "vue-component-type-helpers@npm:latest": - version: 1.8.4 - resolution: "vue-component-type-helpers@npm:1.8.4" - checksum: b18ffe06e4834e6df2ff08ec1ddff19eb730b6b68a40727f937eb80fcb20bf523c1f8f0884ac17e5d72f4612f34da9dbd4aba9659a34f89e70c73e7e5f818de9 + version: 1.8.5 + resolution: "vue-component-type-helpers@npm:1.8.5" + checksum: 37d5c5b319bc5746a0764ca53e5b3570074450651693629db1f6a86db330edcc5f5db9c1e04893701865af81e3d3fe3fd6199b7b8350dc0e01cdc35063e48b93 languageName: node linkType: hard @@ -31199,17 +31268,17 @@ __metadata: linkType: hard "vue-tsc@npm:latest": - version: 1.8.4 - resolution: "vue-tsc@npm:1.8.4" + version: 1.8.5 + resolution: "vue-tsc@npm:1.8.5" dependencies: - "@vue/language-core": 1.8.4 - "@vue/typescript": 1.8.4 + "@vue/language-core": 1.8.5 + "@vue/typescript": 1.8.5 semver: ^7.3.8 peerDependencies: typescript: "*" bin: vue-tsc: bin/vue-tsc.js - checksum: ecaa78564b40fa694fac74f8bd656a9e31139a2e7eef18416b2ca7359a300f004be195ea675d10f4b72e153709101cf976558460815faf17562bc745cbbaaa3f + checksum: 810a382a9a360cacdb63b5439a158c0616ef6a9f2aeedaf7eb2b0cb52978da4fcfa8fd6d7d6b896f925802affe72b44b1a5c49e7ea09677a9f9ce2376efd1635 languageName: node linkType: hard @@ -31541,8 +31610,8 @@ __metadata: linkType: hard "webpack@npm:5, webpack@npm:^5, webpack@npm:^5.65.0": - version: 5.88.1 - resolution: "webpack@npm:5.88.1" + version: 5.88.2 + resolution: "webpack@npm:5.88.2" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -31573,7 +31642,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 03389ad02342becf527c2f603b46bedb27f5352703e6a625daa9a1f80ed84417e135fbcd8a2a79d6aaf37aafb8b8b571cd920bad4b068ca76c629252b3bfc9d7 + checksum: 743acf04cdb7f73ec059761d3921798014139005c88e136ab99fe158f544695eee2caf4be775cc06e7f481d84725d443df2c1c8e00ec24a130e8b8fd514ff7b9 languageName: node linkType: hard @@ -31707,17 +31776,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "which-typed-array@npm:1.1.10" +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: e85918fa7ee060b37e264996f560bbdfe0b1c7029772d0986f3a72ff62b6bd42ba624c4b80218b498aa42472b54f4514e46dbe869691730e0c6c025bcb25fe2b + checksum: 2cf4ce417beb50ae0ec3b1b479ea6d72d3e71986462ebd77344ca6398f77c7c59804eebe88f4126ce79f85edbcaa6c7783f54b0a5bf34f785eab7cbb35c30499 languageName: node linkType: hard diff --git a/scripts/yarn.lock b/scripts/yarn.lock index 2e5ba6c72499..8c45344140b8 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -57,45 +57,45 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/compat-data@npm:7.22.6" - checksum: 09971bda48c46e19d8f1d8c817ebd60ccca2ca30b90324ba6227cfa3765847a9ddd7730481ec81149a2270e2c90c2674e41ebbb73258e48c37922171ffe1e6dc +"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: 1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.0": - version: 7.22.8 - resolution: "@babel/core@npm:7.22.8" + version: 7.22.9 + resolution: "@babel/core@npm:7.22.9" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 - "@babel/helper-compilation-targets": ^7.22.6 - "@babel/helper-module-transforms": ^7.22.5 + "@babel/generator": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-module-transforms": ^7.22.9 "@babel/helpers": ^7.22.6 "@babel/parser": ^7.22.7 "@babel/template": ^7.22.5 "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - checksum: d506ac42eaf2f7c3c190cc91a1413bb9ae5c067e06268fa962cb5fd0e67fc0feb48c7fa51527da378e3cc3a92a13a3420bae877df89207d880c839b6bb73e662 + semver: ^6.3.1 + checksum: 4dffc8844bd8ab5c292e795f3eb0e636246177d28b75ec99f3349a29fe08a9f3e089fe68b857ed160f3312c035c8fb73fdc83b0c781f4629164e548a7d62a8c7 languageName: node linkType: hard -"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.7.2": - version: 7.22.7 - resolution: "@babel/generator@npm:7.22.7" +"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": + version: 7.22.9 + resolution: "@babel/generator@npm:7.22.9" dependencies: "@babel/types": ^7.22.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 7eb106916d782d397d0d4370bb4b23229229481218693a55f3fc0b756d4e9dc39cee41872f1735decb0b34be8dbb98c4488d5f7abbf6e40826d5dcac045b1f12 + checksum: 6ef82c7f6dc8f749c0eb3a04fe35acab032a9221d82984e67cbbada449ca857dd981e08c129f9cf5d2f342ba00efcc683a99e46a470f233b0948edf197e35d26 languageName: node linkType: hard @@ -117,50 +117,50 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-compilation-targets@npm:7.22.6" +"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.22.6 + "@babel/compat-data": ^7.22.9 "@babel/helper-validator-option": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 browserslist: ^4.21.9 lru-cache: ^5.1.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: a37ae986bbfc61bc1adebe05a415ac03e0e8100e4b1ccbfd6ed90ffe201947beae9d7bd2cebe562199e1326797f908153d7b544520786eecf99fccb9db3c0fa9 + checksum: 543b9a45800c1db2f91cc53462ed1799834a1259e498d3d91f45816ae79d19719ef957fa00b0f015d8b768eac09fd1f4f5f42f868c5a10f4389e3883a3f050f1 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.6" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.22.6, @babel/helper-create-class-features-plugin@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-member-expression-to-functions": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.9 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@nicolo-ribaudo/semver-v6": ^6.3.3 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4411b40bad0b4f1927eaaabbedd0b75cb9a7c18d18c3c2139dcf66a59352092632d8e38fe462337206167f11a6d4a70459ecc06a0ae30400dcbe56773fe3617d + checksum: f383152992996b0b936e555aaef35264852908720216c298f677f4b53ba3c4325b700c6a62ff08a8e1377d76ed6538e1bd5232557266eae777cc06b7eb3dd4ad languageName: node linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.6 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.6" + version: 7.22.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 regexpu-core: ^5.3.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 09e195edf82c94d04fe4a53dc2dc38f9bac499625e99da21e2b16b3f3f765971ce903b7621fe868e496117a5084fd513d05b5ca58b57f46acc641af84eedc68d + checksum: 056c9913299ba399194d9aef5f4281a81806f66979c3c9c6da19b2e29bc92abad6d6d6be0cd4b3ed5945abbdf2d4c45362ee26a012f75f16de7d26859dfde11d languageName: node linkType: hard @@ -223,19 +223,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-transforms@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-module-imports": ^7.22.5 "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/helper-validator-identifier": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: a28cf9a91ed657392f75ada08d96a46e8d0df420b7d5d1ac0bb1633d1404807d0cb6e6a3b0666c747d30f378fbb34985d30c6f25e2fcdd69dc58656e47aafe92 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 languageName: node linkType: hard @@ -256,30 +255,28 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.5" + version: 7.22.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.5 - "@babel/types": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: a4ec78db69db61dbc65eb5b07c8ab4e836caf89a3a8b2983c2afcde805c11f5c660e0932739315d9f08d7ac442360822227ce9f9fdd9436993d342de9a043cf5 + checksum: e753f19726846df26a13a304632aff2bc6e437201f27eecc7ba12db04b9175062da307e72512cf4761e659ec82cb71016352acd83fbe5e527f4b881ce1e633e8 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-replace-supers@npm:7.22.5" +"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-replace-supers@npm:7.22.9" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-member-expression-to-functions": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 0590aa037340e069de866f313eca7d7f0031bd95b56e5182bef79c05a97e763a6098fa4ab77fed8e3798e832bb6a3230bea438e669bc4d90112f09e841bff064 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 languageName: node linkType: hard @@ -301,7 +298,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": +"@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: @@ -331,15 +328,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-wrap-function@npm:7.22.5" +"@babel/helper-wrap-function@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-wrap-function@npm:7.22.9" dependencies: "@babel/helper-function-name": ^7.22.5 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 "@babel/types": ^7.22.5 - checksum: 34aa811cc433a3fe2d1bcb7c703ad57c523fd9cad5df8da0651175569cb63dc95b1557305735d922d94a4420e11b2a87d65dbe7f14b49b69e2c7a9c0fdea5647 + checksum: 233c10fe3b38efbf8fcf9bcda8b45b998e963d352beb1966012f4b0be8c221776546a999190c77f0a43524b35c0271691453baf71fe2772fcf7f7938d3621b0d languageName: node linkType: hard @@ -1272,16 +1268,16 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-typescript@npm:7.22.5" + version: 7.22.9 + resolution: "@babel/plugin-transform-typescript@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.22.9 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-typescript": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1ee79ead40f8a299dd643d433a514e2bc970f954d27c3a92d62f2139a19128c31d76d094df7e1c1789a70528f349ba536f271a0b47117c77ca49cd26f8b1c66d + checksum: dc0623bbb21bffdc3c64bf5f50677ba06c6bd9f17edae08fd40f3e639632a716efce91100a46aeaad064e082ee71dfd35941cb605bf27f5d32363912a86ba07f languageName: node linkType: hard @@ -1333,11 +1329,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.22.0": - version: 7.22.7 - resolution: "@babel/preset-env@npm:7.22.7" + version: 7.22.9 + resolution: "@babel/preset-env@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-compilation-targets": ^7.22.6 + "@babel/compat-data": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 @@ -1411,14 +1407,14 @@ __metadata: "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 "@babel/preset-modules": ^0.1.5 "@babel/types": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 babel-plugin-polyfill-corejs2: ^0.4.4 babel-plugin-polyfill-corejs3: ^0.8.2 babel-plugin-polyfill-regenerator: ^0.5.1 core-js-compat: ^3.31.0 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4463c50ccab7aa06a60dde5c1f6e94fdf18e425935b13a1bf168ece9b7bd29dcad015a788581a5c5297bae28a3adcea2472fc74d4e1296aa7195ce0a72a9cac5 + checksum: fad75686dd55638be71657edbd428bb0266a3f34bc6e367bd55fbff911652c971fcea3e5c346288d4e0a15c81b732c4a2549fce97910b602e19170fe1ddf72d0 languageName: node linkType: hard @@ -1495,7 +1491,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.7.0": +"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.7.0": version: 7.22.8 resolution: "@babel/traverse@npm:7.22.8" dependencies: @@ -1578,156 +1574,156 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm64@npm:0.18.11" +"@esbuild/android-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm64@npm:0.18.14" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm@npm:0.18.11" +"@esbuild/android-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-arm@npm:0.18.14" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-x64@npm:0.18.11" +"@esbuild/android-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/android-x64@npm:0.18.14" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-arm64@npm:0.18.11" +"@esbuild/darwin-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-arm64@npm:0.18.14" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-x64@npm:0.18.11" +"@esbuild/darwin-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/darwin-x64@npm:0.18.14" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-arm64@npm:0.18.11" +"@esbuild/freebsd-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-arm64@npm:0.18.14" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-x64@npm:0.18.11" +"@esbuild/freebsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/freebsd-x64@npm:0.18.14" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm64@npm:0.18.11" +"@esbuild/linux-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm64@npm:0.18.14" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm@npm:0.18.11" +"@esbuild/linux-arm@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-arm@npm:0.18.14" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ia32@npm:0.18.11" +"@esbuild/linux-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ia32@npm:0.18.14" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-loong64@npm:0.18.11" +"@esbuild/linux-loong64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-loong64@npm:0.18.14" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-mips64el@npm:0.18.11" +"@esbuild/linux-mips64el@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-mips64el@npm:0.18.14" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ppc64@npm:0.18.11" +"@esbuild/linux-ppc64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-ppc64@npm:0.18.14" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-riscv64@npm:0.18.11" +"@esbuild/linux-riscv64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-riscv64@npm:0.18.14" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-s390x@npm:0.18.11" +"@esbuild/linux-s390x@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-s390x@npm:0.18.14" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-x64@npm:0.18.11" +"@esbuild/linux-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/linux-x64@npm:0.18.14" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/netbsd-x64@npm:0.18.11" +"@esbuild/netbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/netbsd-x64@npm:0.18.14" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/openbsd-x64@npm:0.18.11" +"@esbuild/openbsd-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/openbsd-x64@npm:0.18.14" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/sunos-x64@npm:0.18.11" +"@esbuild/sunos-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/sunos-x64@npm:0.18.14" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-arm64@npm:0.18.11" +"@esbuild/win32-arm64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-arm64@npm:0.18.14" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-ia32@npm:0.18.11" +"@esbuild/win32-ia32@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-ia32@npm:0.18.14" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-x64@npm:0.18.11" +"@esbuild/win32-x64@npm:0.18.14": + version: 0.18.14 + resolution: "@esbuild/win32-x64@npm:0.18.14" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1811,8 +1807,8 @@ __metadata: linkType: hard "@google-cloud/bigquery@npm:^6.2.0": - version: 6.2.0 - resolution: "@google-cloud/bigquery@npm:6.2.0" + version: 6.2.1 + resolution: "@google-cloud/bigquery@npm:6.2.1" dependencies: "@google-cloud/common": ^4.0.0 "@google-cloud/paginator": ^4.0.0 @@ -1823,11 +1819,9 @@ __metadata: duplexify: ^4.0.0 extend: ^3.0.2 is: ^3.3.0 - p-event: ^4.1.0 - readable-stream: ^4.0.0 stream-events: ^1.0.5 uuid: ^9.0.0 - checksum: 52989491997d5089ee8fec14ce1f07eb5445f69c2d8eccb766637e7f95e6b975c05e6d22efa4341728fcd48d10fe3430c8c70ba57eff7d770f9f3777db7b31fa + checksum: a100285bf342ca31c19e744d3edd5f7dc7412afbe8482b138ee800f8281c8ce69e68b7257f2be641c61722a4280b335f08225ab977fbe9a9bc1e6e62c8765a91 languageName: node linkType: hard @@ -3083,90 +3077,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-darwin-arm64@npm:1.3.68" +"@swc/core-darwin-arm64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-arm64@npm:1.3.70" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-darwin-x64@npm:1.3.68" +"@swc/core-darwin-x64@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-darwin-x64@npm:1.3.70" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" +"@swc/core-linux-arm-gnueabihf@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.70" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" +"@swc/core-linux-arm64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" +"@swc/core-linux-arm64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.70" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" +"@swc/core-linux-x64-gnu@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-linux-x64-musl@npm:1.3.68" +"@swc/core-linux-x64-musl@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-linux-x64-musl@npm:1.3.70" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" +"@swc/core-win32-arm64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.70" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" +"@swc/core-win32-ia32-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.70" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.68": - version: 1.3.68 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" +"@swc/core-win32-x64-msvc@npm:1.3.70": + version: 1.3.70 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.70" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.23": - version: 1.3.68 - resolution: "@swc/core@npm:1.3.68" - dependencies: - "@swc/core-darwin-arm64": 1.3.68 - "@swc/core-darwin-x64": 1.3.68 - "@swc/core-linux-arm-gnueabihf": 1.3.68 - "@swc/core-linux-arm64-gnu": 1.3.68 - "@swc/core-linux-arm64-musl": 1.3.68 - "@swc/core-linux-x64-gnu": 1.3.68 - "@swc/core-linux-x64-musl": 1.3.68 - "@swc/core-win32-arm64-msvc": 1.3.68 - "@swc/core-win32-ia32-msvc": 1.3.68 - "@swc/core-win32-x64-msvc": 1.3.68 + version: 1.3.70 + resolution: "@swc/core@npm:1.3.70" + dependencies: + "@swc/core-darwin-arm64": 1.3.70 + "@swc/core-darwin-x64": 1.3.70 + "@swc/core-linux-arm-gnueabihf": 1.3.70 + "@swc/core-linux-arm64-gnu": 1.3.70 + "@swc/core-linux-arm64-musl": 1.3.70 + "@swc/core-linux-x64-gnu": 1.3.70 + "@swc/core-linux-x64-musl": 1.3.70 + "@swc/core-win32-arm64-msvc": 1.3.70 + "@swc/core-win32-ia32-msvc": 1.3.70 + "@swc/core-win32-x64-msvc": 1.3.70 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -3193,7 +3187,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 3788a944fb99934a3280f5d168ca758784d6a6bb554c7282d90db1bb78af9a98420171b5b6abbb4bac9556d0795e4b1332601d7eb528ee6caeffca351b8dabf9 + checksum: 9433f6df1623de33c400d45bec65b1e54ad9e250ff1c24b3adb6d1925c753dc694ea0a0c6d75456fcf28d0c3e01866c3a880f24d23e35b2f62a9a3218ce7c15e languageName: node linkType: hard @@ -3223,8 +3217,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^5.11.9, @testing-library/jest-dom@npm:^5.16.2": - version: 5.16.5 - resolution: "@testing-library/jest-dom@npm:5.16.5" + version: 5.17.0 + resolution: "@testing-library/jest-dom@npm:5.17.0" dependencies: "@adobe/css-tools": ^4.0.1 "@babel/runtime": ^7.9.2 @@ -3235,7 +3229,7 @@ __metadata: dom-accessibility-api: ^0.5.6 lodash: ^4.17.15 redent: ^3.0.0 - checksum: 0925fda78096cca355d164d5358b84b9371c4fb6ba60ce60c2263446ac6d9c6aaca75e2792cdb42699fe78c379924c53db672a3510361b577ebb89a0c6e1c629 + checksum: 24e09c5779ea44644945ec26f2e4e5f48aecfe57d469decf2317a3253a5db28d865c55ad0ea4818d8d1df7572a6486c45daa06fa09644a833a7dd84563881939 languageName: node linkType: hard @@ -3501,11 +3495,11 @@ __metadata: linkType: hard "@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" + version: 2.3.5 + resolution: "@types/hast@npm:2.3.5" dependencies: - "@types/unist": "*" - checksum: 635cfe9a8e91f6b3c15c9929455d0136ac4d75c5b7f596ce21b453cecdfda785e89b10eb2b2d9da9d43e548b1d65ba3e20c741bbaf83823575c9c45001ade4bb + "@types/unist": ^2 + checksum: 3fc5185e7fb5139a4f60f0d4450179c1f88b7e288a054415b273e4a32f0c4cfe825a4cad075824dcdf3984609b47f13141f8900dedb3aeab482ae5a16275e807 languageName: node linkType: hard @@ -3625,11 +3619,11 @@ __metadata: linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.11 - resolution: "@types/mdast@npm:3.0.11" + version: 3.0.12 + resolution: "@types/mdast@npm:3.0.12" dependencies: - "@types/unist": "*" - checksum: 569ec32ac16deb42f2c9e7cdbfb5be0f67d2407036b49ba9cfa07ad0258b044c259922acba170eaed165ebcf5eb168032fbb4b3e35023fe8c581fe46e9bcbad0 + "@types/unist": ^2 + checksum: b5af41e4f19a149eba58cde8ccacc36117640aefe28966637c54c27a8fbcfa3972e88cafd859c7bf39cd5c4e965e4196169001beac4a1980cfee6b08eea896a6 languageName: node linkType: hard @@ -3753,11 +3747,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.0.0": - version: 18.2.6 - resolution: "@types/react-dom@npm:18.2.6" + version: 18.2.7 + resolution: "@types/react-dom@npm:18.2.7" dependencies: "@types/react": "*" - checksum: bd734ca04c52b3c96891a7f9c1139486807dac7a2449fb72e8f8e23018bc6eeeb87a490a105cb39d05ccb7ddf80ed7a441e5bd3e5866c6f6ae8870cd723599e8 + checksum: bd090f5e1b13765fbc191d9eb720dd152d26c20558221963009189c4636ce11e4c1c976e4cde4a74335f997a2be651af27d3727474a8091424101a83a71eebfb languageName: node linkType: hard @@ -3838,11 +3832,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.7 - resolution: "@types/testing-library__jest-dom@npm:5.14.7" + version: 5.14.8 + resolution: "@types/testing-library__jest-dom@npm:5.14.8" dependencies: "@types/jest": "*" - checksum: 793a8505e8551d6567271aa1999e7b41447c9ca6e00ffc4a26e62b6cf732b473c2d91ccf38d000c794a79975089a8c941cb775756c6135ffb00d65457480c5c1 + checksum: 83b9e7470da50d1a594c0afd999f689955e61cb8d9a8a32582ca14f73cc8503428376f98414becc1dc9e712f3de8ee2e49f41ed0117ab6a382c79988682e857e languageName: node linkType: hard @@ -3860,17 +3854,10 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:*": - version: 3.0.0 - resolution: "@types/unist@npm:3.0.0" - checksum: 2910fe0eb4c2d85367bf4b1caaef1e8e5d2b212b9df17ba73c32b146571c0ef0322e67e5db0052c2a3071afff1196c14a0b906bcd1512e659221b911ca8e5991 - languageName: node - linkType: hard - -"@types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/unist@npm:2.0.7" + checksum: ecfb4ad9909ba9390fc3b6923a1d783e99753b0687f5cd99a0e56b6c05e1c72bf4e55cb1b8c0ffda49c6cbead4636de351a130f63d7648c554dc526038733b25 languageName: node linkType: hard @@ -4057,32 +4044,32 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:6.0.0-6-next.71": - version: 6.0.0-6-next.71 - resolution: "@verdaccio/config@npm:6.0.0-6-next.71" +"@verdaccio/config@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/config@npm:6.0.0-6-next.74" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 - "@verdaccio/utils": 6.0.0-6-next.39 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 3.1.2 yup: 0.32.11 - checksum: 7cb21de773342e059d28fc1049bd405c1311d4120f6ca62af3a39c8bca2bce4055ccc0fabadf1b5608cde697c5f140da85c356c64257798b68d4af1cafd4ff0f + checksum: e5f058d33d49a5734df9f8abb5e4bd2971d86956c523c45279957ea41d964a42070708d5293be379fd876cbb01d177248cf3c42c738d19cf7057dbfcde693df1 languageName: node linkType: hard -"@verdaccio/core@npm:6.0.0-6-next.71": - version: 6.0.0-6-next.71 - resolution: "@verdaccio/core@npm:6.0.0-6-next.71" +"@verdaccio/core@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/core@npm:6.0.0-6-next.74" dependencies: ajv: 8.12.0 core-js: 3.30.2 http-errors: 2.0.0 http-status-codes: 2.2.0 process-warning: 1.0.0 - semver: 7.5.0 - checksum: 8357deee9b0744a97aec90b90d8e7443ff191953cdac012005c333b70d72aee51b89dcfb4918c12ee716bc7e8c2a2d9adcd5276e681aa26c50a8d94065e79c0b + semver: 7.5.4 + checksum: fd67973cb6d9d368e492892d81d497d2cf6959f5a0598b4d61b738392f84a9ccafbcad2b9c8ca6dc7240e028178a84a78636d998f1db43a7abe823e3813a827a languageName: node linkType: hard @@ -4120,25 +4107,25 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-7@npm:6.0.0-6-next.16": - version: 6.0.0-6-next.16 - resolution: "@verdaccio/logger-7@npm:6.0.0-6-next.16" +"@verdaccio/logger-7@npm:6.0.0-6-next.19": + version: 6.0.0-6-next.19 + resolution: "@verdaccio/logger-7@npm:6.0.0-6-next.19" dependencies: - "@verdaccio/logger-commons": 6.0.0-6-next.39 + "@verdaccio/logger-commons": 6.0.0-6-next.42 pino: 7.11.0 - checksum: 13cad11e871c28a2903e281cc147cbd9433ed30ecca397041fa8404875463c861f9f494dbb029e8f5570ce5ca6675013e7db99bc4785488fcbecd38b6cc60577 + checksum: f14ce17274ff3b8119f6b0544b07d24708e6c14a874fb7e945bb993652ef01ff96eccb0e9cdd49b5cd2e16c31c2b0d20e66413e429844e56464b3623629c580a languageName: node linkType: hard -"@verdaccio/logger-commons@npm:6.0.0-6-next.39": - version: 6.0.0-6-next.39 - resolution: "@verdaccio/logger-commons@npm:6.0.0-6-next.39" +"@verdaccio/logger-commons@npm:6.0.0-6-next.42": + version: 6.0.0-6-next.42 + resolution: "@verdaccio/logger-commons@npm:6.0.0-6-next.42" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/core": 6.0.0-6-next.74 "@verdaccio/logger-prettify": 6.0.0-6-next.10 colorette: 2.0.20 debug: 4.3.4 - checksum: bf71ba0c5fef3e19ef45ca7a4a6b44d9fcc4873e37445f78cf4c4747aee319664d33c0f056eec2a21228055350e08f0353edfe8743da45148c7b6cd556159945 + checksum: 012f947588755e2973a2f73243f6ecadce078de9a5a69afe3fc1c5d3f2c48fec75ba49935f8906dec72d940101fc96a3e6cfd36c6e09f36e39e50d47ec857524 languageName: node linkType: hard @@ -4155,21 +4142,21 @@ __metadata: languageName: node linkType: hard -"@verdaccio/middleware@npm:6.0.0-6-next.50": - version: 6.0.0-6-next.50 - resolution: "@verdaccio/middleware@npm:6.0.0-6-next.50" +"@verdaccio/middleware@npm:6.0.0-6-next.53": + version: 6.0.0-6-next.53 + resolution: "@verdaccio/middleware@npm:6.0.0-6-next.53" dependencies: - "@verdaccio/config": 6.0.0-6-next.71 - "@verdaccio/core": 6.0.0-6-next.71 - "@verdaccio/url": 11.0.0-6-next.37 - "@verdaccio/utils": 6.0.0-6-next.39 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 express: 4.18.2 express-rate-limit: 5.5.1 lodash: 4.17.21 lru-cache: 7.18.3 mime: 2.6.0 - checksum: 6878fdb62f9e9f843a736be626577725941fbeb981d8fd57ff732edfaae5c7fe76367de59a41d872af455a91c3822a177c8fa9b8dbdc9aecc2d9ba670d3bf62c + checksum: ad93e542bcd6820f3ba9f951c5b919fe9e6aadde9ed914017ac19ab1db729b31aab4a8a6395e7c00d8f0d97bfd0a226f28049e129038feb71e544c392dd8d8ef languageName: node linkType: hard @@ -4198,16 +4185,16 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:11.0.0-6-next.40": - version: 11.0.0-6-next.40 - resolution: "@verdaccio/tarball@npm:11.0.0-6-next.40" +"@verdaccio/tarball@npm:11.0.0-6-next.43": + version: 11.0.0-6-next.43 + resolution: "@verdaccio/tarball@npm:11.0.0-6-next.43" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 - "@verdaccio/url": 11.0.0-6-next.37 - "@verdaccio/utils": 6.0.0-6-next.39 + "@verdaccio/core": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 debug: 4.3.4 lodash: 4.17.21 - checksum: 4075b0d6b59b0a6cf7dad6fea1edc70b5f749dd3471ee368151f127dcfa94f84df7a3374aec5564d0560630488349e3bbfe259a411b7b6de319cd42abd593c6c + checksum: e1b5bd8ba9e1a9a2b6920672f5cede450a432c29d3c837dc59bb99ae3753622a3c180a4f245b1c5991e03094ae38a2257b07098dee5236fceb7ff1f33e9f17bb languageName: node linkType: hard @@ -4218,34 +4205,34 @@ __metadata: languageName: node linkType: hard -"@verdaccio/ui-theme@npm:6.0.0-6-next.71": - version: 6.0.0-6-next.71 - resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.71" - checksum: f1062ed90b4083576111fd7bde117e6c75e24ef2eeef6bf1abe73e472e10ddd1af33ed129624c695eaa46051db2e28ed61de7e35ff1c5eec3dcc85b7544f80a4 +"@verdaccio/ui-theme@npm:6.0.0-6-next.74": + version: 6.0.0-6-next.74 + resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.74" + checksum: 887457df9282304c2650b3c0510f7e04cc63f3488746ebecc261b11fb650f3104c70a060b116185b17ad7282b2800342ec7c867d10bfac66b27ed5c539f0b321 languageName: node linkType: hard -"@verdaccio/url@npm:11.0.0-6-next.37": - version: 11.0.0-6-next.37 - resolution: "@verdaccio/url@npm:11.0.0-6-next.37" +"@verdaccio/url@npm:11.0.0-6-next.40": + version: 11.0.0-6-next.40 + resolution: "@verdaccio/url@npm:11.0.0-6-next.40" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/core": 6.0.0-6-next.74 debug: 4.3.4 lodash: 4.17.21 validator: 13.9.0 - checksum: b68c15c7db4134551b811f8edc5562883d8c981899d3b50fda1ea4774838f6210503170db2c6f365321162c783d2ddbd1ada0d3713c362f5f0e647b1f1a61d4e + checksum: bcce4083797591a4ffc45e4162909912487a2635bd6d541adc326261d220598b57979eeae788b3d31c8347d0583cce99ed538e0ef8b6b9e88bfc6cd45a8f6e73 languageName: node linkType: hard -"@verdaccio/utils@npm:6.0.0-6-next.39": - version: 6.0.0-6-next.39 - resolution: "@verdaccio/utils@npm:6.0.0-6-next.39" +"@verdaccio/utils@npm:6.0.0-6-next.42": + version: 6.0.0-6-next.42 + resolution: "@verdaccio/utils@npm:6.0.0-6-next.42" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/core": 6.0.0-6-next.74 lodash: 4.17.21 minimatch: 3.1.2 - semver: 7.5.0 - checksum: 771c96243c3f7e4f5c61a5a2e1b31bf8869bf8df51539243766d3d7b40c12cc48876ee4fc4c1d1a5b1ca988e10bc29996549e15b6ed0d805e8460eea453ac00f + semver: 7.5.4 + checksum: c3f3dbed86dc470f19909127ad660b1a78f6fb58944ba4e9114d3683444014c723372f320d329e8c6b57962f5287fe43c3201afa0b7e6d3a5dd7f88647796b0c languageName: node linkType: hard @@ -4755,6 +4742,20 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.1": + version: 1.0.1 + resolution: "arraybuffer.prototype.slice@npm:1.0.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + define-properties: ^1.2.0 + get-intrinsic: ^1.2.1 + is-array-buffer: ^3.0.2 + is-shared-array-buffer: ^1.0.2 + checksum: db460cb4a96c3c9e27a2a7eed5d0ab1fcfccae9fc8cd1b4883cbb03cd29060b373e0723e78b5c786fdec2025a0ab12eb840c72b2f26016bac906b91bc4e9e4db + languageName: node + linkType: hard + "arrify@npm:^2.0.0, arrify@npm:^2.0.1": version: 2.0.1 resolution: "arrify@npm:2.0.1" @@ -5199,26 +5200,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.2": - version: 1.20.2 - resolution: "body-parser@npm:1.20.2" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 - languageName: node - linkType: hard - "boxen@npm:^5.1.2": version: 5.1.2 resolution: "boxen@npm:5.1.2" @@ -5464,9 +5445,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001514 - resolution: "caniuse-lite@npm:1.0.30001514" - checksum: 61e775d64dc992ba2b912fb74d2816c69fe7e1c3ab94f92bd94afcd44328ad9737e003872f85c1b9a0bd7a231eb6a260962297de2d3094dc106c4ed444cde03e + version: 1.0.30001516 + resolution: "caniuse-lite@npm:1.0.30001516" + checksum: 64ae815c5319c7054146d8c443a34edcfce766e97b9e24cec030d4ce787b114fa949dff047cc59883967fd275b41e3dfdbe87ff53c65f475b4a7e93fa3fdb59d languageName: node linkType: hard @@ -5658,14 +5639,14 @@ __metadata: languageName: node linkType: hard -"clipanion@npm:3.2.0": - version: 3.2.0 - resolution: "clipanion@npm:3.2.0" +"clipanion@npm:3.2.1": + version: 3.2.1 + resolution: "clipanion@npm:3.2.1" dependencies: typanion: ^3.8.0 peerDependencies: typanion: "*" - checksum: fcc3d44145bc0e162ccf856c27437c0770ba1be863d73296d54c352621accd7675bca33f0a1bed1b1cd7dd22c695abd35e4839da85f12fc1edb77a3f8aa100f4 + checksum: 6c148bd01ae645031aeb6e9a1a16f3ce07eb754cd9981c91edcab82b09e063b805ac41e4f36039d07602334b6dbba036b030d1807c12acd7f90778a696b7ac6e languageName: node linkType: hard @@ -5915,7 +5896,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": +"content-type@npm:~1.0.4": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af @@ -6786,9 +6767,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.431": - version: 1.4.455 - resolution: "electron-to-chromium@npm:1.4.455" - checksum: 4436a41a91530a254d86c49fe41dc2842e84097be459679134a153104886f162d025eb4907619dac19eac1d48ccc96c0d2d86c96fb5818dab29b6237c1f5ffbd + version: 1.4.463 + resolution: "electron-to-chromium@npm:1.4.463" + checksum: d56cbe2d9dc9914584fbe3f443a594aaa8acf808f2a3a6e59703724a9cc87c2b5626b9a4ee9e7f50076b7969f0f46cab4952b93e2458315877bd381059904140 languageName: node linkType: hard @@ -6899,12 +6880,12 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:7.8.1": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" +"envinfo@npm:7.10.0": + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" bin: envinfo: dist/cli.js - checksum: 01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 + checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf languageName: node linkType: hard @@ -6925,16 +6906,17 @@ __metadata: linkType: hard "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" + version: 1.22.1 + resolution: "es-abstract@npm:1.22.1" dependencies: array-buffer-byte-length: ^1.0.0 + arraybuffer.prototype.slice: ^1.0.1 available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.0 + get-intrinsic: ^1.2.1 get-symbol-description: ^1.0.0 globalthis: ^1.0.3 gopd: ^1.0.1 @@ -6954,15 +6936,19 @@ __metadata: object-inspect: ^1.12.3 object-keys: ^1.1.1 object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 + regexp.prototype.flags: ^1.5.0 + safe-array-concat: ^1.0.0 safe-regex-test: ^1.0.0 string.prototype.trim: ^1.2.7 string.prototype.trimend: ^1.0.6 string.prototype.trimstart: ^1.0.6 + typed-array-buffer: ^1.0.0 + typed-array-byte-length: ^1.0.0 + typed-array-byte-offset: ^1.0.0 typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.9 - checksum: 7dc2c882bafbb13609b9c35c29f0717ebf5a4dbde23a73803be821f349aa38d55f324318ccebb6da83c074260622f11d0a7f4cd1e0e19f52cc03b6b5386693fb + which-typed-array: ^1.1.10 + checksum: 36abed2b7efa8dd337d938e50d0b97d070c0ef45b2257eec0ae8c3edc5c7e8f3e2906530afda5c0b8a4f44299391d078237fd5ea454ac4e9adb6f8343bf84980 languageName: node linkType: hard @@ -7040,31 +7026,31 @@ __metadata: linkType: hard "esbuild@npm:^0.18.0": - version: 0.18.11 - resolution: "esbuild@npm:0.18.11" - dependencies: - "@esbuild/android-arm": 0.18.11 - "@esbuild/android-arm64": 0.18.11 - "@esbuild/android-x64": 0.18.11 - "@esbuild/darwin-arm64": 0.18.11 - "@esbuild/darwin-x64": 0.18.11 - "@esbuild/freebsd-arm64": 0.18.11 - "@esbuild/freebsd-x64": 0.18.11 - "@esbuild/linux-arm": 0.18.11 - "@esbuild/linux-arm64": 0.18.11 - "@esbuild/linux-ia32": 0.18.11 - "@esbuild/linux-loong64": 0.18.11 - "@esbuild/linux-mips64el": 0.18.11 - "@esbuild/linux-ppc64": 0.18.11 - "@esbuild/linux-riscv64": 0.18.11 - "@esbuild/linux-s390x": 0.18.11 - "@esbuild/linux-x64": 0.18.11 - "@esbuild/netbsd-x64": 0.18.11 - "@esbuild/openbsd-x64": 0.18.11 - "@esbuild/sunos-x64": 0.18.11 - "@esbuild/win32-arm64": 0.18.11 - "@esbuild/win32-ia32": 0.18.11 - "@esbuild/win32-x64": 0.18.11 + version: 0.18.14 + resolution: "esbuild@npm:0.18.14" + dependencies: + "@esbuild/android-arm": 0.18.14 + "@esbuild/android-arm64": 0.18.14 + "@esbuild/android-x64": 0.18.14 + "@esbuild/darwin-arm64": 0.18.14 + "@esbuild/darwin-x64": 0.18.14 + "@esbuild/freebsd-arm64": 0.18.14 + "@esbuild/freebsd-x64": 0.18.14 + "@esbuild/linux-arm": 0.18.14 + "@esbuild/linux-arm64": 0.18.14 + "@esbuild/linux-ia32": 0.18.14 + "@esbuild/linux-loong64": 0.18.14 + "@esbuild/linux-mips64el": 0.18.14 + "@esbuild/linux-ppc64": 0.18.14 + "@esbuild/linux-riscv64": 0.18.14 + "@esbuild/linux-s390x": 0.18.14 + "@esbuild/linux-x64": 0.18.14 + "@esbuild/netbsd-x64": 0.18.14 + "@esbuild/openbsd-x64": 0.18.14 + "@esbuild/sunos-x64": 0.18.14 + "@esbuild/win32-arm64": 0.18.14 + "@esbuild/win32-ia32": 0.18.14 + "@esbuild/win32-x64": 0.18.14 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -7112,7 +7098,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: f038043facb479fc26e14eef203c8ddda2aeffeb18e82af74d0eb3daea0c3d6184d343ab62c86e5b036b3a7ae87e02388f4c60379777bf1e8f3e26156c906802 + checksum: 0a2656670b0e1263e4cf3737f78d304aff1cf76222b2196a12dacc7b520308f8ffb6e5f62ca2d4550bd4d46c215b1d852efe5b7036c667403c0f55e88d89f360 languageName: node linkType: hard @@ -7438,12 +7424,12 @@ __metadata: linkType: hard "eslint-scope@npm:^7.2.0": - version: 7.2.0 - resolution: "eslint-scope@npm:7.2.0" + version: 7.2.1 + resolution: "eslint-scope@npm:7.2.1" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 5b48a3cc2485a3a58ca0bdecfb557c349009308a9b2afb24d070b1c0c254d445ee86d78bfee2c4ed6d1b8944307604a987c92f6d7e611e29de5d06256747a0ff + checksum: 7207497acab2be257979d43403368fb07d3172227d576e04f5906218d76ed7ee99e7116ca71c31b4e00ecc7bb0a00efd98b338c74aa9eec7b7dea7010f9e6da8 languageName: node linkType: hard @@ -7462,8 +7448,8 @@ __metadata: linkType: hard "eslint@npm:^8.28.0": - version: 8.44.0 - resolution: "eslint@npm:8.44.0" + version: 8.45.0 + resolution: "eslint@npm:8.45.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 @@ -7490,7 +7476,6 @@ __metadata: globals: ^13.19.0 graphemer: ^1.4.0 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 @@ -7502,22 +7487,21 @@ __metadata: natural-compare: ^1.4.0 optionator: ^0.9.3 strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: a31ca4571a67012629936d891141a4a5747d5902fb7f4e10119a5acd632e0976b9ba1b761d8c81cff8a9cc3e796df2c56f86c02535fd977de962a98ce585624a + checksum: 2a043b8d3b9a5684e2f66bd446c3dc8522cc7afbb0982d0a5be76ea1f578d0e617598a7b289616a861ab8272b57f6056acb2b264bec6302c9b0921a1cfa66fdb languageName: node linkType: hard "espree@npm:^9.6.0": - version: 9.6.0 - resolution: "espree@npm:9.6.0" + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -9190,7 +9174,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -9705,15 +9689,11 @@ __metadata: linkType: hard "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 + which-typed-array: ^1.1.11 + checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard @@ -10679,7 +10659,7 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:^9.0.0": +"jsonwebtoken@npm:9.0.1, jsonwebtoken@npm:^9.0.0": version: 9.0.1 resolution: "jsonwebtoken@npm:9.0.1" dependencies: @@ -10776,11 +10756,11 @@ __metadata: linkType: hard "keyv@npm:^4.0.0": - version: 4.5.2 - resolution: "keyv@npm:4.5.2" + version: 4.5.3 + resolution: "keyv@npm:4.5.3" dependencies: json-buffer: 3.0.1 - checksum: b633bf53a5afa5591f383d326746226e110e59f13c7e1e8d3e3c9580d2c2345c5eefc21cce168cd5be7fa34b9163e391927146fbd2b7ee7aa2f3aa02b7f0a7de + checksum: 7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 languageName: node linkType: hard @@ -11908,9 +11888,9 @@ __metadata: linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.1 - resolution: "minipass@npm:7.0.1" - checksum: 47e4f3567c4d4c20b4a6e04ec99397d606f25038fa5490b60b05b1e104285e7001d7e19c0af2b74fe500823d808eb03fe70652a7ded2753afd748c75d3fd2624 + version: 7.0.2 + resolution: "minipass@npm:7.0.2" + checksum: 5e800acfc9dc75eacac5c4969ab50210463a8afbe8b487de1ae681106e17eb93772513854b6a38462b200b5758af95eeeb481945e050ce76f575ff1150fff4b4 languageName: node linkType: hard @@ -12625,15 +12605,6 @@ __metadata: languageName: node linkType: hard -"p-event@npm:^4.1.0": - version: 4.2.0 - resolution: "p-event@npm:4.2.0" - dependencies: - p-timeout: ^3.1.0 - checksum: f1b6a2fb13d47f2a8afc00150da5ece0d28940ce3d8fa562873e091d3337d298e78fee9cb18b768598ff1d11df608b2ae23868309ff6405b864a2451ccd6d25a - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -12730,15 +12701,6 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^3.1.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: ^1.0.0 - checksum: 524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -13218,9 +13180,9 @@ __metadata: linkType: hard "pretty-bytes@npm:^6.1.0": - version: 6.1.0 - resolution: "pretty-bytes@npm:6.1.0" - checksum: 717ed82f8d4bbf038b623062d360bf71fe9107c3f2c43de7d0fd3e9610780306e38059d8d8356bc2c151d2929fada934c051f7d51be2587ebe8f426268b43112 + version: 6.1.1 + resolution: "pretty-bytes@npm:6.1.1" + checksum: c7a660b933355f3b4587ad3f001c266a8dd6afd17db9f89ebc50812354bb142df4b9600396ba5999bdb1f9717300387dc311df91895c5f0f2a1780e22495b5f8 languageName: node linkType: hard @@ -13472,18 +13434,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - "react-dom@npm:16.14.0": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -13643,15 +13593,15 @@ __metadata: linkType: hard "recast@npm:^0.23.1": - version: 0.23.2 - resolution: "recast@npm:0.23.2" + version: 0.23.3 + resolution: "recast@npm:0.23.3" dependencies: assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: 48addbe43930bb265b292929571d1e845a56c70913c1c75c234f11c54d20b82c7ee647bcde657fc845f545769faacd1e44e66c5d46567e9fb8bff90e86c19948 + checksum: 2f2d0ce271b187e29f8ea15bf3c319e708376145aaef2797e9a9d3e337e12178bd0d05d607baf601bb607075fbc040ca51f2d58a8bd566d8069c8a9d4b334608 languageName: node linkType: hard @@ -14536,8 +14486,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.5": - version: 3.26.2 - resolution: "rollup@npm:3.26.2" + version: 3.26.3 + resolution: "rollup@npm:3.26.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -14545,7 +14495,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: c23ee8dcd34fe854afe06e1ec6d6017b200c523795a7c0f876494afd4a279f1d1232b3f274fea9438ac8ec4ebf6ce202f17316f790a94dba8173e213d2b98d19 + checksum: 41d02540dcb125150d2dc4a136e35776290eef489ed0735814afcdcfd3e0a8944cd30875daa872360e4fe8bf75bb4adf41090913a32e636722f43a5d2caf241e languageName: node linkType: hard @@ -14576,6 +14526,18 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-array-concat@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: 792d41fde9834583980912cb16bee511ce25e1759d3c467fdbbb3fc3245346a2289a6476d821713aa1ae23cc1d613d17e79c80e55adb29577f6a29e6f45e7f46 + languageName: node + linkType: hard + "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -14699,45 +14661,23 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.0": - version: 7.5.0 - resolution: "semver@npm:7.5.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 203a556d7189c277b9774a325fd2695187b2822069094e0dbfcc56dfd10a1fd646a94e73812f249802a661f6437b2370ccb8ee330e7b9888b38e53c5a8216222 - languageName: node - linkType: hard - -"semver@npm:7.5.1": - version: 7.5.1 - resolution: "semver@npm:7.5.1" +"semver@npm:7.5.4, semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: ae6aca3cfba9b4d0e0a8fa789c7fa4a8412e39f24ecc19500db291a0a31bb43c151021e4fdbb68a85dcd06c1297f6daeeb09647cea4253eba0ccc0106eb7cd67 - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -15388,7 +15328,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -15423,8 +15363,8 @@ __metadata: linkType: hard "sucrase@npm:^3.20.3": - version: 3.32.0 - resolution: "sucrase@npm:3.32.0" + version: 3.33.0 + resolution: "sucrase@npm:3.33.0" dependencies: "@jridgewell/gen-mapping": ^0.3.2 commander: ^4.0.0 @@ -15436,7 +15376,7 @@ __metadata: bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: c5f2d0c49a2462da3440a14ed62caad655c27919408471141b6866b18be9b29635e8b5e9246cc476a2c3df84e94a8d5498903f0f4e765c50d95d9ff360b95f79 + checksum: 559aac6198403d4a8cd59d07165c18920e31de8f686d59e0bb86c887146c4bf867c9c60bad8e48afadff3df4fd4b4f9c1ec634ffcf0991f29f97b9c57b78314f languageName: node linkType: hard @@ -16057,9 +15997,9 @@ __metadata: linkType: hard "type-fest@npm:^3.11.0": - version: 3.13.0 - resolution: "type-fest@npm:3.13.0" - checksum: 8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 languageName: node linkType: hard @@ -16073,6 +16013,42 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-buffer@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + is-typed-array: ^1.1.10 + checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-offset@npm:1.0.0" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + has-proto: ^1.0.1 + is-typed-array: ^1.1.10 + checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" @@ -16733,16 +16709,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:11.0.0-6-next.34": - version: 11.0.0-6-next.34 - resolution: "verdaccio-audit@npm:11.0.0-6-next.34" +"verdaccio-audit@npm:11.0.0-6-next.37": + version: 11.0.0-6-next.37 + resolution: "verdaccio-audit@npm:11.0.0-6-next.37" dependencies: - "@verdaccio/config": 6.0.0-6-next.71 - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 express: 4.18.2 https-proxy-agent: 5.0.1 node-fetch: cjs - checksum: 4385a069b8e34dad5c84823805b8e4c82c0f84e0fe93ecad046a2cb5272d904d89f9d5d9015b03263351ed81b43b36424fd5fb996afa2dd4c129add6b0b8e73d + checksum: b146b062ad4a55f295443ffb301d287832531173c59ffa294d016c9ba29d3cd256e04feb67c40c6fbdf8a2515d4d56e82d03f30746c3b686ff54c4ba22743393 languageName: node linkType: hard @@ -16755,11 +16731,11 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:11.0.0-6-next.41": - version: 11.0.0-6-next.41 - resolution: "verdaccio-htpasswd@npm:11.0.0-6-next.41" +"verdaccio-htpasswd@npm:11.0.0-6-next.44": + version: 11.0.0-6-next.44 + resolution: "verdaccio-htpasswd@npm:11.0.0-6-next.44" dependencies: - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/core": 6.0.0-6-next.74 "@verdaccio/file-locking": 11.0.0-6-next.7 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -16767,41 +16743,40 @@ __metadata: debug: 4.3.4 http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 - checksum: 25478263efe9fa63dc817efe91a58cdb4b9069690fffe774937a39c294e6c0a85e15f7e80985bc2969f0e6c41028a382db1c03a5976f3adcd71e9a7c125d1615 + checksum: 60bfcef8ec382898850745b179e243c1d8f2ee0c22f16c81d517c21459b09731de6901effdc42cbc1cb7276e9006f5ea0aa167a6623517bde36ea0555f34fdf4 languageName: node linkType: hard "verdaccio@npm:^5.19.1": - version: 5.25.0 - resolution: "verdaccio@npm:5.25.0" + version: 5.26.0 + resolution: "verdaccio@npm:5.26.0" dependencies: - "@verdaccio/config": 6.0.0-6-next.71 - "@verdaccio/core": 6.0.0-6-next.71 + "@verdaccio/config": 6.0.0-6-next.74 + "@verdaccio/core": 6.0.0-6-next.74 "@verdaccio/local-storage": 10.3.3 - "@verdaccio/logger-7": 6.0.0-6-next.16 - "@verdaccio/middleware": 6.0.0-6-next.50 + "@verdaccio/logger-7": 6.0.0-6-next.19 + "@verdaccio/middleware": 6.0.0-6-next.53 "@verdaccio/search": 6.0.0-6-next.2 "@verdaccio/signature": 6.0.0-6-next.2 "@verdaccio/streams": 10.2.1 - "@verdaccio/tarball": 11.0.0-6-next.40 - "@verdaccio/ui-theme": 6.0.0-6-next.71 - "@verdaccio/url": 11.0.0-6-next.37 - "@verdaccio/utils": 6.0.0-6-next.39 + "@verdaccio/tarball": 11.0.0-6-next.43 + "@verdaccio/ui-theme": 6.0.0-6-next.74 + "@verdaccio/url": 11.0.0-6-next.40 + "@verdaccio/utils": 6.0.0-6-next.42 JSONStream: 1.3.5 async: 3.2.4 - body-parser: 1.20.2 - clipanion: 3.2.0 + clipanion: 3.2.1 compression: 1.7.4 cookies: 0.8.0 cors: 2.8.5 debug: ^4.3.4 - envinfo: 7.8.1 + envinfo: 7.10.0 express: 4.18.2 express-rate-limit: 5.5.1 fast-safe-stringify: 2.1.1 handlebars: 4.7.7 js-yaml: 4.1.0 - jsonwebtoken: 9.0.0 + jsonwebtoken: 9.0.1 kleur: 4.1.5 lodash: 4.17.21 lru-cache: 7.18.3 @@ -16810,16 +16785,13 @@ __metadata: mv: 2.1.1 pkginfo: 0.4.1 request: 2.88.2 - semver: 7.5.1 + semver: 7.5.4 validator: 13.9.0 - verdaccio-audit: 11.0.0-6-next.34 - verdaccio-htpasswd: 11.0.0-6-next.41 - dependenciesMeta: - "@verdaccio/types@11.0.0-6-next.24": - unplugged: true + verdaccio-audit: 11.0.0-6-next.37 + verdaccio-htpasswd: 11.0.0-6-next.44 bin: verdaccio: bin/verdaccio - checksum: 9d6a8bfa4865c30e96d6a4840a090cf021fa43bec0318e7b5ded97d05bf75174c7b62061baa295954f3e31e1a90562ec27cff3a550491c99271cf852bd4cff69 + checksum: 8b31d908a05c50b8bda55f72e367ae4202892744fdb49b858bf0c62383b4462200f4fc1dc5d73247ae6aa71d88ddcc35bee9ab3abc13b33459864983b28ab438 languageName: node linkType: hard @@ -17149,17 +17121,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "which-typed-array@npm:1.1.10" +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: e85918fa7ee060b37e264996f560bbdfe0b1c7029772d0986f3a72ff62b6bd42ba624c4b80218b498aa42472b54f4514e46dbe869691730e0c6c025bcb25fe2b + checksum: 2cf4ce417beb50ae0ec3b1b479ea6d72d3e71986462ebd77344ca6398f77c7c59804eebe88f4126ce79f85edbcaa6c7783f54b0a5bf34f785eab7cbb35c30499 languageName: node linkType: hard From 28de51d00cd9e8f5c2d0e79d6f042a2afc3d8d5b Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Tue, 18 Jul 2023 22:38:15 +0200 Subject: [PATCH 134/135] sync versions in testing-storybooks --- test-storybooks/ember-cli/package.json | 28 +++++++++---------- test-storybooks/external-docs/package.json | 20 ++++++------- .../server-kitchen-sink/package.json | 22 +++++++-------- .../standalone-preview/package.json | 12 ++++---- 4 files changed, 41 insertions(+), 41 deletions(-) diff --git a/test-storybooks/ember-cli/package.json b/test-storybooks/ember-cli/package.json index 638a9adb8b48..f2cf2b5d8dfc 100644 --- a/test-storybooks/ember-cli/package.json +++ b/test-storybooks/ember-cli/package.json @@ -1,6 +1,6 @@ { "name": "ember-example", - "version": "7.1.0-alpha.25", + "version": "7.1.0", "private": true, "scripts": { "--build-storybook": "yarn storybook-prebuild && NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook build", @@ -98,19 +98,19 @@ "devDependencies": { "@babel/core": "^7.22.0", "@ember/optional-features": "^2.0.0", - "@storybook/addon-a11y": "7.1.0-alpha.25", - "@storybook/addon-actions": "7.1.0-alpha.25", - "@storybook/addon-backgrounds": "7.1.0-alpha.25", - "@storybook/addon-controls": "7.1.0-alpha.25", - "@storybook/addon-docs": "7.1.0-alpha.25", - "@storybook/addon-highlight": "7.1.0-alpha.25", - "@storybook/addon-links": "7.1.0-alpha.25", - "@storybook/addon-storysource": "7.1.0-alpha.25", - "@storybook/addon-viewport": "7.1.0-alpha.25", - "@storybook/addons": "7.1.0-alpha.25", - "@storybook/ember": "7.1.0-alpha.25", + "@storybook/addon-a11y": "7.1.0", + "@storybook/addon-actions": "7.1.0", + "@storybook/addon-backgrounds": "7.1.0", + "@storybook/addon-controls": "7.1.0", + "@storybook/addon-docs": "7.1.0", + "@storybook/addon-highlight": "7.1.0", + "@storybook/addon-links": "7.1.0", + "@storybook/addon-storysource": "7.1.0", + "@storybook/addon-viewport": "7.1.0", + "@storybook/addons": "7.1.0", + "@storybook/ember": "7.1.0", "@storybook/ember-cli-storybook": "^0.2.1", - "@storybook/source-loader": "7.1.0-alpha.25", + "@storybook/source-loader": "7.1.0", "babel-loader": "^8.2.5", "broccoli-asset-rev": "^3.0.0", "browserify-zlib": "^0.2.0", @@ -130,7 +130,7 @@ "loader.js": "^4.7.0", "os-browserify": "^0.3.0", "shx": "^0.3.2", - "storybook": "7.1.0-alpha.25", + "storybook": "7.1.0", "stream-browserify": "^3.0.0", "vm-browserify": "^1.1.2", "webpack": "5", diff --git a/test-storybooks/external-docs/package.json b/test-storybooks/external-docs/package.json index 85041e47180d..24827e917ec1 100644 --- a/test-storybooks/external-docs/package.json +++ b/test-storybooks/external-docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/external-docs", - "version": "7.1.0-alpha.25", + "version": "7.1.0", "private": true, "scripts": { "build": "next build", @@ -93,14 +93,14 @@ "storybook": "portal:../../code/lib/cli-storybook" }, "dependencies": { - "@storybook/addon-docs": "7.1.0-alpha.25", - "@storybook/addon-essentials": "7.1.0-alpha.25", - "@storybook/blocks": "7.1.0-alpha.25", - "@storybook/components": "7.1.0-alpha.25", - "@storybook/preview-web": "7.1.0-alpha.25", - "@storybook/react": "7.1.0-alpha.25", - "@storybook/react-webpack5": "7.1.0-alpha.25", - "@storybook/theming": "7.1.0-alpha.25", + "@storybook/addon-docs": "7.1.0", + "@storybook/addon-essentials": "7.1.0", + "@storybook/blocks": "7.1.0", + "@storybook/components": "7.1.0", + "@storybook/preview-web": "7.1.0", + "@storybook/react": "7.1.0", + "@storybook/react-webpack5": "7.1.0", + "@storybook/theming": "7.1.0", "formik": "^2.2.9", "next": "^12.1.0", "nextra": "^1.1.0", @@ -119,7 +119,7 @@ "cross-env": "^7.0.3", "eslint": "8.7.0", "eslint-config-next": "12.0.8", - "storybook": "7.1.0-alpha.25", + "storybook": "7.1.0", "typescript": "~4.9.3", "webpack": "5" } diff --git a/test-storybooks/server-kitchen-sink/package.json b/test-storybooks/server-kitchen-sink/package.json index d35e02a6c764..8be6d8aabb7d 100644 --- a/test-storybooks/server-kitchen-sink/package.json +++ b/test-storybooks/server-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "server-kitchen-sink", - "version": "7.1.0-alpha.25", + "version": "7.1.0", "private": true, "description": "", "keywords": [], @@ -95,15 +95,15 @@ "storybook": "portal:../../code/lib/cli-storybook" }, "devDependencies": { - "@storybook/addon-a11y": "7.1.0-alpha.25", - "@storybook/addon-actions": "7.1.0-alpha.25", - "@storybook/addon-backgrounds": "7.1.0-alpha.25", - "@storybook/addon-controls": "7.1.0-alpha.25", - "@storybook/addon-highlight": "7.1.0-alpha.25", - "@storybook/addon-links": "7.1.0-alpha.25", - "@storybook/node-logger": "7.1.0-alpha.25", - "@storybook/server": "7.1.0-alpha.25", - "@storybook/server-webpack5": "7.1.0-alpha.25", + "@storybook/addon-a11y": "7.1.0", + "@storybook/addon-actions": "7.1.0", + "@storybook/addon-backgrounds": "7.1.0", + "@storybook/addon-controls": "7.1.0", + "@storybook/addon-highlight": "7.1.0", + "@storybook/addon-links": "7.1.0", + "@storybook/node-logger": "7.1.0", + "@storybook/server": "7.1.0", + "@storybook/server-webpack5": "7.1.0", "concurrently": "^5.3.0", "cors": "^2.8.5", "express": "^4.17.3", @@ -111,6 +111,6 @@ "nodemon": "^2.0.7", "pug": "^3.0.0", "safe-identifier": "^0.4.1", - "storybook": "7.1.0-alpha.25" + "storybook": "7.1.0" } } \ No newline at end of file diff --git a/test-storybooks/standalone-preview/package.json b/test-storybooks/standalone-preview/package.json index 255f7d0e8d42..6ae10e4c4a9c 100644 --- a/test-storybooks/standalone-preview/package.json +++ b/test-storybooks/standalone-preview/package.json @@ -1,6 +1,6 @@ { "name": "standalone-preview", - "version": "7.1.0-alpha.25", + "version": "7.1.0", "private": true, "scripts": { "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true NODE_OPTIONS=\"--preserve-symlinks --preserve-symlinks-main\" storybook dev -p 9011 -c ../official-storybook --preview-url=http://localhost:1337/external-iframe.html", @@ -88,14 +88,14 @@ "storybook": "portal:../../code/lib/cli-storybook" }, "devDependencies": { - "@storybook/addon-docs": "7.1.0-alpha.25", - "@storybook/cli": "7.1.0-alpha.25", - "@storybook/react": "7.1.0-alpha.25", - "@storybook/react-webpack5": "7.1.0-alpha.25", + "@storybook/addon-docs": "7.1.0", + "@storybook/cli": "7.1.0", + "@storybook/react": "7.1.0", + "@storybook/react-webpack5": "7.1.0", "cross-env": "^7.0.3", "parcel": "2.0.1", "react": "16.14.0", "react-dom": "16.14.0", - "storybook": "7.1.0-alpha.25" + "storybook": "7.1.0" } } \ No newline at end of file From ac0f1de7ef1bf82ff0178e8ea0e19d03c5c131c6 Mon Sep 17 00:00:00 2001 From: Norbert de Langen <ndelangen@me.com> Date: Wed, 19 Jul 2023 15:54:54 +0200 Subject: [PATCH 135/135] Update MIGRATION.md Co-authored-by: Yann Braga <yannbf@gmail.com> --- MIGRATION.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 3680c3d10e6a..b6f6b6196679 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -304,11 +304,11 @@ ## From version 7.0.0 to 7.2.0 -#### Addon API are more type-strict +#### Addon API is more type-strict -When registering an addon using `@storybook/manager-api`, the addon API is now more type-strict. This means if you use typescript to compile your addon before publishing it might start giving you errors. +When registering an addon using `@storybook/manager-api`, the addon API is now more type-strict. This means if you use TypeScript to compile your addon before publishing, it might start giving you errors. -The `type` property is now required field, and the `id` property should not be set anymore. +The `type` property is now a required field, and the `id` property should not be set anymore. Here's a correct example: ```tsx