From b20d393f2e090a7f98a0361df9dd2439c7fc53a6 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Wed, 12 Oct 2022 15:29:38 +1100 Subject: [PATCH 1/8] Add react compat stories to renderer --- .../preact/template/stories/React.js | 50 +++++++++++++++++++ .../template/stories/react-compat.stories.js | 15 ++++++ 2 files changed, 65 insertions(+) create mode 100644 code/renderers/preact/template/stories/React.js create mode 100644 code/renderers/preact/template/stories/react-compat.stories.js diff --git a/code/renderers/preact/template/stories/React.js b/code/renderers/preact/template/stories/React.js new file mode 100644 index 000000000000..95a07db5aade --- /dev/null +++ b/code/renderers/preact/template/stories/React.js @@ -0,0 +1,50 @@ +import React from 'react'; +// eslint-disable-next-line import/no-extraneous-dependencies +import PropTypes from 'prop-types'; + +export const ReactFunctionalComponent = ({ label }) => { + const [clicks, setValue] = React.useState(0); + return ( +
setValue(clicks + 1)} + style={{ cursor: 'pointer' }} + onKeyDown={() => undefined} + role="button" + > +
{label}
+
Clicked {clicks} times.
+
+ ); +}; + +ReactFunctionalComponent.propTypes = { + label: PropTypes.string.isRequired, +}; + +export class ReactClassComponent extends React.Component { + state = { + clicks: 0, + }; + + render() { + const { label } = this.props; + const { clicks } = this.state; + return ( +
this.setState({ clicks: clicks + 1 })} + onKeyDown={() => undefined} + style={{ cursor: 'pointer' }} + role="button" + > +
{label}
+
Clicked {clicks} times.
+
+ ); + } +} + +ReactClassComponent.propTypes = { + label: PropTypes.string.isRequired, +}; diff --git a/code/renderers/preact/template/stories/react-compat.stories.js b/code/renderers/preact/template/stories/react-compat.stories.js new file mode 100644 index 000000000000..b7895c1e8d0f --- /dev/null +++ b/code/renderers/preact/template/stories/react-compat.stories.js @@ -0,0 +1,15 @@ +/* eslint-disable react/react-in-jsx-scope */ +import { ReactFunctionalComponent, ReactClassComponent } from './React'; + +export default { + component: ReactFunctionalComponent, +}; + +export const ReactComponentDemo = () => ( +
+

React component demo

+ +
+ +
+); From 84f5d1d307bcc47892ab56a66db7fb9cf7ff17f8 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Wed, 12 Oct 2022 15:30:02 +1100 Subject: [PATCH 2/8] Remove `preact-kitchen-sink` example --- .circleci/config.yml | 2 +- .../examples/preact-kitchen-sink/.eslintrc.js | 12 -- code/examples/preact-kitchen-sink/.gitignore | 15 -- .../preact-kitchen-sink/.storybook/main.ts | 45 ------ code/examples/preact-kitchen-sink/README.md | 3 - .../preact-kitchen-sink/babel.config.json | 11 -- .../preact-kitchen-sink/jest.config.js | 12 -- .../examples/preact-kitchen-sink/package.json | 51 ------- .../preact-enzyme-mapping.js | 3 - .../preact-kitchen-sink/preactshots.test.js | 9 -- .../preact-kitchen-sink/public/favicon.ico | Bin 15086 -> 0 bytes .../preact-kitchen-sink/public/logo.png | Bin 51484 -> 0 bytes .../preact-kitchen-sink/src/Button.js | 19 --- .../examples/preact-kitchen-sink/src/React.js | 49 ------- .../preact-kitchen-sink/src/Welcome.js | 132 ------------------ .../addon-actions.stories.storyshot | 39 ------ .../addon-backgrounds.stories.storyshot | 9 -- .../addon-links.stories.storyshot | 10 -- .../__snapshots__/button.stories.storyshot | 24 ---- .../react-compat.stories.storyshot | 32 ----- .../__snapshots__/welcome.stories.storyshot | 69 --------- .../src/stories/button.stories.js | 20 --- .../src/stories/react-compat.stories.js | 14 -- .../test-component.stories.storyshot | 3 - .../src/stories/test-cases/no-pragma.tsx | 3 - .../test-cases/test-component.stories.tsx | 7 - .../src/stories/welcome.stories.js | 12 -- .../preact-kitchen-sink/tsconfig.json | 8 -- code/jest.config.js | 8 +- .../preact/template/stories/.gitkeep | 0 code/workspace.json | 5 - scripts/.babelrc.js | 25 ---- 32 files changed, 2 insertions(+), 649 deletions(-) delete mode 100644 code/examples/preact-kitchen-sink/.eslintrc.js delete mode 100644 code/examples/preact-kitchen-sink/.gitignore delete mode 100644 code/examples/preact-kitchen-sink/.storybook/main.ts delete mode 100644 code/examples/preact-kitchen-sink/README.md delete mode 100644 code/examples/preact-kitchen-sink/babel.config.json delete mode 100644 code/examples/preact-kitchen-sink/jest.config.js delete mode 100644 code/examples/preact-kitchen-sink/package.json delete mode 100644 code/examples/preact-kitchen-sink/preact-enzyme-mapping.js delete mode 100644 code/examples/preact-kitchen-sink/preactshots.test.js delete mode 100644 code/examples/preact-kitchen-sink/public/favicon.ico delete mode 100644 code/examples/preact-kitchen-sink/public/logo.png delete mode 100644 code/examples/preact-kitchen-sink/src/Button.js delete mode 100644 code/examples/preact-kitchen-sink/src/React.js delete mode 100644 code/examples/preact-kitchen-sink/src/Welcome.js delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-backgrounds.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-links.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/button.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/react-compat.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/__snapshots__/welcome.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/button.stories.js delete mode 100644 code/examples/preact-kitchen-sink/src/stories/react-compat.stories.js delete mode 100644 code/examples/preact-kitchen-sink/src/stories/test-cases/__snapshots__/test-component.stories.storyshot delete mode 100644 code/examples/preact-kitchen-sink/src/stories/test-cases/no-pragma.tsx delete mode 100644 code/examples/preact-kitchen-sink/src/stories/test-cases/test-component.stories.tsx delete mode 100644 code/examples/preact-kitchen-sink/src/stories/welcome.stories.js delete mode 100644 code/examples/preact-kitchen-sink/tsconfig.json delete mode 100644 code/renderers/preact/template/stories/.gitkeep diff --git a/.circleci/config.yml b/.circleci/config.yml index 0ba0d0d3d638..beb9115280aa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -125,7 +125,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 6 + parallelism: 5 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' diff --git a/code/examples/preact-kitchen-sink/.eslintrc.js b/code/examples/preact-kitchen-sink/.eslintrc.js deleted file mode 100644 index b1a66a613a18..000000000000 --- a/code/examples/preact-kitchen-sink/.eslintrc.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - settings: { - react: { - pragma: 'h', - pragmaFrag: 'Fragment', - }, - }, - rules: { - 'react/react-in-jsx-scope': 'off', - 'react/prop-types': 'off', - }, -}; diff --git a/code/examples/preact-kitchen-sink/.gitignore b/code/examples/preact-kitchen-sink/.gitignore deleted file mode 100644 index 6c96c5cff124..000000000000 --- a/code/examples/preact-kitchen-sink/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -node_modules - -# testing -coverage - -# production -build - -# misc -.DS_Store -.env -npm-debug.log diff --git a/code/examples/preact-kitchen-sink/.storybook/main.ts b/code/examples/preact-kitchen-sink/.storybook/main.ts deleted file mode 100644 index 7c6fc81a44b8..000000000000 --- a/code/examples/preact-kitchen-sink/.storybook/main.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { StorybookConfig } from '@storybook/preact-webpack5'; - -const path = require('path'); - -const mainConfig: StorybookConfig = { - stories: ['../src/stories/**/*.stories.@(ts|tsx|js|jsx|mdx)'], - logLevel: 'debug', - addons: [ - '@storybook/addon-storysource', - '@storybook/addon-actions', - '@storybook/addon-docs', - '@storybook/addon-links', - '@storybook/addon-viewport', - '@storybook/addon-backgrounds', - '@storybook/addon-a11y', - '@storybook/addon-highlight', - ], - webpackFinal: (config) => { - const rules = config.module?.rules || []; - rules.push({ - test: [/\.stories\.(js|ts|jsx|tsx)$/], - use: [require.resolve('@storybook/source-loader')], - include: [path.resolve(__dirname, '../src')], - enforce: 'pre', - }); - - // eslint-disable-next-line no-param-reassign - config.module = config.module || {}; - // eslint-disable-next-line no-param-reassign - config.module.rules = rules; - return config; - }, - core: { - channelOptions: { allowFunction: false, maxDepth: 10 }, - disableTelemetry: true, - }, - staticDirs: ['../public'], - features: { - buildStoriesJson: true, - breakingChangesV7: true, - }, - framework: '@storybook/preact-webpack5', -}; - -module.exports = mainConfig; diff --git a/code/examples/preact-kitchen-sink/README.md b/code/examples/preact-kitchen-sink/README.md deleted file mode 100644 index f2c53ad4493f..000000000000 --- a/code/examples/preact-kitchen-sink/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Storybook Demo - -This is a demo app to test `preact` integration with Storybook. Run `yarn install` to sync Storybook module with the source code and run `yarn storybook` to start the Storybook. diff --git a/code/examples/preact-kitchen-sink/babel.config.json b/code/examples/preact-kitchen-sink/babel.config.json deleted file mode 100644 index fe34d5aaf2f7..000000000000 --- a/code/examples/preact-kitchen-sink/babel.config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "plugins": [ - [ - "@babel/plugin-transform-react-jsx", - { - "pragma": "h", - "pragmaFrag": "Fragment" - } - ] - ] -} diff --git a/code/examples/preact-kitchen-sink/jest.config.js b/code/examples/preact-kitchen-sink/jest.config.js deleted file mode 100644 index bc70974353ed..000000000000 --- a/code/examples/preact-kitchen-sink/jest.config.js +++ /dev/null @@ -1,12 +0,0 @@ -const config = require('../../jest.config'); - -module.exports = { - ...config, - roots: [__dirname], - moduleNameMapper: { - '^react$': 'preact/compat', - '^react-dom/test-utils$': 'preact/test-utils', - '^react-dom$': 'preact/compat', - '^enzyme-adapter-react-16$': '/examples/preact-kitchen-sink/preact-enzyme-mapping.js', - }, -}; diff --git a/code/examples/preact-kitchen-sink/package.json b/code/examples/preact-kitchen-sink/package.json deleted file mode 100644 index 73efa3f83968..000000000000 --- a/code/examples/preact-kitchen-sink/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "preact-example", - "version": "7.0.0-alpha.35", - "private": true, - "scripts": { - "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", - "build-storybook": "storybook build", - "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot", - "storybook": "storybook dev -p 9009 --no-manager-cache" - }, - "dependencies": { - "global": "^4.4.0", - "preact": "^10.5.13" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@storybook/addon-a11y": "7.0.0-alpha.35", - "@storybook/addon-actions": "7.0.0-alpha.35", - "@storybook/addon-backgrounds": "7.0.0-alpha.35", - "@storybook/addon-highlight": "7.0.0-alpha.35", - "@storybook/addon-links": "7.0.0-alpha.35", - "@storybook/addon-storyshots": "7.0.0-alpha.35", - "@storybook/addon-storysource": "7.0.0-alpha.35", - "@storybook/addon-viewport": "7.0.0-alpha.35", - "@storybook/addons": "7.0.0-alpha.35", - "@storybook/preact": "7.0.0-alpha.35", - "@storybook/preact-webpack5": "7.0.0-alpha.35", - "@storybook/source-loader": "7.0.0-alpha.35", - "@types/prop-types": "^15.7.3", - "@types/react": "^17", - "@types/react-dom": "^17", - "babel-loader": "^8.2.5", - "cross-env": "^7.0.3", - "enzyme-adapter-preact": "^0.2.0", - "file-loader": "^6.2.0", - "preact-render-to-string": "^5.1.19", - "prop-types": "^15.7.2", - "raw-loader": "^4.0.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "storybook": "7.0.0-alpha.35", - "svg-url-loader": "^7.1.1", - "webpack": "5", - "webpack-dev-server": "^4.8.1" - }, - "storybook": { - "chromatic": { - "projectToken": "ls0ikhnwqt" - } - } -} diff --git a/code/examples/preact-kitchen-sink/preact-enzyme-mapping.js b/code/examples/preact-kitchen-sink/preact-enzyme-mapping.js deleted file mode 100644 index 7cefe9bd0e12..000000000000 --- a/code/examples/preact-kitchen-sink/preact-enzyme-mapping.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Adapter } from 'enzyme-adapter-preact'; - -export default Adapter; diff --git a/code/examples/preact-kitchen-sink/preactshots.test.js b/code/examples/preact-kitchen-sink/preactshots.test.js deleted file mode 100644 index d44a573ddaf6..000000000000 --- a/code/examples/preact-kitchen-sink/preactshots.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import path from 'path'; -import initStoryshots, { multiSnapshotWithOptions } from '@storybook/addon-storyshots'; - -initStoryshots({ - framework: 'preact', - configPath: path.join(__dirname, '.storybook'), - integrityOptions: { cwd: path.join(__dirname, 'src', 'stories') }, - test: multiSnapshotWithOptions(), -}); diff --git a/code/examples/preact-kitchen-sink/public/favicon.ico b/code/examples/preact-kitchen-sink/public/favicon.ico deleted file mode 100644 index f6da4336801ba3fba9cae9f222cfd4ad73785ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 BbC>`C diff --git a/code/examples/preact-kitchen-sink/public/logo.png b/code/examples/preact-kitchen-sink/public/logo.png deleted file mode 100644 index 52d1623ea1055fc5a445f52e092a137eac991752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51484 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 z 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 diff --git a/code/examples/preact-kitchen-sink/src/Button.js b/code/examples/preact-kitchen-sink/src/Button.js deleted file mode 100644 index 793ffe0f4102..000000000000 --- a/code/examples/preact-kitchen-sink/src/Button.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * The button component will render a clickable button - */ - -const Button = ({ children, href, ...props }) => { - const TagName = href ? 'a' : 'button'; - - return ( - - {children} - - ); -}; - -Button.defaultProps = { - href: undefined, -}; - -export default Button; diff --git a/code/examples/preact-kitchen-sink/src/React.js b/code/examples/preact-kitchen-sink/src/React.js deleted file mode 100644 index 33fa9ddc15c5..000000000000 --- a/code/examples/preact-kitchen-sink/src/React.js +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -export const ReactFunctionalComponent = ({ label }) => { - const [clicks, setValue] = React.useState(0); - return ( -
setValue(clicks + 1)} - style={{ cursor: 'pointer' }} - onKeyDown={() => undefined} - role="button" - > -
{label}
-
Clicked {clicks} times.
-
- ); -}; - -ReactFunctionalComponent.propTypes = { - label: PropTypes.string.isRequired, -}; - -export class ReactClassComponent extends React.Component { - state = { - clicks: 0, - }; - - render() { - const { label } = this.props; - const { clicks } = this.state; - return ( -
this.setState({ clicks: clicks + 1 })} - onKeyDown={() => undefined} - style={{ cursor: 'pointer' }} - role="button" - > -
{label}
-
Clicked {clicks} times.
-
- ); - } -} - -ReactClassComponent.propTypes = { - label: PropTypes.string.isRequired, -}; diff --git a/code/examples/preact-kitchen-sink/src/Welcome.js b/code/examples/preact-kitchen-sink/src/Welcome.js deleted file mode 100644 index 3c496a371f3f..000000000000 --- a/code/examples/preact-kitchen-sink/src/Welcome.js +++ /dev/null @@ -1,132 +0,0 @@ -const Main = (props) => ( -
-); - -const Title = ({ children, ...props }) =>

