2021-03-31 18:14:03 +02:00
/******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , { enumerable : true , get : getter } ) ;
/******/ }
/******/ } ;
/******/
/******/ // define __esModule on exports
/******/ _ _webpack _require _ _ . r = function ( exports ) {
/******/ if ( typeof Symbol !== 'undefined' && Symbol . toStringTag ) {
/******/ Object . defineProperty ( exports , Symbol . toStringTag , { value : 'Module' } ) ;
/******/ }
/******/ Object . defineProperty ( exports , '__esModule' , { value : true } ) ;
/******/ } ;
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ _ _webpack _require _ _ . t = function ( value , mode ) {
/******/ if ( mode & 1 ) value = _ _webpack _require _ _ ( value ) ;
/******/ if ( mode & 8 ) return value ;
/******/ if ( ( mode & 4 ) && typeof value === 'object' && value && value . _ _esModule ) return value ;
/******/ var ns = Object . create ( null ) ;
/******/ _ _webpack _require _ _ . r ( ns ) ;
/******/ Object . defineProperty ( ns , 'default' , { enumerable : true , value : value } ) ;
/******/ if ( mode & 2 && typeof value != 'string' ) for ( var key in value ) _ _webpack _require _ _ . d ( ns , key , function ( key ) { return value [ key ] ; } . bind ( null , key ) ) ;
/******/ return ns ;
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/
/******/ // Load entry module and return exports
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = "./src/example.ts" ) ;
/******/ } )
/************************************************************************/
/******/ ( {
/***/ "./src/example.ts" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / src / example . ts * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no exports provided */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
_ _webpack _require _ _ . r ( _ _webpack _exports _ _ ) ;
2021-04-01 17:20:09 +02:00
/* harmony import */ var _vCarousel _ _WEBPACK _IMPORTED _MODULE _0 _ _ = _ _webpack _require _ _ ( /*! ./vCarousel */ "./src/vCarousel.ts" ) ;
2021-03-31 18:14:03 +02:00
/// Exemple d'utilisation de vCarousel avec 3 vidéos
try {
2021-04-01 12:58:47 +02:00
// Liste des id des contenants des vidéos à afficher :
var videosContainers _1 = [ "vFunanbule" , "vForgeron" , "vCircuit" ] ;
// Si un id est fourni par l'url, on affiche cette vidéo en premier :
2021-04-06 18:28:15 +02:00
if ( window . location . hash !== undefined && window . location . hash !== "" )
2021-04-01 17:20:09 +02:00
Object ( _vCarousel _ _WEBPACK _IMPORTED _MODULE _0 _ _ [ "vCarousel" ] ) ( videosContainers _1 , window . location . hash . replace ( "#" , "" ) ) ;
else
2021-04-06 18:28:15 +02:00
Object ( _vCarousel _ _WEBPACK _IMPORTED _MODULE _0 _ _ [ "vCarousel" ] ) ( videosContainers _1 ) ; // le deuxième paramètre est facultatif sauf si on souhaite qu'une des vidéos soit affichée par défaut
2021-04-01 12:58:47 +02:00
// Dans le cas où l'utilisateur clique 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 ) {
2021-04-01 17:20:09 +02:00
Object ( _vCarousel _ _WEBPACK _IMPORTED _MODULE _0 _ _ [ "vCarousel" ] ) ( videosContainers _1 , link . hash . replace ( "#" , "" ) ) ;
2021-04-01 12:58:47 +02:00
} ) ;
} ;
for ( var i = 0 ; i < selectLinks . length ; i ++ ) {
_loop _1 ( i ) ;
}
2021-03-31 18:14:03 +02:00
}
catch ( e ) {
console . error ( e ) ;
}
/***/ } ) ,
/***/ "./src/vCarousel.ts" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / src / vCarousel . ts * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! exports provided: vCarousel */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
_ _webpack _require _ _ . r ( _ _webpack _exports _ _ ) ;
/* harmony export (binding) */ _ _webpack _require _ _ . d ( _ _webpack _exports _ _ , "vCarousel" , function ( ) { return vCarousel ; } ) ;
2021-04-01 12:58:47 +02:00
/// La fonction vCarousel reçoit un tableau d'ids des conteneurs HTML des vidéos à afficher successivement.
2021-04-01 17:20:09 +02:00
/// Le tableau n'est pas dédoublonné, pour rester libre d'afficher plusieurs fois la même vidéo durant un tour du carrousel.
2021-04-06 18:28:15 +02:00
/// On peut éventuellement fournir l'id du conteneur de la première vidéo à afficher lors de l'appel
/// Ou encore indiqué qu'aucune ne doit être affichée sans action en passant une chaîne vide
/// Par défaut la première vidéo de la liste sera affichée
2021-04-01 12:58:47 +02:00
var vCarousel = function ( vContainers , firstVideoId ) {
// On commence par vérifier que les ids de conteneurs fournis sont correctes.
// C'est-à-dire qu'il s'agit bien d'éléments HTML contenant au moins une vidéo.
2021-03-31 18:14:03 +02:00
var realVContainers = [ ] ;
for ( var _i = 0 , vContainers _1 = vContainers ; _i < vContainers _1 . length ; _i ++ ) {
2021-04-01 12:58:47 +02:00
var containerId = vContainers _1 [ _i ] ;
var checkContainerExist = document . getElementById ( containerId ) ;
if ( checkContainerExist === null )
console . error ( "Aucun élément HTML trouvé dans la page pour l'id fourni " + containerId ) ;
2021-03-31 18:14:03 +02:00
else {
2021-04-01 12:58:47 +02:00
var checkVideoExist = document . querySelector ( "#" + containerId + " video" ) ;
2021-03-31 18:14:03 +02:00
if ( checkVideoExist === null )
2021-04-01 12:58:47 +02:00
console . error ( "Aucune balise vidéo trouvée dans l'élément HTML ayant comme id " + containerId ) ;
2021-03-31 18:14:03 +02:00
else
2021-04-01 12:58:47 +02:00
realVContainers . push ( { id : containerId , containerElt : checkContainerExist , videoElt : checkVideoExist } ) ;
2021-03-31 18:14:03 +02:00
}
}
2021-04-01 12:58:47 +02:00
// Si firstVideoId a été fourni, on vérifie aussi qu'il est valide.
2021-04-06 18:28:15 +02:00
if ( firstVideoId !== undefined && firstVideoId !== "" && ( realVContainers . findIndex ( function ( video ) { return video . id === firstVideoId ; } ) === - 1 ) ) {
2021-04-01 12:58:47 +02:00
console . error ( "Vous avez fourni l'id de la vidéo à afficher en premier (" + firstVideoId + "), mais il n'est pas valide." ) ;
2021-04-06 18:28:15 +02:00
firstVideoId = undefined ;
2021-04-01 12:58:47 +02:00
}
2021-04-01 17:20:09 +02:00
// Il doit rester au moins deux vidéos à faire tourner.
2021-04-01 12:58:47 +02:00
var nbVContainers = realVContainers . length ;
if ( nbVContainers < 2 )
2021-03-31 18:14:03 +02:00
console . error ( "Il faut fournir au moins deux conteneurs valides pour faire tourner le carrousel." ) ;
else {
var _loop _1 = function ( i ) {
2021-04-01 12:58:47 +02:00
var vContainer = realVContainers [ i ] . containerElt ;
2021-03-31 18:14:03 +02:00
var video = realVContainers [ i ] . videoElt ;
2021-04-06 18:28:15 +02:00
if ( ( firstVideoId !== undefined && realVContainers [ i ] . id !== firstVideoId ) || ( firstVideoId === undefined && i !== 0 ) || firstVideoId === "" )
2021-04-01 12:58:47 +02:00
vContainer . style . display = "none" ;
else
2021-04-01 17:20:09 +02:00
vContainer . style . display = "block" ; // nécessaire dans le cas d'un réaffichage.
2021-03-31 18:14:03 +02:00
video . addEventListener ( "ended" , function ( ) {
2021-04-01 12:58:47 +02:00
vContainer . style . display = "none" ;
var nextVContainer , nextHash ;
if ( i < ( nbVContainers - 1 ) ) {
nextVContainer = realVContainers [ i + 1 ] . containerElt ;
nextHash = realVContainers [ i + 1 ] . id ;
}
else {
nextVContainer = realVContainers [ 0 ] . containerElt ;
nextHash = realVContainers [ 0 ] . id ;
}
nextVContainer . style . display = "block" ;
2021-04-01 17:20:09 +02:00
// On adapte l'ancre de l'url de manière à ce qu'elle soit cohérente avec la vidéo affichée.
// Attention car cela peut provoquer un déplacement dans la page la première fois pour atteindre l'ancre.
2021-04-01 12:58:47 +02:00
window . location . assign ( "#" + nextHash ) ;
2021-03-31 18:14:03 +02:00
} ) ;
} ;
2021-04-01 17:20:09 +02:00
// Tous les conteneurs sont cachés, sauf celui demandé.
// La fin de lecture d'une vidéo provoque son remplacement par la suivante.
2021-04-01 12:58:47 +02:00
for ( var i = 0 ; i < nbVContainers ; i ++ ) {
2021-03-31 18:14:03 +02:00
_loop _1 ( i ) ;
}
}
} ;
/***/ } )
/******/ } ) ;
2021-04-06 18:28:15 +02:00
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V4YW1wbGUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3ZDYXJvdXNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQUE7QUFBQTtBQUN3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUztBQUNqQjtBQUNBLFFBQVEsNERBQVMscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFTO0FBQ3JCLFNBQVM7QUFDVDtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDeEJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsMkJBQTJCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxnRkFBZ0Y7QUFDdEg7QUFDQTtBQUNBO0FBQ0EsMEdBQTBHLGtDQUFrQyxFQUFFO0FBQzlJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9KUy9leGFtcGxlLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQