Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« MediaWiki:Gadget-Accueil.glow.js » : différence entre les versions

Page de l’interface de MediaWiki
WikiThionvilleSyncBot (discussion | contributions)
Sync homepage from repository (commit b06f0a0)
 
WikiThionvilleSyncBot (discussion | contributions)
Sync homepage from repository (commit 0e34c54)
 
Ligne 1 : Ligne 1 :
( function ( mw ) {
( function ( mw ) {
'use strict';
"use strict";


var accueil = mw.libs && mw.libs.wikithionvilleAccueil;
const accueil = mw.libs && mw.libs.wikithionvilleAccueil;
if (!accueil) return;


if ( !accueil ) {
accueil.initCardGlow = ( listener, container ) => {
return;
if (!listener || !container || accueil.reduceMotion)
}
return;


accueil.initCardGlow = function ( listener, container ) {
let frame = null;
var cards;
var frame = null;


const pointerEventName =  
const pointerEventName =  
window.PointerEvent
window.PointerEvent
? 'pointermove'
? "pointermove"
: 'mousemove';
: "mousemove";


if ( !listener || !container || accueil.reduceMotion ) {
const cards = listener.querySelectorAll(".home-card");
return;
}


cards = listener.querySelectorAll( '.home-card' );
if (!cards.length) return;
 
if ( !cards.length ) {
return;
}


function moveGlows(event) {
function moveGlows(event) {
if (!event) return;
if (!event) return;


var index;
frame = null;
var card;
var glow;
var origin;
var rect;
var transform;
var bounds;
var posX;
var posY;


frame = null;
const bounds = container.getBoundingClientRect();
const posX = accueil.clamp(event.clientX, bounds.left, bounds.right);
const posY = accueil.clamp(event.clientY, bounds.top, bounds.bottom);
 
for (const card of cards) {
const glow = card.querySelector(".home-card__glow");
const origin = card.querySelector(".home-card__glow-origin") || glow;


bounds = container.getBoundingClientRect();
if ( !glow || !origin ) continue;
posX = accueil.clamp( event.clientX, bounds.left, bounds.right );
posY = accueil.clamp( event.clientY, bounds.top, bounds.bottom );


for ( index = 0; index < cards.length; index++ ) {
const rect = origin.getBoundingClientRect();
card = cards[ index ];
glow = card.querySelector( '.home-card__glow' );
origin = card.querySelector( '.home-card__glow-origin' ) || glow;


if ( !glow || !origin ) {
const translateX = posX - rect.left - rect.width / 2;
continue;
const translateY = posY - rect.top - rect.height / 2;
}


rect = origin.getBoundingClientRect();
const transform = `translate3d(${translateX}px, ${translateY}px, 0)`;
transform = 'translate3d(' +
( posX - rect.left - rect.width / 2 ) + 'px, ' +
( posY - rect.top - rect.height / 2 ) + 'px, 0)';


if ( glow.animate ) {
glow.style.transform = transform;
glow.animate(
[ { transform: transform } ],
{ duration: 200, fill: 'forwards' }
);
} else {
glow.style.transform = transform;
}
}
}
}
}


function rAF(event) {
function rAF(event) {
if ( frame === null ) {
if (frame) return;
frame = window.requestAnimationFrame(() => {
moveGlows(event)
frame = window.requestAnimationFrame(() => {
});
moveGlows(event)
}
});
}
}


listener.addEventListener(pointerEventName, rAF, { passive: true } );
listener.addEventListener(pointerEventName, rAF, { passive: true });
listener.addEventListener("wheel", rAF, { passive: true });
listener.addEventListener("wheel", rAF, { passive: true });
};
};
}( mediaWiki ) );
}( mediaWiki ) );

Dernière version du 12 juin 2026 à 13:00

( function ( mw ) {
	"use strict";

	const accueil = mw.libs && mw.libs.wikithionvilleAccueil;
	if (!accueil) return;

	accueil.initCardGlow = ( listener, container ) => {
		if (!listener || !container || accueil.reduceMotion)
			return;

		let frame = null;

		const pointerEventName = 
			window.PointerEvent
			? "pointermove"
			: "mousemove";

		const cards = listener.querySelectorAll(".home-card");

		if (!cards.length) return;

		function moveGlows(event) {
			if (!event) return;

			frame = null;

			const bounds = container.getBoundingClientRect();
			const posX = accueil.clamp(event.clientX, bounds.left, bounds.right);
			const posY = accueil.clamp(event.clientY, bounds.top, bounds.bottom);

			for (const card of cards) {
				const glow = card.querySelector(".home-card__glow");
				const origin = card.querySelector(".home-card__glow-origin") || glow;

				if ( !glow || !origin ) continue;

				const rect = origin.getBoundingClientRect();

				const translateX = posX - rect.left - rect.width / 2;
				const translateY = posY - rect.top - rect.height / 2;

				const transform = `translate3d(${translateX}px, ${translateY}px, 0)`;

				glow.style.transform = transform;
			}
		}

		function rAF(event) {
			if (frame) return;
			
			frame = window.requestAnimationFrame(() => {
				moveGlows(event)
			});
		}

		listener.addEventListener(pointerEventName, rAF, { passive: true });
		listener.addEventListener("wheel", rAF,	{ passive: true });
	};
}( mediaWiki ) );