svelte-typewriter
Advanced tools
Comparing version 1.5.3 to 1.5.4
@@ -7,2 +7,8 @@ ### Changelog | ||
#### [v1.5.3](https://github.com/henriquehbr/svelte-typewriter/compare/v1.5.2...v1.5.3) | ||
> 12 December 2019 | ||
- dependencies: bump `svelte` from "^3.15.0" to "^3.16.4" [`cb2e7f2`](https://github.com/henriquehbr/svelte-typewriter/commit/cb2e7f2c2a37419f8b6560c8ecd61d19b55b0676) | ||
#### [v1.5.2](https://github.com/henriquehbr/svelte-typewriter/compare/v1.5.1...v1.5.2) | ||
@@ -9,0 +15,0 @@ |
@@ -12,3 +12,3 @@ { | ||
}, | ||
"version": "1.5.3", | ||
"version": "1.5.4", | ||
"main": "Typewriter.svelte", | ||
@@ -15,0 +15,0 @@ "author": "Henrique Borges <henriqueborgeshbr@gmail.com>", |
export default async (node, { loop = false, cascade = false, interval = 30 } = {}) => { | ||
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) | ||
const hasSingleTextNode = el => el.childNodes.length === 1 && el.childNodes[0].nodeType === 3 | ||
const typingInterval = async () => | ||
@@ -25,16 +26,14 @@ Array.isArray(interval) ? await sleep(interval[rng(0, interval.length)]) : await sleep(interval) | ||
const typewriterMode = | ||
cascade && !loop | ||
? 'cascade' | ||
: loop && !cascade | ||
? 'loop' | ||
: !cascade && !loop | ||
? 'default' | ||
: (() => { | ||
throw new Error('`cascade` mode should not be used with `loop`!') | ||
})() | ||
cascade && !loop ? 'cascade' : | ||
loop && !cascade ? 'loop' : | ||
!cascade && !loop && hasSingleTextNode(node) ? 'singleDefault' : | ||
!cascade && !loop ? 'childrenDefault' : '' | ||
const elements = | ||
typewriterMode === 'cascade' || typewriterMode === 'default' | ||
? [...node.getElementsByTagName('*')].map(el => ({ el, text: el.textContent.split('') })) | ||
: [...node.children].map(el => el.textContent.split('')) | ||
typewriterMode === 'cascade' || typewriterMode === 'childrenDefault' | ||
? [...node.children].map(el => ({ el, text: el.textContent.split('') })) : | ||
typewriterMode === 'singleDefault' | ||
? node.textContent.split('') : | ||
typewriterMode === 'loop' ? | ||
[...node.children].map(el => el.textContent.split('')) : '' | ||
@@ -60,3 +59,6 @@ switch (typewriterMode) { | ||
} | ||
case 'default': | ||
case 'singleDefault': | ||
typewriterEffect(node) | ||
break | ||
case 'childrenDefault': | ||
for (const { el, text } of elements) { | ||
@@ -66,3 +68,5 @@ el.textContent = text.join('') | ||
} | ||
break | ||
default: throw new Error('`cascade` mode should not be used with `loop`!') | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12688
7
65