vCarousel/src/exampleFlickity.js

74 lines
3.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// Exemple d'utilisation de vCarousel avec 3 vidéos, proposées via un carrousel d'images Flickity
var Flickity = require("flickity");
var vCarousel_1 = require("./vCarousel");
// Cette fonction sert à synchroniser si besoin l'image sélectionnée dans le carrousel Flickity avec le hash de l'url.
var selectFlickityForHash = function (flickityCarousel, urlHash) {
var nb = 0, find = false;
// On parcourt les items du carrousel pour trouver celui contenant le lien vers ce hash.
for (var _i = 0, _a = flickityCarousel.cells; _i < _a.length; _i++) {
var cel = _a[_i];
var childrens = cel.element.childNodes;
for (var i = 0, c = childrens.length; i < c; i++) {
if (childrens[i].nodeType === Node.ELEMENT_NODE) {
if (childrens[i].hash != undefined && childrens[i].hash === urlHash) {
flickityCarousel.select(nb); // API Flickity : https://flickity.metafizzy.co/api.html
find = true;
break;
}
}
}
nb++;
}
if (find === false)
console.error("L'ancre fournie par l'url n'a pas été trouvée dans le carrousel Flickity.");
};
try {
// Initialisation Flickity :
var imgCarousel = document.querySelector(".img-carousel");
var flktyCarousel_1 = new Flickity(imgCarousel, {
// options : https://flickity.metafizzy.co/options.html
accessibility: true,
cellAlign: "center",
contain: true,
rightToLeft: true,
wrapAround: true,
});
// Initialisation vCarousel :
var videosContainers = ["vFunanbule", "vForgeron", "vCircuit"];
var testvCarousel_1 = new vCarousel_1.vCarousel();
testvCarousel_1.vContainers = videosContainers;
// Si un id est fourni par l'url, on affiche cette vidéo en premier :
if (window.location.hash !== undefined && window.location.hash !== "") {
testvCarousel_1.firstVideoId = window.location.hash.replace("#", "");
selectFlickityForHash(flktyCarousel_1, location.hash);
}
else
testvCarousel_1.firstVideoId = ""; // dans cet exemple, on cache toutes les vidéos avant que l'utilisateur ne fasse son choix dans le carrousel d'images.
testvCarousel_1.run();
// Lorsque l'utilisateur clique sur une des images pour sélectionner une vidéo à afficher, on actualise l'affichage :
var selectLinks = document.querySelectorAll(".selectVideo");
var _loop_1 = function (i) {
var link = selectLinks[i];
link.addEventListener("click", function (e) {
testvCarousel_1.firstVideoId = link.hash.replace("#", "");
// ici on demande la lecture automatique de toutes les vidéos :
testvCarousel_1.playFirstVideo = true;
testvCarousel_1.playNextVideo = true;
testvCarousel_1.run();
});
};
for (var i = 0; i < selectLinks.length; i++) {
_loop_1(i);
}
// De même quand le hash change, on adapte l'item sélectionné de flickity
// Ceci permet de suivre le parcours des vidéos par vCarousel
window.addEventListener('hashchange', function () {
selectFlickityForHash(flktyCarousel_1, location.hash);
});
}
catch (e) {
console.error(e);
}