|
|
const intersectionObserverRegistry = new Object();
|
|
|
function setIntersectionObserverRegistry(parametre, valeur)
|
|
|
{
|
|
|
intersectionObserverRegistry[parametre] = valeur;
|
|
|
}
|
|
|
function getIntersectionObserverRegistry(parametre)
|
|
|
{
|
|
|
return intersectionObserverRegistry[parametre];
|
|
|
}
|
|
|
function entryVisiblity(_id, _visible) {
|
|
|
let entry=getIntersectionObserverRegistry(_id);
|
|
|
if (entry) return entry(_visible);
|
|
|
return consoleLog(_id, _visible)
|
|
|
}
|
|
|
|
|
|
// Create a function that will handle any intersection between some elements and the viewport.
|
|
|
const handleIntersectionObserverEntries = function (entries) {
|
|
|
entries.forEach(entry => {
|
|
|
if (typeof entryVisiblity === 'function') entryVisiblity(entry.target.id, entry.isIntersecting);
|
|
|
});
|
|
|
}
|
|
|
const intersectionObserver = new IntersectionObserver(handleIntersectionObserverEntries);
|
|
|
|
|
|
function addIntersectionObserverEntry(_id, _func)
|
|
|
{
|
|
|
let item = document.querySelector('#'+_id);
|
|
|
if ((item) && (intersectionObserver)) {
|
|
|
setIntersectionObserverRegistry(_id, _func);
|
|
|
intersectionObserver.observe(item);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function consoleLog(_id, _visible) {
|
|
|
if (_visible) {
|
|
|
console.log(_id + ' is Visible');
|
|
|
} else {
|
|
|
console.log(_id + ' is NOT Visible');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function scrollToElement(elementSelector) {
|
|
|
let element = document.querySelector(elementSelector);
|
|
|
if (element) element.scrollIntoView({ behavior: 'smooth' });
|
|
|
}
|
|
|
|
|
|
function beforeHeaderVisibility(_visible) {
|
|
|
console.log('TRIGGER beforeHeaderVisibility');
|
|
|
if (_visible) {
|
|
|
console.log('HEADER is Visible');
|
|
|
} else {
|
|
|
console.log('HEADER is NOT Visible');
|
|
|
scrollToElement('#before_nav');
|
|
|
}
|
|
|
}
|
|
|
function afterHeaderVisibility(_visible) {
|
|
|
console.log('TRIGGER afterHeaderVisibility');
|
|
|
if (_visible) {
|
|
|
scrollToElement('#before_header');
|
|
|
} else {
|
|
|
console.log('HEADER is NOT Visible');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function beforeNavVisibility(_visible) {
|
|
|
console.log('TRIGGER beforeNavVisibility');
|
|
|
let synthese=document.querySelector('#synthese');
|
|
|
if (synthese) {
|
|
|
if (_visible) {
|
|
|
synthese.style.display="block";
|
|
|
} else {
|
|
|
synthese.style.display="none";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
addIntersectionObserverEntry("before_header", beforeHeaderVisibility);
|
|
|
addIntersectionObserverEntry("after_header", afterHeaderVisibility);
|
|
|
|
|
|
addIntersectionObserverEntry("before_nav", beforeNavVisibility);
|
|
|
*/
|