chore: restructure project into yarn workspaces, remove next

This commit is contained in:
41666 2021-03-09 23:25:16 -05:00
parent 49e308507e
commit 8d06327c03
266 changed files with 16466 additions and 3350 deletions

View file

@ -0,0 +1,26 @@
import { shallow } from 'enzyme';
import * as React from 'react';
import { Typist } from './Typist';
jest.useFakeTimers();
it('correctly cycles through provided lines', () => {
const lines = ['abcdef', 'ghijkl'];
let view = shallow(<Typist charTimeout={100} resetTimeout={10000} lines={lines} />);
jest.advanceTimersByTime(100 * lines[0].length);
view = view.update();
expect(view.text()).toBe(lines[0]);
});
it('correctly cycles through provided characters in a line', () => {
const lines = ['abcdef'];
let view = shallow(<Typist charTimeout={1} resetTimeout={100} lines={lines} />);
Array(...lines[0]).forEach((_, idx) => {
view = view.update();
expect(view.text()).toBe(lines[0].slice(0, idx));
jest.advanceTimersByTime(1);
});
});

View file

@ -0,0 +1,16 @@
import * as React from 'react';
import { Typist } from './Typist';
export default {
title: 'Atoms/Typist',
component: Typist,
args: {
charTimeout: 75,
resetTimeout: 2000,
lines: ['hello world', 'and again', 'a third', 'story time!'],
},
};
export const Looping = (args) => {
return <Typist {...args} />;
};

View file

@ -0,0 +1,37 @@
import * as React from 'react';
type TypistProps = {
resetTimeout: number;
charTimeout: number;
lines: string[];
};
export const Typist = (props: TypistProps) => {
const [outputText, setOutputText] = React.useState('');
const [currentLine, setCurrentLine] = React.useState(0);
React.useEffect(() => {
const fullLine = props.lines[currentLine];
if (outputText === fullLine) {
const timeout = setTimeout(() => {
setOutputText('');
setCurrentLine((currentLine + 1) % props.lines.length);
}, props.resetTimeout);
return () => {
clearTimeout(timeout);
};
}
const timeout = setTimeout(() => {
setOutputText(fullLine.slice(0, outputText.length + 1));
}, props.charTimeout);
return () => {
clearTimeout(timeout);
};
}, [currentLine, outputText]);
return <>{outputText}</>;
};

View file

@ -0,0 +1 @@
export * from './Typist';