{children}

; - -const Note = (props) => ( -

-); - -const InlineCode = (props) => ( - -); - -const Link = ({ children, href, ...props }) => ( - - {children} - -); - -const NavButton = ({ children, ...props }) => ( - -); - -const Welcome = ({ showApp }) => ( -

- Welcome to storybook for Preact - Preact logo -

This is a UI component dev environment for your Preact app.

-

- We've added some basic stories inside the src/stories directory. -
A story is a single state of one or more UI components. You can have as many stories as - you want. -
- (Basically a story is like a visual test case.) -

-

- See these sample stories for a component called  - Button. -

-

- Just like that, you can add your own components as stories. -
- You can also edit those components and see changes right away. -
- (Try editing the Button stories located at  - src/stories/1-Button.stories.js - .) -

-

- Usually we create stories with smaller UI components in the app. -
- Have a look at the  - - Writing Stories - -  section in our documentation. -

- - NOTE: -
- Have a look at the .storybook/webpack.config.js to add webpack - loaders and plugins you are using in this project. -
-
-); - -export { Welcome as default }; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot deleted file mode 100644 index e34bf6d9f176..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot +++ /dev/null @@ -1,39 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Addons/Actions Action and method 1`] = ` -"" -`; - -exports[`Storyshots Addons/Actions Action only 1`] = ` -"" -`; - -exports[`Storyshots Addons/Actions Multiple actions 1`] = ` -"" -`; - -exports[`Storyshots Addons/Actions Multiple actions, object 1`] = ` -"" -`; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-backgrounds.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-backgrounds.stories.storyshot deleted file mode 100644 index 1772b691a29d..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-backgrounds.stories.storyshot +++ /dev/null @@ -1,9 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Addons/Backgrounds Example 1 1`] = ` -"" -`; - -exports[`Storyshots Addons/Backgrounds Example 2 1`] = `""`; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-links.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-links.stories.storyshot deleted file mode 100644 index a57fa1a3a993..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/addon-links.stories.storyshot +++ /dev/null @@ -1,10 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Addons/Links Go to welcome 1`] = ` -"" -`; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/button.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/button.stories.storyshot deleted file mode 100644 index c9a2c36d7580..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/button.stories.storyshot +++ /dev/null @@ -1,24 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Button with some emoji 1`] = ` -"" -`; - -exports[`Storyshots Button with text 1`] = ` -"" -`; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/react-compat.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/react-compat.stories.storyshot deleted file mode 100644 index fd3cd9ea3c97..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/react-compat.stories.storyshot +++ /dev/null @@ -1,32 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots React Compatibility React Component Demo 1`] = ` -"
-

