HEX
Server: Apache
System: Linux webd003.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: slyfwmm (169339)
PHP: 8.1.34
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/slyfwmm/dallavitae/OLD_WP/wp-content/themes/skrollex/assets/js/widgets/text-bg.js
"use strict"; var $ = jQuery;
module.exports = function($context, script){
	var tools = require('../tools/tools.js');
	var isAndroid = $('html').hasClass('android-browser');
	var isNoAnimations = $('html').hasClass('no-animations');
	var isPoorBrowser = $('html').hasClass('poor-browser');
	var isSafari = $('html').hasClass('safari');
	if(isAndroid || isNoAnimations || isPoorBrowser){
		return;
	}
	$context.find('.text-bg').each(function(i){
		var $cont = $(this);
		$cont.find($cont.data('text-effect-selector')).each(function(j){
			var $el = $(this).addClass('text-bg-svg svg-effect');
			var lines = [];
			$el.contents().filter(function() { 
				return !!$.trim( this.innerHTML || this.data ); 
			}).each(function(i){
				var $line = $(this);
				lines.push($line.text());
			});
			var onResize = function(){
				var svgW;
				var svgH;
				var effect = function(pat, s, svg) {
					s.attr({width: '100%', height: '100%'})
					var text = s.text(0, 0, lines).attr({fill:tools.snapUrl(pat)});
					$el.empty().append(svg);
					svgW = $el.width();
					var lh = parseFloat($el.css('line-height').replace('px', ''));
					var elAl = $el.css('text-align');
					text.selectAll("tspan").forEach(function(tspan, i){
						tspan.attr({dy: lh});
						if(elAl === 'right'){
							tspan.attr({x: svgW, 'text-anchor': 'end'});
						}else if(elAl === 'center'){
							tspan.attr({x: Math.round(svgW/2), 'text-anchor': 'middle'});
						}else{
							tspan.attr({x: 0, 'text-anchor': 'start'});
						}
					});
					svgH = Math.round(lines.length * lh + lh/5);
					$el.height(svgH);
					s.attr({viewBox: '0 0 '+svgW+' '+svgH});
				}
				var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
				var s = Snap(svg);
				var animate = function(pat, inAttr, outAttr, dur, ease){
					var animIn = function(){
						this.animate(inAttr, dur, ease, animOut);
					}
					var animOut = function(){
						this.animate(outAttr, dur, ease, animIn);
					};

					if($cont.data('text-effect').indexOf('animated') !== -1){
						var playerPause = false;
						var paused = false;
						pat.animate(outAttr, dur, ease, animIn);
						if($cont.data('text-effect') === 'custom-animated' || isSafari){
							var timer = null;
							$(window).scroll(function(e){
								clearTimeout(timer);
								if(!paused){
									paused = true;
									if(!playerPause){
										pat.inAnim()[0].mina.pause();
									}
								}
								timer = setTimeout(function(){
									paused = false;
									if(!playerPause){
										pat.animate({ dummy: 0 } ,1);
										pat.inAnim()[0].mina.resume();
									}
								}, 100);
							});
						}
						var pause = function(){
							playerPause = true;
							if(!paused){
								pat.inAnim()[0].mina.pause();
							}
						}
						var resume = function(){
							playerPause = false;
							if(!paused){
								pat.animate({ dummy: 0 } ,1);
								pat.inAnim()[0].mina.resume();
							}
						}
						var start = resume;
						script.players.addPlayer($cont, start, pause, resume);
					}
				};
				if($cont.data('text-effect').indexOf('custom') !== -1){
					var imgUrl = $cont.data('text-bg');
					if(imgUrl){
						var img = new Image();
						img.onload = function() {
							var iw = this.width;
							var ih = this.height;
							var dur = 30000;
							var ease = mina.easeinout;
							var pat = s.image(imgUrl, 0, 0, iw, ih)
								.toPattern(0, 0, iw, ih)
								.attr({patternUnits: 'userSpaceOnUse'});
							effect(pat, s, svg);
							var outAttr = {x:(svgW - iw), y:(svgH - ih)};
							var inAttr = {x:0, y:0};
							animate(pat, inAttr, outAttr, dur, ease);
						}
						img.src = imgUrl;
					}
				}else if($cont.data('text-effect') !== 'no'){
					var pw = 300;
					var dur = 30000;
					var ease = mina.easeinout;
					var ph = $el.height();
					var r1 = s.rect().attr({width: "100%", height: ph}).addClass('fill-highlight');
					var r2 = s.rect().attr({width: "90%", height: ph}).addClass('fill-heading');
					var r3 = s.rect().attr({width: "50%", height: ph}).addClass('fill-highlight');
					var r4 = s.rect().attr({width: "20%", height: ph}).addClass('fill-heading');
					var pat = s.g(r1, r2, r3, r4)
						.toPattern(0, 0, pw, ph)
						.attr({patternUnits: 'userSpaceOnUse', preserveAspectRatio: 'none'});
					if($cont.data('text-effect').indexOf('effect-b-') !== -1){
						pat.attr({transform: 'rotate(-45deg)'});
					}
					effect(pat, s, svg);
					var outAttr = {width: 50};
					var inAttr = {width: pw};
					animate(pat, inAttr, outAttr, dur, ease);
				}
			};
			$(window).resize(onResize);
			onResize();
		});
	});
};