Catalog npm
Back to packageRELEASE DETAILS

2.21.1

npm

@0kzh/typewriter-effect

[![CircleCI](https://circleci.com/gh/tameemsafi/typewriterjs.svg?style=svg)](https://circleci.com/gh/tameemsafi/typewriterjs)

es6reactreact typewriterreact typewriter effecttypewritertypewriter effect
Published31 Oct 2023
Direct dependencies23
Transitive dependenciesNot calculated

README

Current package documentation

TypewriterJS v2

CircleCI

NPM Repository JSFiddle Example Emoji Example

CDN

You can use the CDN version of this plugin for fast and easy setup.

<script src="https://unpkg.com/typewriter-effect@latest/dist/core.js"></script>

Installation

You can install Typewriterjs with just one command and you're good to go


# with npm
npm i typewriter-effect

# with yarn
yarn add typewriter-effect

Building

You will need to bundle the javascript before it can be used, this can be done using npm run build:dev for development or npm run build:prod for production.

Core

This is the base version of the typewriter effect. It will need a the bundled version of the javascript to work correctly.

See examples in the 'examples' folder.

import Typewriter from 'typewriter-effect/dist/core';

new Typewriter('#typewriter', {
  strings: ['Hello', 'World'],
  autoStart: true,
});

Options

NameTypeDefault valueDescription
stringsString or ArraynullStrings to type out when using autoStart option
cursorStringPipe characterString value to use as the cursor.
delay'natural' or Number'natural'The delay between each key when typing.
deleteSpeed'natural' or Number'natural'The delay between deleting each character.
loopBooleanfalseWhether to keep looping or not.
autoStartBooleanfalseWhether to autostart typing strings or not. You are required to provide strings option.
pauseForNumber1500The pause duration after a string is typed when using autostart mode
devModeBooleanfalseWhether or not to display console logs.
skipAddStylesBooleanSkip adding default typewriter css styles.
wrapperClassNameString'Typewriter__wrapper'Class name for the wrapper element.
cursorClassNameString'Typewriter__cursor'Class name for the cursor element.
stringSplitterFunctionString splitter function, can be used to split emoji's
onCreateTextNodeFunctionnullCallback function to replace the internal method which creates a text node for the character before adding it to the DOM. If you return null, then it will not add anything to the DOM and so it is up to you to handle it.
onRemoveNodeFunctionnullCallback function when a node is about to be removed. First param will be an object { node: HTMLNode, charater: string }

Methods

All methods can be chained together.

NameParamsDescription
start-Start the typewriter effect.
stop-Stop the typewriter effect.
pauseForms Time to pause for in millisecondsPause for milliseconds
typeStringstring String to type out, it can contain HTML tagsType out a string using the typewriter effect.
pasteStringstring String to paste out, it can contain HTML tagsPaste out a string.
deleteAllspeed Speed to delete all visibles nodes, can be number or 'natural'Delete everything that is visible inside of the typewriter wrapper element.
deleteCharsamount Number of charactersDelete and amount of characters, starting at the end of the visible string.
callFunctioncb Callback, thisArg this Object to bind to the callback functionCall a callback function. The first parameter to the callback elements which contains all DOM nodes used in the typewriter effect.
changeDeleteSpeedspeed Number or 'natural'The speed at which to delete the characters, lower number is faster.
changeDelaydelay Number or 'natural'Change the delay when typing out each character

Examples

Basic example

var app = document.getElementById('app');

var typewriter = new Typewriter(app, {
  loop: true,
  delay: 75,
});

typewriter
  .pauseFor(2500)
  .typeString('A simple yet powerful native javascript')
  .pauseFor(300)
  .deleteChars(10)
  .typeString('<strong>JS</strong> plugin for a cool typewriter effect and ')
  .typeString('<strong>only <span style="color: #27ae60;">5kb</span> Gzipped!</strong>')
  .pauseFor(1000)
  .start();

Custom text node creator using callback

var app = document.getElementById('app');

var customNodeCreator = function(character) {
  return document.createTextNode(character);
}

var typewriter = new Typewriter(app, {
  loop: true,
  delay: 75,
  onCreateTextNode: customNodeCreator,
});

typewriter
  .typeString('A simple yet powerful native javascript')
  .pauseFor(300)
  .start();

Custom handling text insert using input placeholder

var input = document.getElementById('input')

var customNodeCreator = function(character) {
  // Add character to input placeholder
  input.placeholder = input.placeholder + character;

  // Return null to skip internal adding of dom node
  return null;
}

var onRemoveNode = function({ character }) {
  if(input.placeholder) {
    // Remove last character from input placeholder
    input.placeholder = input.placeholder.slice(0, -1)
  }
}

var typewriter = new Typewriter(null, {
  loop: true,
  delay: 75,
  onCreateTextNode: customNodeCreator,
  onRemoveNode: onRemoveNode,
});

typewriter
  .typeString('A simple yet powerful native javascript')
  .pauseFor(300)
  .start();

React

This includes a React component which can be used within your project. You can pass in a onInit function which will be called with the instance of the typewriter so you can use the typewriter core API.

import Typewriter from 'typewriter-effect';

<Typewriter
  onInit={(typewriter) => {
    typewriter.typeString('Hello World!')
      .callFunction(() => {
        console.log('String typed out!');
      })
      .pauseFor(2500)
      .deleteAll()
      .callFunction(() => {
        console.log('All strings were deleted');
      })
      .start();
  }}
/>

Alternatively you can also pass in options to use auto play and looping for example:

import Typewriter from 'typewriter-effect';

<Typewriter
  options={{
    strings: ['Hello', 'World'],
    autoStart: true,
    loop: true,
  }}
/>

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 25

Native requirements
23 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
prop-types
Environment
{
  "local_name": "prop-types",
  "alias": false,
  "peer_metadata": null
}
^15.8.1runtime
raf
Environment
{
  "local_name": "raf",
  "alias": false,
  "peer_metadata": null
}
^3.4.1runtime
@babel/cli
Environment
{
  "local_name": "@babel/cli",
  "alias": false,
  "peer_metadata": null
}
^7.21.5development
@babel/core
Environment
{
  "local_name": "@babel/core",
  "alias": false,
  "peer_metadata": null
}
^7.22.1development
@babel/plugin-proposal-class-properties
Environment
{
  "local_name": "@babel/plugin-proposal-class-properties",
  "alias": false,
  "peer_metadata": null
}
^7.18.6development
@babel/preset-env
Environment
{
  "local_name": "@babel/preset-env",
  "alias": false,
  "peer_metadata": null
}
^7.22.4development
@babel/preset-react
Environment
{
  "local_name": "@babel/preset-react",
  "alias": false,
  "peer_metadata": null
}
^7.22.3development
@babel/register
Environment
{
  "local_name": "@babel/register",
  "alias": false,
  "peer_metadata": null
}
^7.21.0development
@babel/runtime
Environment
{
  "local_name": "@babel/runtime",
  "alias": false,
  "peer_metadata": null
}
^7.22.3development
@testing-library/react
Environment
{
  "local_name": "@testing-library/react",
  "alias": false,
  "peer_metadata": null
}
^11.2.7development
babel-loader
Environment
{
  "local_name": "babel-loader",
  "alias": false,
  "peer_metadata": null
}
^8.3.0development
babel-plugin-transform-react-remove-prop-types
Environment
{
  "local_name": "babel-plugin-transform-react-remove-prop-types",
  "alias": false,
  "peer_metadata": null
}
^0.4.24development
core-js
Environment
{
  "local_name": "core-js",
  "alias": false,
  "peer_metadata": null
}
^3.30.2development
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^28.1.3development
jest-environment-jsdom
Environment
{
  "local_name": "jest-environment-jsdom",
  "alias": false,
  "peer_metadata": null
}
^28.1.3development
lolex
Environment
{
  "local_name": "lolex",
  "alias": false,
  "peer_metadata": null
}
^6.0.0development
react
Environment
{
  "local_name": "react",
  "alias": false,
  "peer_metadata": null
}
^17.0.2development
react-dom
Environment
{
  "local_name": "react-dom",
  "alias": false,
  "peer_metadata": null
}
^17.0.2development
regenerator-runtime
Environment
{
  "local_name": "regenerator-runtime",
  "alias": false,
  "peer_metadata": null
}
^0.13.11development
webpack
Environment
{
  "local_name": "webpack",
  "alias": false,
  "peer_metadata": null
}
^5.85.0development
webpack-bundle-analyzer
Environment
{
  "local_name": "webpack-bundle-analyzer",
  "alias": false,
  "peer_metadata": null
}
^4.9.0development
webpack-cli
Environment
{
  "local_name": "webpack-cli",
  "alias": false,
  "peer_metadata": null
}
^4.10.0development
webpack-merge
Environment
{
  "local_name": "webpack-merge",
  "alias": false,
  "peer_metadata": null
}
^5.9.0development
react
Environment
{
  "local_name": "react",
  "alias": false,
  "peer_metadata": null
}
^17.x || ^18.xpeer
react-dom
Environment
{
  "local_name": "react-dom",
  "alias": false,
  "peer_metadata": null
}
^17.x || ^18.xpeer

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-0/itLaMSWMw1rKxbVeugBYJ8JBjxBt03eBmT7adLCOjKkzW/HxpprqkI2NAbqrIJ+8xmhVBbxxqYYPYlzsL/qg==",
  "shasum": "a2bf6f0178f259118dff0bf79ca0ff58762421f9",
  "tarball": "https://registry.npmjs.org/@0kzh/typewriter-effect/-/typewriter-effect-2.21.1.tgz",
  "fileCount": 8,
  "unpackedSize": 241112,
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEUCIDqM9f9mLOgbX5hdO5DLC83cnUpcTy7x9dZe+9lFq0IYAiEA4zgmMVtqWlLuMH+fG04btLgP5BTKspaLCDOTBHBvvrQ="
    }
  ]
}

Repository

PENDING
tameemsafi/typewriterjs

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:12 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:aa413e2713693a0d4f97ea4d33f31635338c33f89658d10dd2864df0cd6a25f9

Other collected versions

2.21.231 Oct2.21.031 Oct2.17.724 Aug2.17.624 Aug2.17.530 May2.17.430 MayView all collected versions →