React component demo

-
-
- This is a React functional component rendered by Preact -
-
Clicked 0 times.
-
-
-
-
- This is a React class component rendered by Preact -
-
Clicked 0 times.
-
-
" -`; diff --git a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/welcome.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/__snapshots__/welcome.stories.storyshot deleted file mode 100644 index 80e80479664b..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/__snapshots__/welcome.stories.storyshot +++ /dev/null @@ -1,69 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Welcome to Storybook 1`] = ` -"
-

Welcome to storybook for Preact

- \\"Preact -

- This is a UI component dev environment for your Preact app. -

-

- We've added some basic stories inside the - src/stories - directory. -
- A story is a single state of one or more UI components. You can have as many stories as you want. -
- (Basically a story is like a visual test case.) -

-

- See these sample - - for a component called  - Button - . -

-

- Just like that, you can add your own components as stories. -
- You can also edit those components and see changes right away. -
- (Try editing the - Button - stories located at  - src/stories/1-Button.stories.js - .) -

-

- Usually we create stories with smaller UI components in the app. -
- Have a look at the  - - Writing Stories - -  section in our documentation. -

-

- NOTE: -
- Have a look at the - .storybook/webpack.config.js - to add webpack loaders and plugins you are using in this project. -

-
" -`; diff --git a/code/examples/preact-kitchen-sink/src/stories/button.stories.js b/code/examples/preact-kitchen-sink/src/stories/button.stories.js deleted file mode 100644 index 12d6b51b4136..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/button.stories.js +++ /dev/null @@ -1,20 +0,0 @@ -import Button from '../Button'; - -export default { - title: 'Button', - component: Button, -}; - -export const WithText = () => ; - -WithText.storyName = 'with text'; - -export const WithSomeEmoji = () => ( - -); - -WithSomeEmoji.storyName = 'with some emoji'; diff --git a/code/examples/preact-kitchen-sink/src/stories/react-compat.stories.js b/code/examples/preact-kitchen-sink/src/stories/react-compat.stories.js deleted file mode 100644 index 39c9eff3d940..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/react-compat.stories.js +++ /dev/null @@ -1,14 +0,0 @@ -import { ReactFunctionalComponent, ReactClassComponent } from '../React'; - -export default { - title: 'React Compatibility', -}; - -export const ReactComponentDemo = () => ( -
-

