5.0.1 • Published 2 years ago

react-simple-typewriter v5.0.1

Weekly downloads
18
License
MIT
Repository
github
Last release
2 years ago

React Simple Typewriter

A simple react component for adding a nice typewriter effect to your project.

NPM JavaScript Style Guidenpm bundle sizeGitHub

npm

npm i react-simple-typewriter

Yarn

yarn add react-simple-typewriter

Usage

There are two ways to Typewriter:

1. Component

import React from 'react'
import { Typewriter } from 'react-simple-typewriter'

const MyComponent = () => {
  return (
    <div className='App'>
      <Typewriter {/* Props */} />
    </div>
  )
}

Component Props

PropTypeOptionsDescriptionDefault
wordsarrayRequiredArray of strings holding the words['Hello', '...']
typeSpeednumberOptionalCharacter typing speed in Milliseconds80
deleteSpeednumberOptionalCharacter deleting speed in Milliseconds50
delaySpeednumberOptionalDelay time between the words in Milliseconds1500
loopnumber | booleanOptionalControl how many times to run. 0 \| false to run infinitely1
cursorbooleanOptionalShow / Hide a cursorfalse
cursorStyleReactNodeOptionalChange the cursor style available if cursor is enabled\|
cursorBlinkingbooleanOptionalEnable cursor blinking animation\|
onLoopDonefunctionOptionalCallback function that is triggered when loops are completed. available if loop is > 0-
onTypefunctionOptionalCallback function that is triggered while typing with typed words count passed-
onDelayfunctionOptionalCallback function that is triggered on typing delay-
onDeletefunctionOptionalCallback function that is triggered while deleting-

Usage Example

import React from 'react'
import { Typewriter } from 'react-simple-typewriter'

const MyComponent = () => {

  const handleType = (count: number) => {
    // access word count number
    console.log(count)}
  }

  const handleDone = () => {
    console.log(`Done after 5 loops!`)
  }

  return (
    <div className='App'>
      <h1 style={{ paddingTop: '5rem', margin: 'auto 0', fontWeight: 'normal' }}>
        Life is simple{' '}
        <span style={{ color: 'red', fontWeight: 'bold' }}>
          {/* Style will be inherited from the parent element */}
          <Typewriter
            words={['Eat', 'Sleep', 'Code', 'Repeat!']}
            loop={5}
            cursor
            cursorStyle='_'
            typeSpeed={70}
            deleteSpeed={50}
            delaySpeed={1000}
            onLoopDone={handleDone}
            onType={handleType}
          />
        </span>
      </h1>
    </div>
  )
}

2. Hook

BREAKING CHANGES v5.0.0 Hook now returns text along with some useful flags:

PropTypeDescription
isTypebooleanCheck if currently typing
isDeletebooleanCheck if currently deleting
isDelaybooleanCheck if currently on delay
isDonebooleanCheck if all running loops are done
import { useTypewriter } from 'react-simple-typewriter'

const MyComponent = () => {
  /**
   * @returns
   * text: [string] typed text
   * NEW helper: {} helper flags
   */
  const [text, helper] = useTypewriter({
    /* Config */
  })

  /* Hook helper */
  const { isType, isDelete, isDelay, isDone } = helper

  return (
    <div className='App'>
      <span>{text}</span>
    </div>
  )
}

Hook Config

PropTypeOptionsDescriptionDefault
wordsarrayRequiredArray of strings holding the words['Hello', '...']
typeSpeednumberOptionalCharacter typing speed in Milliseconds80
deleteSpeednumberOptionalCharacter deleting speed in Milliseconds50
delaySpeednumberOptionalDelay time between the words in Milliseconds1500
loopnumber | booleanOptionalControl how many times to run. 0 \| false to run infinitely1
onLoopDonefunctionOptionalCallback function that is triggered when loops are completed. available if loop is > 0-
onTypefunctionOptionalCallback function that is triggered while typing-
onDeletefunctionOptionalCallback function that is triggered while deleting-
onDelayfunctionOptionalCallback function that is triggered on typing delay-

Hook Usage Example

import React from 'react'
import { useTypewriter } from 'react-simple-typewriter'

const MyComponent = () => {
  const [text] = useTypewriter({
    words: ['Hello', 'From', 'Typewriter', 'Hook!'],
    loop: 0
  })

  return (
    <div className='App'>
      <span>{text}</span>
    </div>
  )
}

Hook with Cursor

If you like to have the Cursor effect, you can import it as a separate Component

import React from 'react'
import { useTypewriter, Cursor } from 'react-simple-typewriter'

const MyComponent = () => {
  const [text] = useTypewriter({
    words: ['Hello', 'From', 'Typewriter', 'Hook!'],
    loop: 3,
    onLoopDone: () => console.log(`loop completed after 3 runs.`)
  })

  return (
    <div className='App'>
      <span>{text}</span>
      <Cursor cursorColor='red' />
    </div>
  )
}

Cursor Component Props

PropTypeOptionsDescriptionDefault
cursorStyleReactNodeOptionalChange cursor style\|
cursorColorStringOptionalChange cursor colorinherit
cursorBlinkingBooleanOptionaldisable cursor blinking animationtrue

Demo

Edit react-simple-typewriter

License

MIT © awran5

5.0.1

2 years ago

5.0.0

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.1

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.0

3 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.5

4 years ago

1.0.0

4 years ago