tameemsafi / typewriterjs

A simple yet powerful native javascript plugin for a cool typewriter effect.
https://www.npmjs.com/package/typewriter-effect
MIT License
2.48k stars 221 forks source link

stop() doesn't work as expected (or not at all) #166

Open HunterAhlquist opened 1 year ago

HunterAhlquist commented 1 year ago

Hi, I'm trying to use stop() to interrupt the typewriter effect so it can move immediately into deleteAll() which I put after stop(). However, either stop() doesn't work as expected or it's not working at all because typewriter continues to type out the rest of the text then moves into deleteAll() as if stop() was never even there. Here's an example:

let typeWriter = new Typewriter(tabContent, {
    loop: false,
    delay: 25,
    deleteSpeed: 15,
    cursor: '',
});

function interrupt() {
    typeWriter.stop();
    typeWriter.deleteAll(15);
    typeWriter.typeString("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}

typeWriter.typeString("123456789123456789123456789123456789123456789123456789123456789123456789123456789");
setTimeout(function() { interrupt(); }, 1000);

Is this unintended, user-error, or is the stop() explanation missing something?

Jeandcc commented 1 year ago

You need to modify the state.eventQueue after you call stop and empty the array of the queue. That did the trick for me.

You might need to manually override the TS types that coem with the package, they don't include the state pro in the TypewriterClass