React component demo

- -
- -
-); diff --git a/code/examples/preact-kitchen-sink/src/stories/test-cases/__snapshots__/test-component.stories.storyshot b/code/examples/preact-kitchen-sink/src/stories/test-cases/__snapshots__/test-component.stories.storyshot deleted file mode 100644 index becb2ae0400c..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/test-cases/__snapshots__/test-component.stories.storyshot +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Storyshots Pragma test Default 1`] = `"
This component should render OK.
"`; diff --git a/code/examples/preact-kitchen-sink/src/stories/test-cases/no-pragma.tsx b/code/examples/preact-kitchen-sink/src/stories/test-cases/no-pragma.tsx deleted file mode 100644 index 0f944ae9beb1..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/test-cases/no-pragma.tsx +++ /dev/null @@ -1,3 +0,0 @@ -const TestComponent = () =>
This component should render OK.
; - -export default TestComponent; diff --git a/code/examples/preact-kitchen-sink/src/stories/test-cases/test-component.stories.tsx b/code/examples/preact-kitchen-sink/src/stories/test-cases/test-component.stories.tsx deleted file mode 100644 index 0f7971b5d376..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/test-cases/test-component.stories.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import TestComponent from './no-pragma'; - -export default { - title: 'Pragma test', -}; - -export const Default = () => ; diff --git a/code/examples/preact-kitchen-sink/src/stories/welcome.stories.js b/code/examples/preact-kitchen-sink/src/stories/welcome.stories.js deleted file mode 100644 index bf681a0c28d9..000000000000 --- a/code/examples/preact-kitchen-sink/src/stories/welcome.stories.js +++ /dev/null @@ -1,12 +0,0 @@ -import Welcome from '../Welcome'; - -export default { - title: 'Welcome', - parameters: { - component: Welcome, - }, -}; - -export const ToStorybook = () => {}} />; - -ToStorybook.storyName = 'to Storybook'; diff --git a/code/examples/preact-kitchen-sink/tsconfig.json b/code/examples/preact-kitchen-sink/tsconfig.json deleted file mode 100644 index 221db17dabab..000000000000 --- a/code/examples/preact-kitchen-sink/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment", - "jsxImportSource": "preact" - } -} diff --git a/code/jest.config.js b/code/jest.config.js index 8368c65c87dd..43d3beae8a17 100644 --- a/code/jest.config.js +++ b/code/jest.config.js @@ -30,17 +30,11 @@ module.exports = { // '/examples/svelte-kitchen-sink', // '/examples/vue-kitchen-sink', // '/examples/angular-cli', - // '/examples/preact-kitchen-sink', // This is explicitly commented out because having vue 2 & 3 in the // dependency graph makes it impossible to run storyshots on both examples // '/examples/vue-3-cli', ], - roots: [ - '/addons', - '/frameworks', - '/lib', - '/renderers', - ], + roots: ['/addons', '/frameworks', '/lib', '/renderers'], transform: { '^.+\\.stories\\.[jt]sx?$': '@storybook/addon-storyshots/injectFileName', '^.+\\.[jt]sx?$': '/../scripts/utils/jest-transform-js.js', diff --git a/code/renderers/preact/template/stories/.gitkeep b/code/renderers/preact/template/stories/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/code/workspace.json b/code/workspace.json index 23d0bc9244fa..78937c542415 100644 --- a/code/workspace.json +++ b/code/workspace.json @@ -421,11 +421,6 @@ "type": "library", "implicitDependencies": [] }, - "preact-example": { - "root": "examples/preact-kitchen-sink", - "type": "library", - "implicitDependencies": [] - }, "sb": { "root": "lib/cli-sb", "type": "library", diff --git a/scripts/.babelrc.js b/scripts/.babelrc.js index 239b0bd63340..857d466bea67 100644 --- a/scripts/.babelrc.js +++ b/scripts/.babelrc.js @@ -74,31 +74,6 @@ module.exports = { test: withTests, }, }, - { - test: './examples/preact-kitchen-sink', - presets: [ - [ - '@babel/preset-env', - { - shippedProposals: true, - useBuiltIns: 'usage', - corejs: '3', - targets, - modules, - }, - ], - ['@babel/preset-typescript'], - [ - '@babel/preset-react', - { - importSource: 'preact', - runtime: 'automatic', - }, - ], - '@babel/preset-flow', - ], - env: { test: withTests }, - }, { test: './lib', presets: [ From 7697cf841116f0fda2381530f3dac14f3d64f2fb Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Wed, 12 Oct 2022 15:31:03 +1100 Subject: [PATCH 3/8] Enable preact templates --- .circleci/config.yml | 12 ++++++------ code/lib/cli/src/repro-templates.ts | 6 ++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index beb9115280aa..af99ce6b9b86 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -305,7 +305,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 16 + parallelism: 18 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -324,7 +324,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 15 + parallelism: 16 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -339,7 +339,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 16 + parallelism: 18 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -358,7 +358,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 16 + parallelism: 18 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -373,7 +373,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 16 + parallelism: 18 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -388,7 +388,7 @@ jobs: executor: class: medium+ name: sb_playwright - parallelism: 16 + parallelism: 18 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' diff --git a/code/lib/cli/src/repro-templates.ts b/code/lib/cli/src/repro-templates.ts index ddbf1e558a96..4afb2a552769 100644 --- a/code/lib/cli/src/repro-templates.ts +++ b/code/lib/cli/src/repro-templates.ts @@ -198,8 +198,7 @@ const preactWebpackTemplates = { 'preact-webpack5/default-js': { name: 'Preact CLI (Default JS)', script: 'npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install', - // cadence: ['ci', 'daily', 'weekly'], - cadence: [] as string[], + cadence: ['ci', 'daily', 'weekly'], expected: { framework: '@storybook/preact-webpack5', renderer: '@storybook/preact', @@ -209,8 +208,7 @@ const preactWebpackTemplates = { 'preact-webpack5/default-ts': { name: 'Preact CLI (Default TS)', script: 'npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install', - // cadence: ['ci', 'daily', 'weekly'], - cadence: [] as string[], + cadence: ['ci', 'daily', 'weekly'], expected: { framework: '@storybook/preact-webpack5', renderer: '@storybook/preact', From 4e8168cde927ae9d7a6940afd7c72dd788944bf9 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Thu, 13 Oct 2022 17:19:25 +1100 Subject: [PATCH 4/8] Update `yarn.lock` --- code/yarn.lock | 317 +++---------------------------------------------- 1 file changed, 18 insertions(+), 299 deletions(-) diff --git a/code/yarn.lock b/code/yarn.lock index a60edc3aeb9c..29b12386e785 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -3758,13 +3758,6 @@ __metadata: languageName: node linkType: hard -"@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.4 - resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b - languageName: node - linkType: hard - "@lerna/add@npm:3.21.0": version: 3.21.0 resolution: "@lerna/add@npm:3.21.0" @@ -7982,7 +7975,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preact-webpack5@7.0.0-alpha.37, @storybook/preact-webpack5@workspace:*, @storybook/preact-webpack5@workspace:frameworks/preact-webpack5": +"@storybook/preact-webpack5@workspace:*, @storybook/preact-webpack5@workspace:frameworks/preact-webpack5": version: 0.0.0-use.local resolution: "@storybook/preact-webpack5@workspace:frameworks/preact-webpack5" dependencies: @@ -10024,7 +10017,7 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15, @types/prop-types@npm:^15.7.3": +"@types/prop-types@npm:*, @types/prop-types@npm:^15": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" checksum: 648aae41423821c61c83823ae36116c8d0f68258f8b609bdbc257752dcd616438d6343d554262aa9a7edaee5a19aca2e028a74fa2d0f40fffaf2816bc7056857 @@ -10102,15 +10095,6 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^17": - version: 17.0.17 - resolution: "@types/react-dom@npm:17.0.17" - dependencies: - "@types/react": ^17 - checksum: 1e330f6e1c0794562a8d3459357b5b401b6f23185991bdaf9e5025cad7ccace502662b071db765b07b0d79f313be1a7584c5ef775b1062d76585b6b9aec0693c - languageName: node - linkType: hard - "@types/react-syntax-highlighter@npm:11.0.5": version: 11.0.5 resolution: "@types/react-syntax-highlighter@npm:11.0.5" @@ -10131,7 +10115,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^17, @types/react@npm:^17.0.39": +"@types/react@npm:^17.0.39": version: 17.0.50 resolution: "@types/react@npm:17.0.50" dependencies: @@ -10216,7 +10200,7 @@ __metadata: languageName: node linkType: hard -"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.13.8": +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.8": version: 1.15.0 resolution: "@types/serve-static@npm:1.15.0" dependencies: @@ -10441,7 +10425,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8, @types/ws@npm:^8.2.2, @types/ws@npm:^8.5.1": +"@types/ws@npm:^8, @types/ws@npm:^8.2.2": version: 8.5.3 resolution: "@types/ws@npm:8.5.3" dependencies: @@ -12069,7 +12053,7 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:^2.1.0, array-flatten@npm:^2.1.2": +"array-flatten@npm:^2.1.0": version: 2.1.2 resolution: "array-flatten@npm:2.1.2" checksum: bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f @@ -13280,18 +13264,6 @@ __metadata: languageName: node linkType: hard -"bonjour-service@npm:^1.0.11": - version: 1.0.14 - resolution: "bonjour-service@npm:1.0.14" - dependencies: - array-flatten: ^2.1.2 - dns-equal: ^1.0.0 - fast-deep-equal: ^3.1.3 - multicast-dns: ^7.2.5 - checksum: 1c90164ac8c54eec34d1c19c4167c94d0fec037a781a445dd85bd506ef2afde29e39e57452db767687f2d0921f60ab2576209e706571ed3df3c6ab964a3309b7 - languageName: node - linkType: hard - "bonjour@npm:^3.5.0": version: 3.5.0 resolution: "bonjour@npm:3.5.0" @@ -15535,13 +15507,6 @@ __metadata: languageName: node linkType: hard -"connect-history-api-fallback@npm:^2.0.0": - version: 2.0.0 - resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: 90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 - languageName: node - linkType: hard - "connect@npm:^3.6.6, connect@npm:^3.7.0": version: 3.7.0 resolution: "connect@npm:3.7.0" @@ -17083,15 +17048,6 @@ __metadata: languageName: node linkType: hard -"dns-packet@npm:^5.2.2": - version: 5.4.0 - resolution: "dns-packet@npm:5.4.0" - dependencies: - "@leichtgewicht/ip-codec": ^2.0.1 - checksum: bd5ecfd7d8b9cacd4d0029819699051c4e231d8fa6ed96e1573f7fee4b9147c3406207a260adbd7fb5c6d08a7db7641836467f450fa88e2ec5075f482e39ed77 - languageName: node - linkType: hard - "dns-txt@npm:^2.0.2": version: 2.0.2 resolution: "dns-txt@npm:2.0.2" @@ -18282,24 +18238,6 @@ __metadata: languageName: node linkType: hard -"enzyme-adapter-preact@npm:^0.2.0": - version: 0.2.0 - resolution: "enzyme-adapter-preact@npm:0.2.0" - dependencies: - enzyme-adapter-utils: ^1.3.0 - object.values: ^1.0.4 - preact-compat: ^3.18.0 - preact-render-to-string: ^3.7.0 - proptypes: ^1.1.0 - react: ^16.2.0 - react-test-renderer: ^16.2.0 - peerDependencies: - enzyme: ^3.3.0 - preact: ^8.2.7 - checksum: 8f88c74331b47cafa1befc28cdb2168e9196740ff35ec1e9ed2abd66b031e311c1dd1d086747f57fb90b283498b2f84304d90ad0b63622f9147c988c4882b7ea - languageName: node - linkType: hard - "enzyme-adapter-react-16@npm:^1.15.5": version: 1.15.6 resolution: "enzyme-adapter-react-16@npm:1.15.6" @@ -18321,7 +18259,7 @@ __metadata: languageName: node linkType: hard -"enzyme-adapter-utils@npm:^1.14.0, enzyme-adapter-utils@npm:^1.3.0": +"enzyme-adapter-utils@npm:^1.14.0": version: 1.14.0 resolution: "enzyme-adapter-utils@npm:1.14.0" dependencies: @@ -19831,7 +19769,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.10.7, express@npm:^4.13.1, express@npm:^4.17.1, express@npm:^4.17.3": +"express@npm:^4.10.7, express@npm:^4.13.1, express@npm:^4.17.1": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -20281,18 +20219,6 @@ __metadata: languageName: node linkType: hard -"file-loader@npm:^6.2.0, file-loader@npm:~6.2.0": - version: 6.2.0 - resolution: "file-loader@npm:6.2.0" - dependencies: - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: e176a57c2037ab0f78e5755dbf293a6b7f0f8392350a120bd03cc2ce2525bea017458ba28fea14ca535ff1848055e86d1a3a216bdb2561ef33395b27260a1dd3 - languageName: node - linkType: hard - "file-system-cache@npm:^2.0.0": version: 2.0.0 resolution: "file-system-cache@npm:2.0.0" @@ -22839,7 +22765,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3": +"http-proxy-middleware@npm:^2.0.0": version: 2.0.6 resolution: "http-proxy-middleware@npm:2.0.6" dependencies: @@ -23183,15 +23109,6 @@ __metadata: languageName: node linkType: hard -"immutability-helper@npm:^2.7.1": - version: 2.9.1 - resolution: "immutability-helper@npm:2.9.1" - dependencies: - invariant: ^2.2.0 - checksum: 0e087f39f1e3dce387094471e55c6e6bf2ab109eaf07d8549b4ca4b01f60712331a5c45fc89344c9e273fa27742cd9b6443d9adee19edaefc1e546dba33087e1 - languageName: node - linkType: hard - "immutable@npm:^4.0.0": version: 4.1.0 resolution: "immutable@npm:4.1.0" @@ -23483,7 +23400,7 @@ __metadata: languageName: node linkType: hard -"invariant@npm:^2.2.0, invariant@npm:^2.2.4": +"invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" dependencies: @@ -27592,7 +27509,7 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^2.0.0, loader-utils@npm:~2.0.0": +"loader-utils@npm:^2.0.0": version: 2.0.2 resolution: "loader-utils@npm:2.0.2" dependencies: @@ -30086,18 +30003,6 @@ __metadata: languageName: node linkType: hard -"multicast-dns@npm:^7.2.5": - version: 7.2.5 - resolution: "multicast-dns@npm:7.2.5" - dependencies: - dns-packet: ^5.2.2 - thunky: ^1.0.2 - bin: - multicast-dns: cli.js - checksum: 5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 - languageName: node - linkType: hard - "multimatch@npm:^3.0.0": version: 3.0.0 resolution: "multimatch@npm:3.0.0" @@ -31238,7 +31143,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.0.4, object.values@npm:^1.1.1, object.values@npm:^1.1.2, object.values@npm:^1.1.5": +"object.values@npm:^1.1.1, object.values@npm:^1.1.2, object.values@npm:^1.1.5": version: 1.1.5 resolution: "object.values@npm:1.1.5" dependencies: @@ -33045,80 +32950,6 @@ __metadata: languageName: node linkType: hard -"preact-compat@npm:^3.18.0": - version: 3.19.0 - resolution: "preact-compat@npm:3.19.0" - dependencies: - immutability-helper: ^2.7.1 - preact-context: ^1.1.3 - preact-render-to-string: ^3.8.2 - preact-transition-group: ^1.1.1 - prop-types: ^15.6.2 - standalone-react-addons-pure-render-mixin: ^0.1.1 - peerDependencies: - preact: <10 - checksum: fea8b9c08596e52cf782feeec3a9b805e7cee8499eb992b245cda722a6efa8f22cfe2d640db0349c9f13e3790b437df538bd06276cc4908d2540114620283e27 - languageName: node - linkType: hard - -"preact-context@npm:^1.1.3": - version: 1.1.4 - resolution: "preact-context@npm:1.1.4" - peerDependencies: - preact: ^8.2.7 - checksum: a3eb81da4a2a2751d4ba3e3c888a20f2978e0a57e3fa1ff438ec717e09ad742f10dd8a7cf3ba5145a0b680bd000097502f5493f41df0e1926962d003cab54007 - languageName: node - linkType: hard - -"preact-example@workspace:examples/preact-kitchen-sink": - version: 0.0.0-use.local - resolution: "preact-example@workspace:examples/preact-kitchen-sink" - dependencies: - "@babel/core": ^7.12.10 - "@storybook/addon-a11y": 7.0.0-alpha.37 - "@storybook/addon-actions": 7.0.0-alpha.37 - "@storybook/addon-backgrounds": 7.0.0-alpha.37 - "@storybook/addon-highlight": 7.0.0-alpha.37 - "@storybook/addon-links": 7.0.0-alpha.37 - "@storybook/addon-storyshots": 7.0.0-alpha.37 - "@storybook/addon-storysource": 7.0.0-alpha.37 - "@storybook/addon-viewport": 7.0.0-alpha.37 - "@storybook/addons": 7.0.0-alpha.37 - "@storybook/preact": 7.0.0-alpha.37 - "@storybook/preact-webpack5": 7.0.0-alpha.37 - "@storybook/source-loader": 7.0.0-alpha.37 - "@types/prop-types": ^15.7.3 - "@types/react": ^17 - "@types/react-dom": ^17 - babel-loader: ^8.2.5 - cross-env: ^7.0.3 - enzyme-adapter-preact: ^0.2.0 - file-loader: ^6.2.0 - global: ^4.4.0 - preact: ^10.5.13 - preact-render-to-string: ^5.1.19 - prop-types: ^15.7.2 - raw-loader: ^4.0.2 - react: ^17.0.2 - react-dom: ^17.0.2 - storybook: 7.0.0-alpha.37 - svg-url-loader: ^7.1.1 - webpack: 5 - webpack-dev-server: ^4.8.1 - languageName: unknown - linkType: soft - -"preact-render-to-string@npm:^3.7.0, preact-render-to-string@npm:^3.8.2": - version: 3.8.2 - resolution: "preact-render-to-string@npm:3.8.2" - dependencies: - pretty-format: ^3.5.1 - peerDependencies: - preact: "*" - checksum: e139fb6d0bbfa4131f5ab07ab8175fd1633fb4dc3d68a045499b38bf30428131e7a7ebdf86778f9a2981b6f315083eb2d698302e74351ac1a48cebc3baa0bb35 - languageName: node - linkType: hard - "preact-render-to-string@npm:^5.1.19": version: 5.2.5 resolution: "preact-render-to-string@npm:5.2.5" @@ -33130,15 +32961,6 @@ __metadata: languageName: node linkType: hard -"preact-transition-group@npm:^1.1.1": - version: 1.1.1 - resolution: "preact-transition-group@npm:1.1.1" - peerDependencies: - preact: "*" - checksum: dc40e114508cff3e7952d4681eb717d20514cd87349da7455b46ed897d71c4e1b209eeadc1f2788cf851d25c3e9d781456c177a16549ebfb4c76fae3222668c6 - languageName: node - linkType: hard - "preact@npm:^10.5.13": version: 10.11.1 resolution: "preact@npm:10.11.1" @@ -33257,7 +33079,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^3.5.1, pretty-format@npm:^3.8.0": +"pretty-format@npm:^3.8.0": version: 3.8.0 resolution: "pretty-format@npm:3.8.0" checksum: 69f12937bfb7b2a537a7463b9f875a16322401f1e44d7702d643faa0d21991126c24c093217ef6da403b54c15942a834174fa1c016b72e2cb9edaae6bb3729b6 @@ -33466,13 +33288,6 @@ __metadata: languageName: node linkType: hard -"proptypes@npm:^1.1.0": - version: 1.1.0 - resolution: "proptypes@npm:1.1.0" - checksum: 8944fb0763433438cbe5c34fac004edabb33be3cf4454079cbef10f752f614c4082c935d916b7347d4541323323e17e159ac2f804ef783cdf19870298f64eca6 - languageName: node - linkType: hard - "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" @@ -34154,19 +33969,6 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^17.0.2": - version: 17.0.2 - resolution: "react-dom@npm:17.0.2" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - scheduler: ^0.20.2 - peerDependencies: - react: 17.0.2 - checksum: 51abbcb72450fe527ebf978c3bc989ba266630faaa53f47a2fae5392369729e8de62b2e4683598cbe651ea7873cd34ec7d5127e2f50bf4bfe6bd0c3ad9bddcb0 - languageName: node - linkType: hard - "react-draggable@npm:^4.4.3": version: 4.4.5 resolution: "react-draggable@npm:4.4.5" @@ -34385,7 +34187,7 @@ __metadata: languageName: node linkType: hard -"react-test-renderer@npm:^16, react-test-renderer@npm:^16.0.0-0, react-test-renderer@npm:^16.2.0": +"react-test-renderer@npm:^16, react-test-renderer@npm:^16.0.0-0": version: 16.14.0 resolution: "react-test-renderer@npm:16.14.0" dependencies: @@ -34412,7 +34214,7 @@ __metadata: languageName: node linkType: hard -"react@npm:16.14.0, react@npm:^16.14.0, react@npm:^16.2.0, react@npm:^16.8.0": +"react@npm:16.14.0, react@npm:^16.14.0, react@npm:^16.8.0": version: 16.14.0 resolution: "react@npm:16.14.0" dependencies: @@ -34423,16 +34225,6 @@ __metadata: languageName: node linkType: hard -"react@npm:^17.0.2": - version: 17.0.2 - resolution: "react@npm:17.0.2" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: 07ae8959acf1596f0550685102fd6097d461a54a4fd46a50f88a0cd7daaa97fdd6415de1dcb4bfe0da6aa43221a6746ce380410fa848acc60f8ac41f6649c148 - languageName: node - linkType: hard - "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" @@ -36346,16 +36138,6 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.20.2": - version: 0.20.2 - resolution: "scheduler@npm:0.20.2" - dependencies: - loose-envify: ^1.1.0 - object-assign: ^4.1.1 - checksum: b0982e4b0f34f4ffa4f2f486161c0fd9ce9b88680b045dccbf250eb1aa4fd27413570645455187a83535e2370f5c667a251045547765408492bd883cbe95fcdb - languageName: node - linkType: hard - "schema-utils@npm:^2.6.5": version: 2.7.1 resolution: "schema-utils@npm:2.7.1" @@ -36453,7 +36235,7 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^2.0.0, selfsigned@npm:^2.1.1": +"selfsigned@npm:^2.0.0": version: 2.1.1 resolution: "selfsigned@npm:2.1.1" dependencies: @@ -37029,7 +36811,7 @@ __metadata: languageName: node linkType: hard -"sockjs@npm:^0.3.21, sockjs@npm:^0.3.24": +"sockjs@npm:^0.3.21": version: 0.3.24 resolution: "sockjs@npm:0.3.24" dependencies: @@ -37613,13 +37395,6 @@ __metadata: languageName: unknown linkType: soft -"standalone-react-addons-pure-render-mixin@npm:^0.1.1": - version: 0.1.1 - resolution: "standalone-react-addons-pure-render-mixin@npm:0.1.1" - checksum: 1c6ca4c69c621e05adaa53e1f0424829ad37e1bb7eea4e32656c9c31e225b302613f9ca5d6c141f47caa38cba7d043e7b6ee30a07e51e8762598afcfa490d818 - languageName: node - linkType: hard - "state-toggle@npm:^1.0.0": version: 1.0.3 resolution: "state-toggle@npm:1.0.3" @@ -38481,18 +38256,6 @@ __metadata: languageName: node linkType: hard -"svg-url-loader@npm:^7.1.1": - version: 7.1.1 - resolution: "svg-url-loader@npm:7.1.1" - dependencies: - file-loader: ~6.2.0 - loader-utils: ~2.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: c69c1b378576a5833d3850212be2a531b2ca0ff31cc5df031af55414f8e1f229c099f29c78e9f7c08f3174155e34f8accf612361666d0bf612c94e59fccb2599 - languageName: node - linkType: hard - "svgo@npm:^2.4.0": version: 2.8.0 resolution: "svgo@npm:2.8.0" @@ -41602,50 +41365,6 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:^4.8.1": - version: 4.11.1 - resolution: "webpack-dev-server@npm:4.11.1" - dependencies: - "@types/bonjour": ^3.5.9 - "@types/connect-history-api-fallback": ^1.3.5 - "@types/express": ^4.17.13 - "@types/serve-index": ^1.9.1 - "@types/serve-static": ^1.13.10 - "@types/sockjs": ^0.3.33 - "@types/ws": ^8.5.1 - ansi-html-community: ^0.0.8 - bonjour-service: ^1.0.11 - chokidar: ^3.5.3 - colorette: ^2.0.10 - compression: ^1.7.4 - connect-history-api-fallback: ^2.0.0 - default-gateway: ^6.0.3 - express: ^4.17.3 - graceful-fs: ^4.2.6 - html-entities: ^2.3.2 - http-proxy-middleware: ^2.0.3 - ipaddr.js: ^2.0.1 - open: ^8.0.9 - p-retry: ^4.5.0 - rimraf: ^3.0.2 - schema-utils: ^4.0.0 - selfsigned: ^2.1.1 - serve-index: ^1.9.1 - sockjs: ^0.3.24 - spdy: ^4.0.2 - webpack-dev-middleware: ^5.3.1 - ws: ^8.4.2 - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 31cf2d80efd3e7a3843e4382f4e10a2c9446574d67b190eda6f4cbd761cc3a5e5be5f3c3ad4d67963b03b3c90485dd80527408c5f0dacb2de6710ecb73ed9e7d - languageName: node - linkType: hard - "webpack-hot-middleware@npm:^2.25.1": version: 2.25.2 resolution: "webpack-hot-middleware@npm:2.25.2" @@ -42197,7 +41916,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.1.0, ws@npm:^8.2.3, ws@npm:^8.4.2": +"ws@npm:^8.1.0, ws@npm:^8.2.3": version: 8.9.0 resolution: "ws@npm:8.9.0" peerDependencies: From 4b2c4ad2dbd330f763dd624b0983003060d0f30e Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Fri, 14 Oct 2022 16:02:53 +1100 Subject: [PATCH 5/8] Preact doesn't do source snippets --- code/e2e-tests/addon-docs.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 19277c7c69fd..f2e943abb04f 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -16,7 +16,7 @@ test.describe('addon-docs', () => { test('should provide source snippet', async ({ page }) => { // templateName is e.g. 'Vue-CLI (Default JS)' test.skip( - /^(vue3|vue-cli)/i.test(templateName), + /^(vue3|vue-cli|preact)/i.test(templateName), `Skipping ${templateName}, which does not support dynamic source snippets` ); From 608131d0022b085161a31a659419f26a89f2b6a0 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Fri, 14 Oct 2022 18:24:28 +1100 Subject: [PATCH 6/8] Fix parallelism --- .circleci/config.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f9f94b700b9f..4c541cca92bd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -141,7 +141,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 5 + parallelism: 4 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -321,7 +321,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 18 + parallelism: 20 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -340,7 +340,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 13 + parallelism: 15 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -355,7 +355,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 18 + parallelism: 20 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -389,7 +389,7 @@ jobs: executor: class: medium+ name: sb_node_14_browsers - parallelism: 18 + parallelism: 20 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' @@ -404,7 +404,7 @@ jobs: executor: class: medium+ name: sb_playwright - parallelism: 18 + parallelism: 20 steps: - git-shallow-clone/checkout_advanced: clone_options: '--depth 1 --verbose' From 9b0cc1f7fd89683337406536ab5968fd5402e327 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Fri, 14 Oct 2022 18:45:33 +1100 Subject: [PATCH 7/8] Switch button to label in preact --- code/renderers/preact/template/components/Button.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/renderers/preact/template/components/Button.jsx b/code/renderers/preact/template/components/Button.jsx index 6115046e83ec..cd3c13987c32 100644 --- a/code/renderers/preact/template/components/Button.jsx +++ b/code/renderers/preact/template/components/Button.jsx @@ -2,13 +2,13 @@ // eslint-disable-next-line import/no-extraneous-dependencies import PropTypes from 'prop-types'; -export const Button = ({ onClick, children }) => ( +export const Button = ({ onClick, label }) => ( ); Button.propTypes = { onClick: PropTypes.func.isRequired, - children: PropTypes.node.isRequired, + label: PropTypes.node.isRequired, }; From 41c7f41bff7d2380194f529b62d336e0f874af6b Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 17 Oct 2022 09:47:27 +1100 Subject: [PATCH 8/8] Disabling re-rendering story in preact See https://github.com/storybookjs/storybook/issues/19504 --- code/lib/store/template/stories/rendering.stories.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/lib/store/template/stories/rendering.stories.ts b/code/lib/store/template/stories/rendering.stories.ts index 446e8799b373..a88b5add7689 100644 --- a/code/lib/store/template/stories/rendering.stories.ts +++ b/code/lib/store/template/stories/rendering.stories.ts @@ -33,7 +33,11 @@ export const ChangeArgs = { // Vue3: https://github.com/storybookjs/storybook/issues/13913 // Svelte: https://github.com/storybookjs/storybook/issues/19205 // Web-components: https://github.com/storybookjs/storybook/issues/19415 - if (['vue3', 'svelte', 'web-components', 'html'].includes(globalThis.storybookRenderer)) return; + // Preact: https://github.com/storybookjs/storybook/issues/19504 + if ( + ['vue3', 'svelte', 'web-components', 'html', 'preact'].includes(globalThis.storybookRenderer) + ) + return; // When we change the args to the button, it should not rerender await channel.emit('updateStoryArgs', { storyId: id, updatedArgs: { label: 'New Text' } });