tags if necessary and renest the characters directly into the element rather than inside the word
\n\t\t\t\tif (node._isSplit) {\n\t\t\t\t\tnode._next = node.nextSibling;\n\t\t\t\t\tnode.parentNode.appendChild(node); //put it at the end to keep the order correct.\n\n\t\t\t\t} else if (node.parentNode._isSplit) {\n\t\t\t\t\tnode._parent = node.parentNode;\n\t\t\t\t\tif (!node.previousSibling && node.firstChild) {\n\t\t\t\t\t\tnode.firstChild._isFirst = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (node.nextSibling && node.nextSibling.textContent === \" \" && !node.nextSibling.nextSibling) { //if the last node inside a nested element is just a space (like Tnested ), remove it otherwise it'll get placed in the wrong order. Don't remove it right away, though, because we need to sense when words/characters are before a space like _isBeforeWordDelimiter(). Removing it now would make that a false negative.\n\t\t\t\t\t\tspaceNodesToRemove.push(node.nextSibling);\n\t\t\t\t\t}\n\t\t\t\t\tnode._next = (node.nextSibling && node.nextSibling._isFirst) ? null : node.nextSibling;\n\t\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t\t\tnodes.splice(i--, 1);\n\t\t\t\t\tl--;\n\t\t\t\t} else if (!isChild) {\n\t\t\t\t\toffset = (!node.nextSibling && _isBeforeWordDelimiter(node.parentNode, element, wordDelimiter)); //if this is the last letter in the word (and we're not breaking by lines and not positioning things absolutely), we need to add a space afterwards so that the characters don't just mash together\n\t\t\t\t\tif (node.parentNode._parent) {\n\t\t\t\t\t\tnode.parentNode._parent.appendChild(node);\n\t\t\t\t\t}\n\t\t\t\t\tif (offset) {\n\t\t\t\t\t\tnode.parentNode.appendChild(_doc.createTextNode(\" \"));\n\t\t\t\t\t}\n\t\t\t\t\tif (tag === \"span\") {\n\t\t\t\t\t\tnode.style.display = \"inline\"; //so that word breaks are honored properly.\n\t\t\t\t\t}\n\t\t\t\t\tcharArray.push(node);\n\t\t\t\t}\n\t\t\t} else if (node.parentNode._isSplit && !node._isSplit && node.innerHTML !== \"\") {\n\t\t\t\twordArray.push(node);\n\t\t\t} else if (chars && !node._isSplit) {\n\t\t\t\tif (tag === \"span\") {\n\t\t\t\t\tnode.style.display = \"inline\";\n\t\t\t\t}\n\t\t\t\tcharArray.push(node);\n\t\t\t}\n\t\t}\n\n\t\ti = spaceNodesToRemove.length;\n\t\twhile (--i > -1) {\n\t\t\tspaceNodesToRemove[i].parentNode.removeChild(spaceNodesToRemove[i]);\n\t\t}\n\n\t\tif (lines) {\n\t\t\t//the next 7 lines just give us the line width in the most reliable way and figure out the left offset (if position isn't relative or absolute). We must set the width along with text-align to ensure everything works properly for various alignments.\n\t\t\tif (absolute) {\n\t\t\t\tlineNode = _doc.createElement(tag);\n\t\t\t\telement.appendChild(lineNode);\n\t\t\t\tlineWidth = lineNode.offsetWidth + \"px\";\n\t\t\t\toffset = (lineNode.offsetParent === element) ? 0 : element.offsetLeft;\n\t\t\t\telement.removeChild(lineNode);\n\t\t\t}\n\t\t\tstyle = element.style.cssText;\n\t\t\telement.style.cssText = \"display:none;\"; //to improve performance, set display:none on the element so that the browser doesn't have to worry about reflowing or rendering while we're renesting things. We'll revert the cssText later.\n\t\t\t//we can't use element.innerHTML = \"\" because that causes IE to literally delete all the nodes and their content even though we've stored them in an array! So we must loop through the children and remove them.\n\t\t\twhile (element.firstChild) {\n\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t}\n\t\t\taddWordSpaces = (wordDelimiter === \" \" && (!absolute || (!words && !chars)));\n\t\t\tfor (i = 0; i < lines.length; i++) {\n\t\t\t\tcurLine = lines[i];\n\t\t\t\tlineNode = _doc.createElement(tag);\n\t\t\t\tlineNode.style.cssText = \"display:block;text-align:\" + textAlign + \";position:\" + (absolute ? \"absolute;\" : \"relative;\");\n\t\t\t\tif (linesClass) {\n\t\t\t\t\tlineNode.className = linesClass + (iterateLine ? i+1 : \"\");\n\t\t\t\t}\n\t\t\t\tlineArray.push(lineNode);\n\t\t\t\tl = curLine.length;\n\t\t\t\tfor (j = 0; j < l; j++) {\n\t\t\t\t\tif (curLine[j].nodeName !== \"BR\") {\n\t\t\t\t\t\tnode = curLine[j];\n\t\t\t\t\t\tlineNode.appendChild(node);\n\t\t\t\t\t\tif (addWordSpaces && node._wordEnd) {\n\t\t\t\t\t\t\tlineNode.appendChild(_doc.createTextNode(\" \"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (absolute) {\n\t\t\t\t\t\t\tif (j === 0) {\n\t\t\t\t\t\t\t\tlineNode.style.top = (node._y) + \"px\";\n\t\t\t\t\t\t\t\tlineNode.style.left = (paddingLeft + offset) + \"px\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode.style.top = \"0px\";\n\t\t\t\t\t\t\tif (offset) {\n\t\t\t\t\t\t\t\tnode.style.left = (node._x - offset) + \"px\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (l === 0) { //if there are no nodes in the line (typically meaning there were two consecutive
tags, just add a non-breaking space so that things display properly.\n\t\t\t\t\tlineNode.innerHTML = \" \";\n\t\t\t\t} else if (!words && !chars) {\n\t\t\t\t\t_deWordify(lineNode);\n\t\t\t\t\t_swapText(lineNode, String.fromCharCode(160), \" \");\n\t\t\t\t}\n\t\t\t\tif (absolute) {\n\t\t\t\t\tlineNode.style.width = lineWidth;\n\t\t\t\t\tlineNode.style.height = node._h + \"px\";\n\t\t\t\t}\n\t\t\t\telement.appendChild(lineNode);\n\t\t\t}\n\t\t\telement.style.cssText = style;\n\t\t}\n\n\t\t//if everything shifts to being position:absolute, the container can collapse in terms of height or width, so fix that here.\n\t\tif (absolute) {\n\t\t\tif (origHeight > element.clientHeight) {\n\t\t\t\telement.style.height = (origHeight - padTopAndBottom) + \"px\";\n\t\t\t\tif (element.clientHeight < origHeight) { //IE8 and earlier use a different box model - we must include padding and borders\n\t\t\t\t\telement.style.height = (origHeight + borderTopAndBottom)+ \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (origWidth > element.clientWidth) {\n\t\t\t\telement.style.width = (origWidth - padLeftAndRight) + \"px\";\n\t\t\t\tif (element.clientWidth < origWidth) { //IE8 and earlier use a different box model - we must include padding and borders\n\t\t\t\t\telement.style.width = (origWidth + borderLeftAndRight)+ \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_pushReversed(allChars, charArray);\n\t\tif (words) {\n\t\t\t_pushReversed(allWords, wordArray);\n\t\t}\n\t\t_pushReversed(allLines, lineArray);\n\t},\n\t_splitRawText = (element, vars, wordStart, charStart) => {\n\t\tlet tag = vars.tag ? vars.tag : (vars.span ? \"span\" : \"div\"),\n\t\t\ttypes = vars.type || vars.split || \"chars,words,lines\",\n\t\t\t//words = (types.indexOf(\"words\") !== -1),\n\t\t\tchars = ~types.indexOf(\"chars\"),\n\t\t\tabsolute = _isAbsolute(vars),\n\t\t\twordDelimiter = vars.wordDelimiter || \" \",\n\t\t\tspace = wordDelimiter !== \" \" ? \"\" : (absolute ? \" \" : \" \"),\n\t\t\twordEnd = \"\" + tag + \">\",\n\t\t\twordIsOpen = 1,\n\t\t\tspecialChars = vars.specialChars ? (typeof(vars.specialChars) === \"function\" ? vars.specialChars : _findSpecialChars) : null, //specialChars can be an array or a function. For performance reasons, we always set this local \"specialChars\" to a function to which we pass the remaining text and whatever the original vars.specialChars was so that if it's an array, it works with the _findSpecialChars() function.\n\t\t\ttext, splitText, i, j, l, character, hasTagStart, testResult,\n\t\t\tcontainer = _doc.createElement(\"div\"),\n\t\t\tparent = element.parentNode;\n\n\t\tparent.insertBefore(container, element);\n\t\tcontainer.textContent = element.nodeValue;\n\t\tparent.removeChild(element);\n\t\telement = container;\n\t\ttext = getText(element);\n\t\thasTagStart = text.indexOf(\"<\") !== -1;\n\n\t\tif (vars.reduceWhiteSpace !== false) {\n\t\t\ttext = text.replace(_multipleSpacesExp, \" \").replace(_stripExp, \"\");\n\t\t}\n\t\tif (hasTagStart) {\n\t\t\ttext = text.split(\"<\").join(\"{{LT}}\"); //we can't leave \"<\" in the string, or when we set the innerHTML, it can be interpreted as a node\n\t\t}\n\t\tl = text.length;\n\t\tsplitText = ((text.charAt(0) === \" \") ? space : \"\") + wordStart();\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tcharacter = text.charAt(i);\n\t\t\tif (specialChars && (testResult = specialChars(text.substr(i), vars.specialChars))) { // look for any specialChars that were declared. Remember, they can be passed in like {specialChars:[\"मी\", \"पा\", \"है\"]} or a function could be defined instead. Either way, the function should return the number of characters that should be grouped together for this \"character\".\n\t\t\t\tcharacter = text.substr(i, testResult || 1);\n\t\t\t\tsplitText += (chars && character !== \" \") ? charStart() + character + \"\" + tag + \">\" : character;\n\t\t\t\ti += testResult - 1;\n\t\t\t} else if (character === wordDelimiter && text.charAt(i-1) !== wordDelimiter && i) {\n\t\t\t\tsplitText += wordIsOpen ? wordEnd : \"\";\n\t\t\t\twordIsOpen = 0;\n\t\t\t\twhile (text.charAt(i + 1) === wordDelimiter) { //skip over empty spaces (to avoid making them words)\n\t\t\t\t\tsplitText += space;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i === l-1) {\n\t\t\t\t\tsplitText += space;\n\t\t\t\t} else if (text.charAt(i + 1) !== \")\") {\n\t\t\t\t\tsplitText += space + wordStart();\n\t\t\t\t\twordIsOpen = 1;\n\t\t\t\t}\n\n\t\t\t} else if (character === \"{\" && text.substr(i, 6) === \"{{LT}}\") {\n\t\t\t\tsplitText += chars ? charStart() + \"{{LT}}\" + \"\" + tag + \">\" : \"{{LT}}\";\n\t\t\t\ti += 5;\n\n\t\t\t} else if ((character.charCodeAt(0) >= 0xD800 && character.charCodeAt(0) <= 0xDBFF) || (text.charCodeAt(i+1) >= 0xFE00 && text.charCodeAt(i+1) <= 0xFE0F)) { //special emoji characters use 2 or 4 unicode characters that we must keep together.\n\t\t\t\tj = ((text.substr(i, 12).split(emojiExp) || [])[1] || \"\").length || 2;\n\t\t\t\tsplitText += (chars && character !== \" \") ? charStart() + text.substr(i, j) + \"\" + tag + \">\" : text.substr(i, j);\n\t\t\t\ti += j - 1;\n\t\t\t} else {\n\t\t\t\tsplitText += (chars && character !== \" \") ? charStart() + character + \"\" + tag + \">\" : character;\n\t\t\t}\n\t\t}\n\t\telement.outerHTML = splitText + (wordIsOpen ? wordEnd : \"\");\n\t\tif (hasTagStart) {\n\t\t\t_swapText(parent, \"{{LT}}\", \"<\"); //note: don't perform this on \"element\" because that gets replaced with all new elements when we set element.outerHTML.\n\t\t}\n\t},\n\t_split = (element, vars, wordStart, charStart) => {\n\t\tlet children = _toArray(element.childNodes),\n\t\t\tl = children.length,\n\t\t\tabsolute = _isAbsolute(vars),\n\t\t\ti, child;\n\t\tif (element.nodeType !== 3 || l > 1) {\n\t\t\tvars.absolute = false;\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tchild = children[i];\n\t\t\t\tif (child.nodeType !== 3 || /\\S+/.test(child.nodeValue)) {\n\t\t\t\t\tif (absolute && child.nodeType !== 3 && _getComputedStyle(child).display === \"inline\") { //if there's a child node that's display:inline, switch it to inline-block so that absolute positioning works properly (most browsers don't report offsetTop/offsetLeft properly inside a for example)\n\t\t\t\t\t\tchild.style.display = \"inline-block\";\n\t\t\t\t\t\tchild.style.position = \"relative\";\n\t\t\t\t\t}\n\t\t\t\t\tchild._isSplit = true;\n\t\t\t\t\t_split(child, vars, wordStart, charStart); //don't split lines on child elements\n\t\t\t\t}\n\t\t\t}\n\t\t\tvars.absolute = absolute;\n\t\t\telement._isSplit = true;\n\t\t\treturn;\n\t\t}\n\t\t_splitRawText(element, vars, wordStart, charStart);\n\t};\n\nexport class SplitText {\n\n\tconstructor(element, vars) {\n\t\tif (!_coreInitted) {\n\t\t\t_initCore();\n\t\t}\n\t\tthis.elements = _toArray(element);\n\t\tthis.chars = [];\n\t\tthis.words = [];\n\t\tthis.lines = [];\n\t\tthis._originals = [];\n\t\tthis.vars = vars || {};\n\t\tif (_bonusValidated) {\n\t\t\tthis.split(vars);\n\t\t}\n\t}\n\n\tsplit(vars) {\n\t\tif (this.isSplit) {\n\t\t\tthis.revert();\n\t\t}\n\t\tthis.vars = vars = vars || this.vars;\n\t\tthis._originals.length = this.chars.length = this.words.length = this.lines.length = 0;\n\t\tlet i = this.elements.length,\n\t\t\ttag = vars.tag ? vars.tag : (vars.span ? \"span\" : \"div\"),\n\t\t\twordStart = _cssClassFunc(vars.wordsClass, tag),\n\t\t\tcharStart = _cssClassFunc(vars.charsClass, tag),\n\t\t\torigHeight, origWidth, e;\n\t\t//we split in reversed order so that if/when we position:absolute elements, they don't affect the position of the ones after them in the document flow (shifting them up as they're taken out of the document flow).\n\t\twhile (--i > -1) {\n\t\t\te = this.elements[i];\n\t\t\tthis._originals[i] = e.innerHTML;\n\t\t\torigHeight = e.clientHeight;\n\t\t\torigWidth = e.clientWidth;\n\t\t\t_split(e, vars, wordStart, charStart);\n\t\t\t_setPositionsAfterSplit(e, vars, this.chars, this.words, this.lines, origWidth, origHeight);\n\t\t}\n\t\tthis.chars.reverse();\n\t\tthis.words.reverse();\n\t\tthis.lines.reverse();\n\t\tthis.isSplit = true;\n\t\treturn this;\n\t}\n\n\trevert() {\n\t\tlet originals = this._originals;\n\t\tif (!originals) {\n\t\t\tthrow(\"revert() call wasn't scoped properly.\");\n\t\t}\n\t\tthis.elements.forEach((e, i) => e.innerHTML = originals[i]);\n\t\tthis.chars = [];\n\t\tthis.words = [];\n\t\tthis.lines = [];\n\t\tthis.isSplit = false;\n\t\treturn this;\n\t}\n\n\tstatic create(element, vars) {\n\t\treturn new SplitText(element, vars);\n\t}\n\n}\n\nSplitText.version = \"3.2.1\";\n\nexport { SplitText as default };"],"names":["emojiExp","_bonusValidated","element","_win","getComputedStyle","_toArray","value","leaveStrings","type","_isArray","_slice","call","_doc","querySelectorAll","_isAbsolute","vars","position","absolute","_findSpecialChars","text","chars","s","i","length","substr","_cssClassFunc","cssClass","tag","iterate","indexOf","num","split","join","_swapText","oldText","newText","nodeType","firstChild","nextSibling","nodeValue","_pushReversed","a","merge","push","_isBeforeWordDelimiter","e","root","wordDelimiter","next","_next","textContent","charAt","parentNode","_parent","_deWordify","child","children","childNodes","l","_isSplit","previousSibling","insertBefore","removeChild","_getStyleAsNumber","name","computedStyle","parseFloat","_setPositionsAfterSplit","allChars","allWords","allLines","origWidth","origHeight","j","node","nodes","isChild","curLine","addWordSpaces","style","lineNode","lineWidth","offset","cs","_getComputedStyle","paddingLeft","lineOffsetY","borderTopAndBottom","borderLeftAndRight","padTopAndBottom","padLeftAndRight","lineThreshold","textAlign","charArray","wordArray","lineArray","span","types","lines","words","linesClass","iterateLine","spaceNodesToRemove","getElementsByTagName","offsetTop","Math","abs","nodeName","_x","offsetLeft","_y","_w","offsetWidth","_h","offsetHeight","_wordEnd","left","top","display","width","height","appendChild","_isFirst","splice","createTextNode","innerHTML","createElement","offsetParent","cssText","className","String","fromCharCode","clientHeight","clientWidth","_splitRawText","wordStart","charStart","splitText","character","hasTagStart","testResult","space","wordEnd","wordIsOpen","specialChars","container","parent","getText","result","reduceWhiteSpace","replace","_multipleSpacesExp","_stripExp","charCodeAt","outerHTML","_split","test","_coreInitted","Array","isArray","slice","SplitText","this","isSplit","revert","_originals","elements","wordsClass","charsClass","reverse","originals","forEach","create","_initCore","document","window","version"],"mappings":"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"}