vevet
Version:
Vevet is a JavaScript library for creative development that simplifies crafting rich interactions like split text animations, carousels, marquees, preloading, and more.
42 lines • 1.82 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { doc } from '../../../internal/env';
import { wrapLetters } from './wrapLetters';
import { wrapWords } from './wrapWords';
/**
* Splits text in the container into words and optionally into letters.
*/
export function splitBase(_a) {
var { container, letterClassName, wordClassName, hasLetters, letterTag, wordTag, ignore } = _a, props = __rest(_a, ["container", "letterClassName", "wordClassName", "hasLetters", "letterTag", "wordTag", "ignore"]);
// Prepare the fragment
const prepareFragment = doc.createDocumentFragment();
while (container.childNodes[0]) {
prepareFragment.appendChild(container.childNodes[0]);
}
// Wrap the text into words
const wordsMeta = wrapWords(Object.assign(Object.assign({}, props), { container: prepareFragment, classname: wordClassName, tagName: wordTag, ignore }));
const lettersMeta = [];
// If enabled, wrap words into letters
if (hasLetters) {
const wrappedLetters = wrapLetters({
wordsMeta,
classname: letterClassName,
tagName: letterTag,
ignore,
});
lettersMeta.push(...wrappedLetters.lettersMeta);
}
// Append the prepared fragment
container.appendChild(prepareFragment);
return { wordsMeta, lettersMeta };
}
//# sourceMappingURL=splitBase.js.map