1.0.0 • Published 1 year ago

react-native-typewritter v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

React Native Typewriter

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

Install

npm

npm i react-native-typewriter

Yarn

yarn add react-native-typewriter

Usage

There are two ways to use Typewriter:

1. Component

import React from 'react'
import { View } from 'react-native'
import { Typewriter } from 'react-native-typewriter'

const MyComponent = () => {
  return (
    <View>
      <Typewriter {/* Props */} />
    </View>
  )
}

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 Milliseconds1000
loopnumber | booleanOptionalControl how many times to run. 0 \| false to run infinitely1
showCursorbooleanOptionalShow / Hide a cursortrue
cursorStylestringOptionalChange the cursor element available if cursor is enabled\|
cursorBlinkingbooleanOptionalEnable cursor blinking animationtrue
cursorColorstringOptionalHex code for color of cursor#FF0000
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-native-typewriter'

const MyComponent = () => {

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

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

  return (
    <View>
      <Typewriter
        words={['Eat', 'Sleep', 'Code', 'Repeat!']}
        loop={5}
        showCursor={true}
        cursorStyle='_'
        typeSpeed={70}
        deleteSpeed={50}
        delaySpeed={1000}
        onLoopDone={handleDone}
        onType={handleType}
      />
    </View>
  )
}

2. Hook

Hook 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 React from 'react';
import { View, Text } from 'react-native';
import { useTypewriter } from 'react-native-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 (
    <View>
      <Text>{text}</Text>
    </View>
  );
};

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 { View, Text } from 'react-native';
import { useTypewriter } from 'react-native-typewriter';

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

  return (
    <View>
      <Text>{text}</Text>
    </View>
  );
};

License

MIT

1.0.0

1 year ago

0.1.0

1 year ago