/* eslint-disable jsx-a11y/no-redundant-roles */ /* eslint-disable react/button-has-type */ /* eslint-disable jsx-a11y/mouse-events-have-key-events */ /* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable jsx-a11y/interactive-supports-focus */ import React from 'react'; import { text, boolean, withKnobs, number, select, button } from '@storybook/addon-knobs'; import { action } from '@storybook/addon-actions'; import { storiesOf } from '@storybook/react'; import Countdown from '../src/components/Countdown'; import Wrapper from '../src/components/Wrapper'; import Freeze from '../src/components/Freeze'; import Memo from '../src/components/Memo'; import Try from '../src/components/Try'; import { If, Then, Else } from '../src/components/If'; import { EventProxy } from '../src/components/EventProxy'; import { AttributeProxy } from '../src/components/AttributeProxy'; const stories = storiesOf('Components', module); stories.addDecorator(withKnobs({ escapeHTML: false })); const Children = () => { const counter = React.useRef(0); counter.current += 1; return (
event.stopPropagation()}> I was rendered  {counter.current}  times
); }; stories.add('If', () => (
nothing
)); stories.add('Memo', () => { const value1 = text('value1', 'default-value'); const value2 = text('value2', 'default-value'); return (
{value1} {' '} changes
{value2} {' '} does not
); }); stories.add('Memo2', () => { const [state1, setState1] = React.useState(0); const [state2, setState2] = React.useState(0); React.useEffect( () => { const interval = setInterval(() => { setState2(old => old + 1); }, 100); return () => { clearInterval(interval); }; }, [], ); return (
{state2}   This value doesn't change, until you press  
); }); stories.add('Freeze', () => { const [state, setState] = React.useState(0); React.useEffect(() => { const interval = setInterval(() => { setState(v => v + 1); }, 1000); return () => clearInterval(interval); }, []); return (
I was rendered: {' '} {state} {' '} times
); }); stories.add('EventProxy', () => (
)); stories.add('AttributeProxy', () => (
Some text
)); const ErrorComponent = ({ shouldThrow }: { shouldThrow?: boolean }) => { if (shouldThrow) { throw new Error('💣'); } else { return <>Everything fine; } }; stories.add('Try', () => (
{ action('catch')(error); return 'Exception caught'; }} >
)); const WrapperComponent: React.FC = ({ children }) => (
{'< Обнимашка>'} {children} {''}
); stories.add('Wrapper', () => (
)); stories.add('Countdown', () => (
));