first commit
This commit is contained in:
48
public/js/modules/textsplitter.js
Normal file
48
public/js/modules/textsplitter.js
Normal file
@@ -0,0 +1,48 @@
|
||||
CNVS.TextSplitter = function() {
|
||||
var __core = SEMICOLON.Core;
|
||||
|
||||
var _getText = function(element) {
|
||||
return element.textContent || element.innerText;
|
||||
};
|
||||
|
||||
var _joiner = function(arr, joiner='span', glue=' ') {
|
||||
return arr.map( function(chunk) {
|
||||
return '<'+ joiner +'>' + chunk + '</'+ joiner +'>';
|
||||
}).join(glue);
|
||||
};
|
||||
|
||||
var _words = function(element, joiner='span') {
|
||||
return _joiner(_getText(element).split(' '), joiner, ' ');
|
||||
};
|
||||
|
||||
var _letters = function(element, joiner='span') {
|
||||
return _joiner(_getText(element).split(''), joiner, '');
|
||||
};
|
||||
|
||||
var _splitter = function(el, type = 'word') {
|
||||
el.innerHTML = type == 'letter' ? _letters(el) : _words(el);
|
||||
|
||||
el.querySelectorAll('span')?.forEach( function(elem, index) {
|
||||
elem.style.setProperty('--cnvs-split-index', index + 1);
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
init: function(selector) {
|
||||
if( __core.getSelector(selector, false, false).length < 1 ){
|
||||
return true;
|
||||
}
|
||||
|
||||
selector = __core.getSelector( selector, false );
|
||||
if( selector.length < 1 ){
|
||||
return true;
|
||||
}
|
||||
|
||||
selector.forEach( function(el) {
|
||||
var type = el.getAttribute('data-split-type') || 'word';
|
||||
|
||||
_splitter(el, type);
|
||||
});
|
||||
}
|
||||
};
|
||||
}();
|
||||
Reference in New Issue
Block a user