diff --git a/public/JS/example.app.js b/public/JS/example.app.js index fe7a550..3b8a6b1 100644 --- a/public/JS/example.app.js +++ b/public/JS/example.app.js @@ -102,10 +102,10 @@ try { // 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 : - if (window.location.hash !== undefined) + if (window.location.hash !== undefined && window.location.hash !== "") Object(_vCarousel__WEBPACK_IMPORTED_MODULE_0__["vCarousel"])(videosContainers_1, window.location.hash.replace("#", "")); else - Object(_vCarousel__WEBPACK_IMPORTED_MODULE_0__["vCarousel"])(videosContainers_1); // le deuxième paramètre est facultatif + 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 // 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) { @@ -137,9 +137,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "vCarousel", function() { return vCarousel; }); /// La fonction vCarousel reçoit un tableau d'ids des conteneurs HTML des vidéos à afficher successivement. /// Le tableau n'est pas dédoublonné, pour rester libre d'afficher plusieurs fois la même vidéo durant un tour du carrousel. -/// On peut éventuellement fournir l'id de la première vidéo à afficher. +/// 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 var vCarousel = function (vContainers, firstVideoId) { - if (firstVideoId === void 0) { 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. var realVContainers = []; @@ -157,9 +158,9 @@ var vCarousel = function (vContainers, firstVideoId) { } } // Si firstVideoId a été fourni, on vérifie aussi qu'il est valide. - if (firstVideoId !== "" && (realVContainers.findIndex(function (video) { return video.id === firstVideoId; }) === -1)) { + if (firstVideoId !== undefined && firstVideoId !== "" && (realVContainers.findIndex(function (video) { return video.id === firstVideoId; }) === -1)) { console.error("Vous avez fourni l'id de la vidéo à afficher en premier (" + firstVideoId + "), mais il n'est pas valide."); - firstVideoId = ""; + firstVideoId = undefined; } // Il doit rester au moins deux vidéos à faire tourner. var nbVContainers = realVContainers.length; @@ -169,7 +170,7 @@ var vCarousel = function (vContainers, firstVideoId) { var _loop_1 = function (i) { var vContainer = realVContainers[i].containerElt; var video = realVContainers[i].videoElt; - if ((firstVideoId !== "" && realVContainers[i].id !== firstVideoId) || (firstVideoId === "" && i !== 0)) + if ((firstVideoId !== undefined && realVContainers[i].id !== firstVideoId) || (firstVideoId === undefined && i !== 0) || firstVideoId === "") vContainer.style.display = "none"; else vContainer.style.display = "block"; // nécessaire dans le cas d'un réaffichage. @@ -202,4 +203,4 @@ var vCarousel = function (vContainers, firstVideoId) { /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V4YW1wbGUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3ZDYXJvdXNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQUE7QUFBQTtBQUN3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUztBQUNqQjtBQUNBLFFBQVEsNERBQVMscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFTO0FBQ3JCLFNBQVM7QUFDVDtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDeEJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGtDQUFrQyxtQkFBbUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDJCQUEyQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsZ0ZBQWdGO0FBQ3RIO0FBQ0E7QUFDQTtBQUNBLDRFQUE0RSxrQ0FBa0MsRUFBRTtBQUNoSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vSlMvZXhhbXBsZS5hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9leGFtcGxlLnRzXCIpO1xuIiwiLy8vIEV4ZW1wbGUgZCd1dGlsaXNhdGlvbiBkZSB2Q2Fyb3VzZWwgYXZlYyAzIHZpZMOpb3NcbmltcG9ydCB7IHZDYXJvdXNlbCB9IGZyb20gXCIuL3ZDYXJvdXNlbFwiO1xudHJ5IHtcbiAgICAvLyBMaXN0ZSBkZXMgaWQgZGVzIGNvbnRlbmFudHMgZGVzIHZpZMOpb3Mgw6AgYWZmaWNoZXIgOiBcbiAgICB2YXIgdmlkZW9zQ29udGFpbmVyc18xID0gW1widkZ1bmFuYnVsZVwiLCBcInZGb3JnZXJvblwiLCBcInZDaXJjdWl0XCJdO1xuICAgIC8vIFNpIHVuIGlkIGVzdCBmb3VybmkgcGFyIGwndXJsLCBvbiBhZmZpY2hlIGNldHRlIHZpZMOpbyBlbiBwcmVtaWVyIDpcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggIT09IHVuZGVmaW5lZClcbiAgICAgICAgdkNhcm91c2VsKHZpZGVvc0NvbnRhaW5lcnNfMSwgd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZShcIiNcIiwgXCJcIikpO1xuICAgIGVsc2VcbiAgICAgICAgdkNhcm91c2VsKHZpZGVvc0NvbnRhaW5lcnNfMSk7IC8vIGxlIGRldXhpw6htZSBwYXJhbcOodHJlIGVzdCBmYWN1bHRhdGlmXG4gICAgLy8gRGFucyBsZSBjYXMgb8O5IGwndXRpbGlzYXRldXIgY2xpcXVlIHBvdXIgc8OpbGVjdGlvbm5lciB1bmUgdmlkw6lvIMOgIGFmZmljaGVyLCBvbiBhY3R1YWxpc2UgbCdhZmZpY2hhZ2UgOlxuICAgIHZhciBzZWxlY3RMaW5rcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc2VsZWN0VmlkZW9cIik7XG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICB2YXIgbGluayA9IHNlbGVjdExpbmtzW2ldO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdkNhcm91c2VsKHZpZGVvc0NvbnRhaW5lcnNfMSwgbGluay5oYXNoLnJlcGxhY2UoXCIjXCIsIFwiXCIpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdExpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIF9sb29wXzEoaSk7XG4gICAgfVxufVxuY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xufVxuIiwiLy8vIExhIGZvbmN0aW9uIHZDYXJvdXNlbCByZcOnb2l0IHVuIHRhYmxlYXUgZCdpZHMgZGVzIGNvbnRlbmV1cnMgSFRNTCBkZXMgdmlkw6lvcyDDoCBhZmZpY2hlciBzdWNjZXNzaXZlbWVudC5cbi8vLyBMZSB0YWJsZWF1IG4nZXN0IHBhcyBkw6lkb3VibG9ubsOpLCBwb3VyIHJlc3RlciBsaWJyZSBkJ2FmZmljaGVyIHBsdXNpZXVycyBmb2lzIGxhIG3Dqm1lIHZpZMOpbyBkdXJhbnQgdW4gdG91ciBkdSBjYXJyb3VzZWwuXG4vLy8gT24gcGV1dCDDqXZlbnR1ZWxsZW1lbnQgZm91cm5pciBsJ2lkIGRlIGxhIHByZW1pw6hyZSB2aWTDqW8gw6AgYWZmaWNoZXIuXG5leHBvcnQgdmFyIHZDYXJvdXNlbCA9IGZ1bmN0aW9uICh2Q29udGFpbmVycywgZmlyc3RWaWRlb0lkKSB7XG4gICAgaWYgKGZpcnN0VmlkZW9JZCA9PT0gdm9pZCAwKSB7IGZpcnN0VmlkZW9JZCA9IFwiXCI7IH1cbiAgICAvLyBPbiBjb21tZW5jZSBwYXIgdsOpcmlmaWVyIHF1ZSBsZXMgaWRzIGRlIGNvbnRlbmV1cnMgZm91cm5pcyBzb250IGNvcnJlY3Rlcy5cbiAgICAvLyBDJ2VzdC3DoC1kaXJlIHF1J2lsIHMnYWdpdCBiaWVuIGQnw6lsw6ltZW50cyBIVE1MIGNvbnRlbmFudCBhdSBtb2lucyB1bmUgdmlkw6lvLlxuICAgIHZhciByZWFsVkNvbnRhaW5lcnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDAsIHZDb250YWluZXJzXzEgPSB2Q29udGFpbmVyczsgX2kgPCB2Q29udGFpbmVyc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgY29udGFpbmVySWQgPSB2Q29udGFpbmVyc18xW19pXTtcbiAgICAgICAgdmFyIGNoZWNrQ29udGFpbmVyRXhpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZCk7XG4gICAgICAgIGlmIChjaGVja0NvbnRhaW5lckV4aXN0ID09PSBudWxsKVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1Y3VuIMOpbMOpbWVudCBIVE1MIHRyb3V2w6kgZGFucyBsYSBwYWdlIHBvdXIgbCdpZCBmb3VybmkgXCIgKyBjb250YWluZXJJZCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNoZWNrVmlkZW9FeGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjXCIgKyBjb250YWluZXJJZCArIFwiIHZpZGVvXCIpO1xuICAgICAgICAgICAgaWYgKGNoZWNrVmlkZW9FeGlzdCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQXVjdW5lIGJhbGlzZSB2aWTDqW8gdHJvdXbDqWUgZGFucyBsJ8OpbMOpbWVudCBIVE1MIGF5YW50IGNvbW1lIGlkIFwiICsgY29udGFpbmVySWQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlYWxWQ29udGFpbmVycy5wdXNoKHsgaWQ6IGNvbnRhaW5lcklkLCBjb250YWluZXJFbHQ6IGNoZWNrQ29udGFpbmVyRXhpc3QsIHZpZGVvRWx0OiBjaGVja1ZpZGVvRXhpc3QgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2kgZmlyc3RWaWRlb0lkIGEgw6l0w6kgZm91cm5pLCBvbiB2w6lyaWZpZSBhdXNzaSBxdSdpbCBlc3QgdmFsaWRlLlxuICAgIGlmIChmaXJzdFZpZGVvSWQgIT09IFwiXCIgJiYgKHJlYWxWQ29udGFpbmVycy5maW5kSW5kZXgoZnVuY3Rpb24gKHZpZGVvKSB7IHJldHVybiB2aWRlby5pZCA9PT0gZmlyc3RWaWRlb0lkOyB9KSA9PT0gLTEpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJWb3VzIGF2ZXogZm91cm5pIGwnaWQgZGUgbGEgdmlkw6lvIMOgIGFmZmljaGVyIGVuIHByZW1pZXIgKFwiICsgZmlyc3RWaWRlb0lkICsgXCIpLCBtYWlzIGlsIG4nZXN0IHBhcyB2YWxpZGUuXCIpO1xuICAgICAgICBmaXJzdFZpZGVvSWQgPSBcIlwiO1xuICAgIH1cbiAgICAvLyBJbCBkb2l0IHJlc3RlciBhdSBtb2lucyBkZXV4IHZpZMOpb3Mgw6AgZmFpcmUgdG91cm5lci5cbiAgICB2YXIgbmJWQ29udGFpbmVycyA9IHJlYWxWQ29udGFpbmVycy5sZW5ndGg7XG4gICAgaWYgKG5iVkNvbnRhaW5lcnMgPCAyKVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiSWwgZmF1dCBmb3VybmlyIGF1IG1vaW5zIGRldXggY29udGVuZXVycyB2YWxpZGVzIHBvdXIgZmFpcmUgdG91cm5lciBsZSBjYXJyb3VzZWwuXCIpO1xuICAgIGVsc2Uge1xuICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICB2YXIgdkNvbnRhaW5lciA9IHJlYWxWQ29udGFpbmVyc1tpXS5jb250YWluZXJFbHQ7XG4gICAgICAgICAgICB2YXIgdmlkZW8gPSByZWFsVkNvbnRhaW5lcnNbaV0udmlkZW9FbHQ7XG4gICAgICAgICAgICBpZiAoKGZpcnN0VmlkZW9JZCAhPT0gXCJcIiAmJiByZWFsVkNvbnRhaW5lcnNbaV0uaWQgIT09IGZpcnN0VmlkZW9JZCkgfHwgKGZpcnN0VmlkZW9JZCA9PT0gXCJcIiAmJiBpICE9PSAwKSlcbiAgICAgICAgICAgICAgICB2Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB2Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7IC8vIG7DqWNlc3NhaXJlIGRhbnMgbGUgY2FzIGQndW4gcsOpYWZmaWNoYWdlLlxuICAgICAgICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcihcImVuZGVkXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dFZDb250YWluZXIsIG5leHRIYXNoO1xuICAgICAgICAgICAgICAgIGlmIChpIDwgKG5iVkNvbnRhaW5lcnMgLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0VkNvbnRhaW5lciA9IHJlYWxWQ29udGFpbmVyc1tpICsgMV0uY29udGFpbmVyRWx0O1xuICAgICAgICAgICAgICAgICAgICBuZXh0SGFzaCA9IHJlYWxWQ29udGFpbmVyc1tpICsgMV0uaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0VkNvbnRhaW5lciA9IHJlYWxWQ29udGFpbmVyc1swXS5jb250YWluZXJFbHQ7XG4gICAgICAgICAgICAgICAgICAgIG5leHRIYXNoID0gcmVhbFZDb250YWluZXJzWzBdLmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXh0VkNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgICAgICAgICAgIC8vIE9uIGFkYXB0ZSBsJ2FuY3JlIGRlIGwndXJsIGRlIG1hbmnDqHJlIMOgIGNlIHF1J2VsbGUgc29pdCBjb2jDqXJlbnRlIGF2ZWMgbGEgdmlkw6lvIGFmZmljaMOpZS5cbiAgICAgICAgICAgICAgICAvLyBBdHRlbnRpb24gY2FyIGNlbGEgcGV1dCBwcm92b3F1ZXIgdW4gZMOpcGxhY2VtZW50IGRhbnMgbGEgcGFnZSBsYSBwcmVtacOocmUgZm9pcyBwb3VyIGF0dGVpbmRyZSBsJ2FuY3JlLlxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oXCIjXCIgKyBuZXh0SGFzaCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVG91cyBsZXMgY29udGVuZXVycyBzb250IGNhY2jDqXMsIHNhdWYgY2VsdWkgZGVtYW5kw6kuXG4gICAgICAgIC8vIExhIGZpbiBkZSBsZWN0dXJlIGQndW5lIHZpZMOpbyBwcm92b3F1ZSBzb24gcmVtcGxhY2VtZW50IHBhciBsYSBzdWl2YW50ZS5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYlZDb250YWluZXJzOyBpKyspIHtcbiAgICAgICAgICAgIF9sb29wXzEoaSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL2V4YW1wbGUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3ZDYXJvdXNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQUE7QUFBQTtBQUN3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBUztBQUNqQjtBQUNBLFFBQVEsNERBQVMscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFTO0FBQ3JCLFNBQVM7QUFDVDtBQUNBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDeEJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsMkJBQTJCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxnRkFBZ0Y7QUFDdEg7QUFDQTtBQUNBO0FBQ0EsMEdBQTBHLGtDQUFrQyxFQUFFO0FBQzlJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9KUy9leGFtcGxlLmFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2V4YW1wbGUudHNcIik7XG4iLCIvLy8gRXhlbXBsZSBkJ3V0aWxpc2F0aW9uIGRlIHZDYXJvdXNlbCBhdmVjIDMgdmlkw6lvc1xuaW1wb3J0IHsgdkNhcm91c2VsIH0gZnJvbSBcIi4vdkNhcm91c2VsXCI7XG50cnkge1xuICAgIC8vIExpc3RlIGRlcyBpZCBkZXMgY29udGVuYW50cyBkZXMgdmlkw6lvcyDDoCBhZmZpY2hlciA6IFxuICAgIHZhciB2aWRlb3NDb250YWluZXJzXzEgPSBbXCJ2RnVuYW5idWxlXCIsIFwidkZvcmdlcm9uXCIsIFwidkNpcmN1aXRcIl07XG4gICAgLy8gU2kgdW4gaWQgZXN0IGZvdXJuaSBwYXIgbCd1cmwsIG9uIGFmZmljaGUgY2V0dGUgdmlkw6lvIGVuIHByZW1pZXIgOlxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gdW5kZWZpbmVkICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoICE9PSBcIlwiKVxuICAgICAgICB2Q2Fyb3VzZWwodmlkZW9zQ29udGFpbmVyc18xLCB3aW5kb3cubG9jYXRpb24uaGFzaC5yZXBsYWNlKFwiI1wiLCBcIlwiKSk7XG4gICAgZWxzZVxuICAgICAgICB2Q2Fyb3VzZWwodmlkZW9zQ29udGFpbmVyc18xKTsgLy8gbGUgZGV1eGnDqG1lIHBhcmFtw6h0cmUgZXN0IGZhY3VsdGF0aWYgc2F1ZiBzaSBvbiBzb3VoYWl0ZSBxdSd1bmUgZGVzIHZpZMOpb3Mgc29pdCBhZmZpY2jDqWUgcGFyIGTDqWZhdXRcbiAgICAvLyBEYW5zIGxlIGNhcyBvw7kgbCd1dGlsaXNhdGV1ciBjbGlxdWUgcG91ciBzw6lsZWN0aW9ubmVyIHVuZSB2aWTDqW8gw6AgYWZmaWNoZXIsIG9uIGFjdHVhbGlzZSBsJ2FmZmljaGFnZSA6XG4gICAgdmFyIHNlbGVjdExpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5zZWxlY3RWaWRlb1wiKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHZhciBsaW5rID0gc2VsZWN0TGlua3NbaV07XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2Q2Fyb3VzZWwodmlkZW9zQ29udGFpbmVyc18xLCBsaW5rLmhhc2gucmVwbGFjZShcIiNcIiwgXCJcIikpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0TGlua3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMShpKTtcbiAgICB9XG59XG5jYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG59XG4iLCIvLy8gTGEgZm9uY3Rpb24gdkNhcm91c2VsIHJlw6dvaXQgdW4gdGFibGVhdSBkJ2lkcyBkZXMgY29udGVuZXVycyBIVE1MIGRlcyB2aWTDqW9zIMOgIGFmZmljaGVyIHN1Y2Nlc3NpdmVtZW50LlxuLy8vIExlIHRhYmxlYXUgbidlc3QgcGFzIGTDqWRvdWJsb25uw6ksIHBvdXIgcmVzdGVyIGxpYnJlIGQnYWZmaWNoZXIgcGx1c2lldXJzIGZvaXMgbGEgbcOqbWUgdmlkw6lvIGR1cmFudCB1biB0b3VyIGR1IGNhcnJvdXNlbC5cbi8vLyBPbiBwZXV0IMOpdmVudHVlbGxlbWVudCBmb3VybmlyIGwnaWQgZHUgY29udGVuZXVyIGRlIGxhIHByZW1pw6hyZSB2aWTDqW8gw6AgYWZmaWNoZXIgbG9ycyBkZSBsJ2FwcGVsXG4vLy8gT3UgZW5jb3JlIGluZGlxdcOpIHF1J2F1Y3VuZSBuZSBkb2l0IMOqdHJlIGFmZmljaMOpZSBzYW5zIGFjdGlvbiBlbiBwYXNzYW50IHVuZSBjaGHDrm5lIHZpZGVcbi8vLyBQYXIgZMOpZmF1dCBsYSBwcmVtacOocmUgdmlkw6lvIGRlIGxhIGxpc3RlIHNlcmEgYWZmaWNow6llXG5leHBvcnQgdmFyIHZDYXJvdXNlbCA9IGZ1bmN0aW9uICh2Q29udGFpbmVycywgZmlyc3RWaWRlb0lkKSB7XG4gICAgLy8gT24gY29tbWVuY2UgcGFyIHbDqXJpZmllciBxdWUgbGVzIGlkcyBkZSBjb250ZW5ldXJzIGZvdXJuaXMgc29udCBjb3JyZWN0ZXMuXG4gICAgLy8gQydlc3Qtw6AtZGlyZSBxdSdpbCBzJ2FnaXQgYmllbiBkJ8OpbMOpbWVudHMgSFRNTCBjb250ZW5hbnQgYXUgbW9pbnMgdW5lIHZpZMOpby5cbiAgICB2YXIgcmVhbFZDb250YWluZXJzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwLCB2Q29udGFpbmVyc18xID0gdkNvbnRhaW5lcnM7IF9pIDwgdkNvbnRhaW5lcnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGNvbnRhaW5lcklkID0gdkNvbnRhaW5lcnNfMVtfaV07XG4gICAgICAgIHZhciBjaGVja0NvbnRhaW5lckV4aXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpO1xuICAgICAgICBpZiAoY2hlY2tDb250YWluZXJFeGlzdCA9PT0gbnVsbClcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBdWN1biDDqWzDqW1lbnQgSFRNTCB0cm91dsOpIGRhbnMgbGEgcGFnZSBwb3VyIGwnaWQgZm91cm5pIFwiICsgY29udGFpbmVySWQpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjaGVja1ZpZGVvRXhpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI1wiICsgY29udGFpbmVySWQgKyBcIiB2aWRlb1wiKTtcbiAgICAgICAgICAgIGlmIChjaGVja1ZpZGVvRXhpc3QgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1Y3VuZSBiYWxpc2Ugdmlkw6lvIHRyb3V2w6llIGRhbnMgbCfDqWzDqW1lbnQgSFRNTCBheWFudCBjb21tZSBpZCBcIiArIGNvbnRhaW5lcklkKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZWFsVkNvbnRhaW5lcnMucHVzaCh7IGlkOiBjb250YWluZXJJZCwgY29udGFpbmVyRWx0OiBjaGVja0NvbnRhaW5lckV4aXN0LCB2aWRlb0VsdDogY2hlY2tWaWRlb0V4aXN0IH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNpIGZpcnN0VmlkZW9JZCBhIMOpdMOpIGZvdXJuaSwgb24gdsOpcmlmaWUgYXVzc2kgcXUnaWwgZXN0IHZhbGlkZS5cbiAgICBpZiAoZmlyc3RWaWRlb0lkICE9PSB1bmRlZmluZWQgJiYgZmlyc3RWaWRlb0lkICE9PSBcIlwiICYmIChyZWFsVkNvbnRhaW5lcnMuZmluZEluZGV4KGZ1bmN0aW9uICh2aWRlbykgeyByZXR1cm4gdmlkZW8uaWQgPT09IGZpcnN0VmlkZW9JZDsgfSkgPT09IC0xKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVm91cyBhdmV6IGZvdXJuaSBsJ2lkIGRlIGxhIHZpZMOpbyDDoCBhZmZpY2hlciBlbiBwcmVtaWVyIChcIiArIGZpcnN0VmlkZW9JZCArIFwiKSwgbWFpcyBpbCBuJ2VzdCBwYXMgdmFsaWRlLlwiKTtcbiAgICAgICAgZmlyc3RWaWRlb0lkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBJbCBkb2l0IHJlc3RlciBhdSBtb2lucyBkZXV4IHZpZMOpb3Mgw6AgZmFpcmUgdG91cm5lci5cbiAgICB2YXIgbmJWQ29udGFpbmVycyA9IHJlYWxWQ29udGFpbmVycy5sZW5ndGg7XG4gICAgaWYgKG5iVkNvbnRhaW5lcnMgPCAyKVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiSWwgZmF1dCBmb3VybmlyIGF1IG1vaW5zIGRldXggY29udGVuZXVycyB2YWxpZGVzIHBvdXIgZmFpcmUgdG91cm5lciBsZSBjYXJyb3VzZWwuXCIpO1xuICAgIGVsc2Uge1xuICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICB2YXIgdkNvbnRhaW5lciA9IHJlYWxWQ29udGFpbmVyc1tpXS5jb250YWluZXJFbHQ7XG4gICAgICAgICAgICB2YXIgdmlkZW8gPSByZWFsVkNvbnRhaW5lcnNbaV0udmlkZW9FbHQ7XG4gICAgICAgICAgICBpZiAoKGZpcnN0VmlkZW9JZCAhPT0gdW5kZWZpbmVkICYmIHJlYWxWQ29udGFpbmVyc1tpXS5pZCAhPT0gZmlyc3RWaWRlb0lkKSB8fCAoZmlyc3RWaWRlb0lkID09PSB1bmRlZmluZWQgJiYgaSAhPT0gMCkgfHwgZmlyc3RWaWRlb0lkID09PSBcIlwiKVxuICAgICAgICAgICAgICAgIHZDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHZDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjsgLy8gbsOpY2Vzc2FpcmUgZGFucyBsZSBjYXMgZCd1biByw6lhZmZpY2hhZ2UuXG4gICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKFwiZW5kZWRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0VkNvbnRhaW5lciwgbmV4dEhhc2g7XG4gICAgICAgICAgICAgICAgaWYgKGkgPCAobmJWQ29udGFpbmVycyAtIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRWQ29udGFpbmVyID0gcmVhbFZDb250YWluZXJzW2kgKyAxXS5jb250YWluZXJFbHQ7XG4gICAgICAgICAgICAgICAgICAgIG5leHRIYXNoID0gcmVhbFZDb250YWluZXJzW2kgKyAxXS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRWQ29udGFpbmVyID0gcmVhbFZDb250YWluZXJzWzBdLmNvbnRhaW5lckVsdDtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEhhc2ggPSByZWFsVkNvbnRhaW5lcnNbMF0uaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5leHRWQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICAgICAgICAgICAgLy8gT24gYWRhcHRlIGwnYW5jcmUgZGUgbCd1cmwgZGUgbWFuacOocmUgw6AgY2UgcXUnZWxsZSBzb2l0IGNvaMOpcmVudGUgYXZlYyBsYSB2aWTDqW8gYWZmaWNow6llLlxuICAgICAgICAgICAgICAgIC8vIEF0dGVudGlvbiBjYXIgY2VsYSBwZXV0IHByb3ZvcXVlciB1biBkw6lwbGFjZW1lbnQgZGFucyBsYSBwYWdlIGxhIHByZW1pw6hyZSBmb2lzIHBvdXIgYXR0ZWluZHJlIGwnYW5jcmUuXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihcIiNcIiArIG5leHRIYXNoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBUb3VzIGxlcyBjb250ZW5ldXJzIHNvbnQgY2FjaMOpcywgc2F1ZiBjZWx1aSBkZW1hbmTDqS5cbiAgICAgICAgLy8gTGEgZmluIGRlIGxlY3R1cmUgZCd1bmUgdmlkw6lvIHByb3ZvcXVlIHNvbiByZW1wbGFjZW1lbnQgcGFyIGxhIHN1aXZhbnRlLlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5iVkNvbnRhaW5lcnM7IGkrKykge1xuICAgICAgICAgICAgX2xvb3BfMShpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/src/example.js b/src/example.js index dd6c319..c6fa6ea 100644 --- a/src/example.js +++ b/src/example.js @@ -6,10 +6,10 @@ try { // 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 : - if (window.location.hash !== undefined) + if (window.location.hash !== undefined && window.location.hash !== "") vCarousel_1.vCarousel(videosContainers_1, window.location.hash.replace("#", "")); else - vCarousel_1.vCarousel(videosContainers_1); // le deuxième paramètre est facultatif + vCarousel_1.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 // 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) { diff --git a/src/example.ts b/src/example.ts index 4578133..93c5ba5 100644 --- a/src/example.ts +++ b/src/example.ts @@ -6,10 +6,10 @@ try // Liste des id des contenants des vidéos à afficher : const videosContainers=["vFunanbule", "vForgeron", "vCircuit"]; // Si un id est fourni par l'url, on affiche cette vidéo en premier : - if(window.location.hash!==undefined) + if(window.location.hash!==undefined && window.location.hash!=="") vCarousel(videosContainers, window.location.hash.replace("#","")); else - vCarousel(videosContainers);// le deuxième paramètre est facultatif + vCarousel(videosContainers);// le deuxième paramètre est facultatif sauf si on souhaite qu'une des vidéos soit affichée par défaut // Dans le cas où l'utilisateur clique pour sélectionner une vidéo à afficher, on actualise l'affichage : let selectLinks=document.querySelectorAll(".selectVideo"); diff --git a/src/vCarousel.js b/src/vCarousel.js index 02e41f0..f21c440 100644 --- a/src/vCarousel.js +++ b/src/vCarousel.js @@ -1,11 +1,12 @@ "use strict"; /// La fonction vCarousel reçoit un tableau d'ids des conteneurs HTML des vidéos à afficher successivement. /// Le tableau n'est pas dédoublonné, pour rester libre d'afficher plusieurs fois la même vidéo durant un tour du carrousel. -/// On peut éventuellement fournir l'id de la première vidéo à afficher. +/// 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 exports.__esModule = true; exports.vCarousel = void 0; exports.vCarousel = function (vContainers, firstVideoId) { - if (firstVideoId === void 0) { 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. var realVContainers = []; @@ -23,9 +24,9 @@ exports.vCarousel = function (vContainers, firstVideoId) { } } // Si firstVideoId a été fourni, on vérifie aussi qu'il est valide. - if (firstVideoId !== "" && (realVContainers.findIndex(function (video) { return video.id === firstVideoId; }) === -1)) { + if (firstVideoId !== undefined && firstVideoId !== "" && (realVContainers.findIndex(function (video) { return video.id === firstVideoId; }) === -1)) { console.error("Vous avez fourni l'id de la vidéo à afficher en premier (" + firstVideoId + "), mais il n'est pas valide."); - firstVideoId = ""; + firstVideoId = undefined; } // Il doit rester au moins deux vidéos à faire tourner. var nbVContainers = realVContainers.length; @@ -35,7 +36,7 @@ exports.vCarousel = function (vContainers, firstVideoId) { var _loop_1 = function (i) { var vContainer = realVContainers[i].containerElt; var video = realVContainers[i].videoElt; - if ((firstVideoId !== "" && realVContainers[i].id !== firstVideoId) || (firstVideoId === "" && i !== 0)) + if ((firstVideoId !== undefined && realVContainers[i].id !== firstVideoId) || (firstVideoId === undefined && i !== 0) || firstVideoId === "") vContainer.style.display = "none"; else vContainer.style.display = "block"; // nécessaire dans le cas d'un réaffichage. diff --git a/src/vCarousel.ts b/src/vCarousel.ts index d3fd895..ee134fc 100644 --- a/src/vCarousel.ts +++ b/src/vCarousel.ts @@ -1,9 +1,11 @@ /// La fonction vCarousel reçoit un tableau d'ids des conteneurs HTML des vidéos à afficher successivement. /// Le tableau n'est pas dédoublonné, pour rester libre d'afficher plusieurs fois la même vidéo durant un tour du carrousel. -/// On peut éventuellement fournir l'id de la première vidéo à afficher. +/// 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 -export const vCarousel = (vContainers:string[], firstVideoId="") : void => -{ +export const vCarousel = (vContainers:string[], firstVideoId?:string) : void => +{ interface videoDOM { id: string; @@ -30,10 +32,10 @@ export const vCarousel = (vContainers:string[], firstVideoId="") : void => } // Si firstVideoId a été fourni, on vérifie aussi qu'il est valide. - if(firstVideoId!=="" && (realVContainers.findIndex(video => video.id === firstVideoId) === -1)) + if(firstVideoId!==undefined && firstVideoId!=="" && (realVContainers.findIndex(video => video.id === firstVideoId) === -1)) { console.error("Vous avez fourni l'id de la vidéo à afficher en premier ("+firstVideoId+"), mais il n'est pas valide."); - firstVideoId=""; + firstVideoId=undefined; } // Il doit rester au moins deux vidéos à faire tourner. @@ -48,7 +50,7 @@ export const vCarousel = (vContainers:string[], firstVideoId="") : void => { let vContainer=realVContainers[i].containerElt; let video=realVContainers[i].videoElt; - if((firstVideoId!=="" && realVContainers[i].id!==firstVideoId) || (firstVideoId==="" && i!==0)) + if((firstVideoId!==undefined && realVContainers[i].id!==firstVideoId) || (firstVideoId===undefined && i!==0) || firstVideoId==="") vContainer.style.display = "none"; else vContainer.style.display = "block";// nécessaire dans le cas d'un réaffichage.