{"version":3,"file":"index.min.js","sources":["../src/index.js"],"sourcesContent":["/**\n * @name setProps\n * @description Set the ityped properties configuration\n * @param {Object} config The configuration properties\n * @return {Promise}\n */\nconst setProps = ({\n strings = ['Put your strings here...', 'and Enjoy!'],\n typeSpeed = 100,\n backSpeed = 50,\n backDelay = 500,\n startDelay = 500,\n cursorChar = '|',\n placeholder = false,\n showCursor = true,\n disableBackTyping = false,\n onFinished = function () { },\n loop = true\n}) => ({\n strings,\n typeSpeed,\n backSpeed,\n cursorChar,\n backDelay,\n placeholder,\n startDelay,\n showCursor,\n loop,\n disableBackTyping,\n onFinished\n})\n\nexport const init = (element, properties) => {\n let i = 0, l, STRINGS_TO_ITERATE;\n\n const typewrite = (strings, props) => {\n if (i === l)\n if (props.loop) i = 0;\n setTimeout(() => { typeString(strings[i], props); }, props.startDelay);\n }\n\n const typeString = (str, props) => {\n let index = 0,\n strLen = str.length;\n let intervalID = setInterval(() => {\n props.placeholder ? element.placeholder += str[index] : element.textContent += str[index];\n if (++index === strLen) return onStringTyped(intervalID, props);\n }, props.typeSpeed);\n }\n\n const onStringTyped = (id, props) => {\n clearInterval(id);\n if (props.disableBackTyping && i === l - 1) {\n return props.onFinished()\n }\n if (!props.loop && i === l - 1) {\n return props.onFinished();\n }\n setTimeout(() => eraseString(props), props.backDelay);\n }\n\n const eraseString = (props) => {\n let str = props.placeholder ? element.placeholder : element.textContent,\n strLen = str.length;\n let intervalID = setInterval(() => {\n props.placeholder\n ? element.placeholder = element.placeholder.substr(0, --strLen)\n : element.textContent = str.substr(0, --strLen);\n if (strLen === 0) return onStringErased(intervalID, props);\n }, props.backSpeed);\n }\n\n const onStringErased = (id, props) => {\n clearInterval(id);\n ++i;\n typewrite(STRINGS_TO_ITERATE, props);\n }\n\n const setCursor = (element, props) => {\n let cursorSpan = document.createElement('span');\n cursorSpan.classList.add('ityped-cursor');\n cursorSpan.textContent = '|';\n cursorSpan.textContent = props.cursorChar;\n element.insertAdjacentElement('afterend', cursorSpan);\n }\n\n\n const startTyping = (prop) => {\n let props = setProps(prop || {})\n let strings = props.strings\n STRINGS_TO_ITERATE = strings\n l = strings.length\n if (typeof element === \"string\") element = document.querySelector(element)\n if (props.showCursor) setCursor(element, props)\n typewrite(strings, props)\n }\n\n return startTyping(properties)\n}"],"names":["element","properties","i","l","STRINGS_TO_ITERATE","typewrite","strings","props","loop","startDelay","typeString","str","index","strLen","length","intervalID","setInterval","placeholder","textContent","onStringTyped","typeSpeed","id","disableBackTyping","onFinished","eraseString","backDelay","substr","onStringErased","backSpeed","prop","cursorChar","showCursor","setProps","document","querySelector","cursorSpan","createElement","classList","add","insertAdjacentElement","setCursor","startTyping"],"mappings":"gMAgCoB,SAACA,EAASC,OACxBC,EAAI,EAAGC,SAAGC,SAERC,EAAY,SAACC,EAASC,GACtBL,IAAMC,GACJI,EAAMC,OAAMN,EAAI,cACX,aAAmBI,EAAQJ,GAAIK,IAAWA,EAAME,aAGvDC,EAAa,SAACC,EAAKJ,OACnBK,EAAQ,EACVC,EAASF,EAAIG,OACXC,EAAaC,YAAY,gBACrBC,YAAcjB,EAAQiB,aAAeN,EAAIC,GAASZ,EAAQkB,aAAeP,EAAIC,KAC7EA,IAAUC,EAAQ,OAAOM,EAAcJ,EAAYR,IACxDA,EAAMa,YAGLD,EAAgB,SAACE,EAAId,wBACXc,GACVd,EAAMe,mBAAqBpB,IAAMC,EAAI,EAChCI,EAAMgB,aAEVhB,EAAMC,MAAQN,IAAMC,EAAI,kBAGlB,kBAAMqB,EAAYjB,IAAQA,EAAMkB,WAFlClB,EAAMgB,cAKXC,EAAc,SAACjB,OACfI,EAAMJ,EAAMU,YAAcjB,EAAQiB,YAAcjB,EAAQkB,YAC1DL,EAASF,EAAIG,OACXC,EAAaC,YAAY,gBACrBC,YACFjB,EAAQiB,YAAcjB,EAAQiB,YAAYS,OAAO,IAAKb,GACtDb,EAAQkB,YAAcP,EAAIe,OAAO,IAAKb,GAC3B,IAAXA,EAAc,OAAOc,EAAeZ,EAAYR,IACnDA,EAAMqB,YAGLD,EAAiB,SAACN,EAAId,iBACZc,KACZnB,IACQE,EAAoBG,WAYZ,SAACsB,OACftB,EAlFS,oBACfD,QAAAA,cAAW,2BAA4B,oBACvCc,UAAAA,aAAY,UACZQ,UAAAA,aAAY,SACZH,UAAAA,aAAY,UACZhB,WAAAA,aAAa,UACbqB,WAAAA,aAAa,UACbb,YAAAA,oBACAc,WAAAA,oBACAT,kBAAAA,oBACAC,WAAAA,aAAa,mBACbf,oKAuEcwB,CAASH,OACjBvB,EAAUC,EAAMD,UACCA,IACjBA,EAAQQ,OACW,iBAAZd,IAAsBA,EAAUiC,SAASC,cAAclC,IAC9DO,EAAMwB,YAfM,SAAC/B,EAASO,OACtB4B,EAAaF,SAASG,cAAc,UAC7BC,UAAUC,IAAI,mBACdpB,YAAc,MACdA,YAAcX,EAAMuB,aACvBS,sBAAsB,WAAYJ,GAUpBK,CAAUxC,EAASO,KAC/BD,EAASC,GAGdkC,CAAYxC"}