redmine_apijs 6.6.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README +2 -2
- data/assets/javascripts/apijs-redmine.min.js +3 -3
- data/assets/javascripts/{app.min.js.map → apijs-redmine.min.js.map} +1 -1
- data/assets/javascripts/apijs.min.js +2 -2
- data/assets/javascripts/apijs.min.js.map +1 -1
- data/assets/javascripts/app.js +3 -3
- data/assets/stylesheets/apijs-print.min.css +1 -1
- data/assets/stylesheets/apijs-print.min.css.map +1 -1
- data/assets/stylesheets/apijs-redmine-rtl.min.css +2 -2
- data/assets/stylesheets/apijs-redmine-rtl.min.css.map +1 -0
- data/assets/stylesheets/apijs-redmine.min.css +2 -2
- data/assets/stylesheets/apijs-redmine.min.css.map +1 -0
- data/assets/stylesheets/apijs-screen-rtl.min.css +2 -2
- data/assets/stylesheets/apijs-screen-rtl.min.css.map +1 -1
- data/assets/stylesheets/apijs-screen.min.css +2 -2
- data/assets/stylesheets/apijs-screen.min.css.map +1 -1
- data/init.rb +3 -3
- data/lib/image.py +17 -11
- data/lib/useragentparser.rb +4 -4
- data/redmine_apijs.gemspec +5 -5
- metadata +7 -6
- data/assets/stylesheets/styles-rtl.min.css.map +0 -1
- data/assets/stylesheets/styles.min.css.map +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bb0b1eaa81b80a4ddf95d7b27fa59f9c122d427e1342e349c4728b1489c070e6
|
|
4
|
+
data.tar.gz: 2205182b8774d0be0de6a0ad5f2ee958c8a26c63af2a0a4254e86c9c851551fe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41ef8259ce07a1bdb578b53cfed35df2db2a1cf53b67fbb49858ed7dfb58815b99081836862a3e9f9eed9c548ab838c18e2f5594f1e49cca506145c0e25a80dc
|
|
7
|
+
data.tar.gz: 5c11f2ac49d52c66fa80d381e205a6adbd2537a42599502320cab4a4f900353b68cc34d7e6add573549ed0c994e31519de4d9617f07d30f4fa1f523295168bea
|
data/README
CHANGED
|
@@ -13,7 +13,7 @@ Copyright : 2008-2021 Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
IF YOU FOUND A MISTAKE OR A BUG, PLEASE, CONTACT ME (IN FRENCH OR IN ENGLISH) AT code~luigifab~fr
|
|
16
|
-
CSS AND JS FILES ARE MINIFIED WITH clean-css (github.com/jakubpawlowicz/clean-css) AND uglify-js (github.com/mishoo/
|
|
16
|
+
CSS AND JS FILES ARE MINIFIED WITH clean-css (github.com/jakubpawlowicz/clean-css) AND uglify-js (github.com/mishoo/uglifyjs).
|
|
17
17
|
ALL FILES (INCLUDING DOCUMENTATION AND TRANSLATIONS) ARE LICENSED UNDER THE TERMS OF THE GNU GPL 2+ LICENSE.
|
|
18
18
|
THAT BEING SAID SOME FILES COME FROM OTHER PROJECTS AND ARE UNDER OTHER LICENSES (SEE AT THE END OF THIS FILE).
|
|
19
19
|
|
|
@@ -63,7 +63,7 @@ If you like, take some of your time to improve the translations, go to https://b
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
File: /lib/useragentparser.rb
|
|
66
|
-
Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.
|
|
66
|
+
Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.4.0-fork1)
|
|
67
67
|
Copyright: 2013-2021 Jesse G. Donat <donatj~gmail~com>
|
|
68
68
|
Copyright: 2019-2021 Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
69
69
|
License: MIT (https://opensource.org/licenses/mit)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/redmine/apijs
|
|
3
|
+
* https://www.luigifab.fr/redmine/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
|
-
var apijsRedmine=new function(){"use strict";this.start=function(){var e=apijs.i18n.data;e.frca||(e.frca={}),e.cs[250]="Smazat soubor",e.cs[251]="Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[252]="Chyba",e.de[250]="Eine Datei löschen",e.de[251]="Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.",e.de[252]="Fehler",e.de[253]="Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[254]="Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[255]="Eine Beschreibung bearbeiten",e.de[256]="Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.",e.en[250]="Remove file",e.en[251]="Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.",e.en[252]="Error",e.en[253]="You are not authorized to perform this operation, please [a §]refresh the page[/a].",e.en[254]="Sorry, the file no longer exists, please [a §]refresh the page[/a].",e.en[255]="Edit description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Clear cache",e.en[260]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.es[250]="Borrar un archivo",e.es[251]="¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.",e.es[253]="No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].",e.es[254]="Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].",e.es[255]="Editar una descripción",e.es[256]="Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.",e.es[259]="Vaciar la caché",e.es[260]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.fr[250]="Supprimer le fichier",e.fr[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.",e.fr[252]="Erreur",e.fr[253]="Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].",e.fr[254]="Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].",e.fr[255]="Modifier la description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Vider le cache",e.fr[260]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.it[250]="Cancella i file",e.it[251]="Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.",e.it[252]="Errore",e.it[253]="Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[254]="Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[255]="Modificare una descrizione",e.it[256]="Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.",e.ja[250]="ファイルを削除",e.ja[252]="エラー",e.nl[252]="Fout",e.pl[250]="Usuń plik",e.pl[251]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.",e.pt[252]="Erro",e.pt[253]="Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].",e.pt[254]="Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].",e.pt[255]="Modificar uma descrição",e.pt[256]="Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.ru[255]="Редактировать описание",e.ru[256]="Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.",e.sk[252]="Chyba",e.tr[252]="Hata",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf("<!DOCTYPE")<0?apijs.dialog.dialogInformation(apijs.i18n.translate(252),e,"error"):(apijs.dialog.remove("lock"),self.location.reload())},this.editAttachment=function(e,t,a,i){var r=apijs.i18n.translate(255),e=e.parentNode.parentNode.querySelector(".description").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+e+'" spellcheck="true" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionEditAttachment,[t,a,i],"editattach"),apijs.dialog.t1.querySelector("input").select()},this.actionEditAttachment=function(e,t){if("boolean"==typeof e)return!0;var a;"string"==typeof e&&((a=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.setRequestHeader("X-CSRF-Token",t[2]),a.onreadystatechange=function(){var e,t;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=a.responseText.slice(0,a.responseText.indexOf(":")),e=a.responseText.slice(a.responseText.indexOf(":")+1),(t=document.getElementById(t)).querySelector(".description").textContent=e,(t=t.querySelector("input"))&&(t.value=t.value.slice(0,t.value.lastIndexOf("|")+1)+e),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("desc="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.renameAttachment=function(e,t,a,i){var r=apijs.i18n.translate(257),e=e.parentNode.parentNode.querySelector(".filename").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(258)+'[/label][/p][input type="text" name="name" value="'+e+'" spellcheck="false" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionRenameAttachment,[t,a,i],"editattach")},this.actionRenameAttachment=function(e,t){if("boolean"==typeof e)return!0;var r;"string"==typeof e&&((r=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.setRequestHeader("X-CSRF-Token",t[2]),r.onreadystatechange=function(){var e,t,a,i;4===r.readyState&&([0,200].has(r.status)?0===r.responseText.indexOf("attachmentId")?(t=r.responseText.slice(0,r.responseText.indexOf(":")),a=r.responseText.slice(r.responseText.indexOf(":")+1),(i=document.getElementById(t)).querySelector(".filename").textContent=a,(t=i.querySelector("input"))&&(e=t.getAttribute("value"),t.setAttribute("value",a+e.substr(e.indexOf("|")))),(t=i.querySelector("a"))&&(e=t.getAttribute("href"),t.setAttribute("href",e.substr(0,e.lastIndexOf("/")+1)+a)),(t=i.querySelector("button.download"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),(t=i.querySelector("button.show"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),apijs.dialog.actionClose()):apijsRedmine.error(r.responseText):apijsRedmine.error(r.status))},r.send("name="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.removeAttachment=function(e,t,a,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[t,a,i])},this.actionRemoveAttachment=function(e){var i=new XMLHttpRequest;i.open("POST",e[1]+"?id="+e[0]+"&isAjax=true",!0),i.setRequestHeader("X-CSRF-Token",e[2]),i.onreadystatechange=function(){var e,t,a;4===i.readyState&&([0,200].has(i.status)?0===i.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(i.responseText)).parentNode,a=0,
|
|
8
|
-
//# sourceMappingURL=
|
|
7
|
+
var apijsRedmine=new function(){"use strict";this.start=function(){var e=apijs.i18n.data;e.frca||(e.frca={}),e.cs[250]="Smazat soubor",e.cs[251]="Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[252]="Chyba",e.de[250]="Eine Datei löschen",e.de[251]="Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.",e.de[252]="Fehler",e.de[253]="Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[254]="Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[255]="Eine Beschreibung bearbeiten",e.de[256]="Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.",e.en[250]="Remove file",e.en[251]="Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.",e.en[252]="Error",e.en[253]="You are not authorized to perform this operation, please [a §]refresh the page[/a].",e.en[254]="Sorry, the file no longer exists, please [a §]refresh the page[/a].",e.en[255]="Edit description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Clear cache",e.en[260]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.es[250]="Borrar un archivo",e.es[251]="¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.",e.es[253]="No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].",e.es[254]="Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].",e.es[255]="Editar una descripción",e.es[256]="Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.",e.es[259]="Vaciar la caché",e.es[260]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.fr[250]="Supprimer le fichier",e.fr[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.",e.fr[252]="Erreur",e.fr[253]="Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].",e.fr[254]="Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].",e.fr[255]="Modifier la description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Vider le cache",e.fr[260]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.it[250]="Cancella i file",e.it[251]="Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.",e.it[252]="Errore",e.it[253]="Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[254]="Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[255]="Modificare una descrizione",e.it[256]="Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.",e.ja[250]="ファイルを削除",e.ja[252]="エラー",e.nl[252]="Fout",e.pl[250]="Usuń plik",e.pl[251]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.",e.pt[252]="Erro",e.pt[253]="Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].",e.pt[254]="Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].",e.pt[255]="Modificar uma descrição",e.pt[256]="Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.ru[255]="Редактировать описание",e.ru[256]="Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.",e.sk[252]="Chyba",e.tr[252]="Hata",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf("<!DOCTYPE")<0?apijs.dialog.dialogInformation(apijs.i18n.translate(252),e,"error"):(apijs.dialog.remove("lock"),self.location.reload())},this.editAttachment=function(e,t,a,i){var r=apijs.i18n.translate(255),e=e.parentNode.parentNode.querySelector(".description").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+e+'" spellcheck="true" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionEditAttachment,[t,a,i],"editattach"),apijs.dialog.t1.querySelector("input").select()},this.actionEditAttachment=function(e,t){if("boolean"==typeof e)return!0;var a;"string"==typeof e&&((a=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.setRequestHeader("X-CSRF-Token",t[2]),a.onreadystatechange=function(){var e,t;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=a.responseText.slice(0,a.responseText.indexOf(":")),e=a.responseText.slice(a.responseText.indexOf(":")+1),(t=document.getElementById(t)).querySelector(".description").textContent=e,(t=t.querySelector("input"))&&(t.value=t.value.slice(0,t.value.lastIndexOf("|")+1)+e),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("desc="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.renameAttachment=function(e,t,a,i){var r=apijs.i18n.translate(257),e=e.parentNode.parentNode.querySelector(".filename").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(258)+'[/label][/p][input type="text" name="name" value="'+e+'" spellcheck="false" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionRenameAttachment,[t,a,i],"editattach")},this.actionRenameAttachment=function(e,t){if("boolean"==typeof e)return!0;var r;"string"==typeof e&&((r=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.setRequestHeader("X-CSRF-Token",t[2]),r.onreadystatechange=function(){var e,t,a,i;4===r.readyState&&([0,200].has(r.status)?0===r.responseText.indexOf("attachmentId")?(t=r.responseText.slice(0,r.responseText.indexOf(":")),a=r.responseText.slice(r.responseText.indexOf(":")+1),(i=document.getElementById(t)).querySelector(".filename").textContent=a,(t=i.querySelector("input"))&&(e=t.getAttribute("value"),t.setAttribute("value",a+e.substr(e.indexOf("|")))),(t=i.querySelector("a"))&&(e=t.getAttribute("href"),t.setAttribute("href",e.substr(0,e.lastIndexOf("/")+1)+a)),(t=i.querySelector("button.download"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),(t=i.querySelector("button.show"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),apijs.dialog.actionClose()):apijsRedmine.error(r.responseText):apijsRedmine.error(r.status))},r.send("name="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.removeAttachment=function(e,t,a,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[t,a,i])},this.actionRemoveAttachment=function(e){var i=new XMLHttpRequest;i.open("POST",e[1]+"?id="+e[0]+"&isAjax=true",!0),i.setRequestHeader("X-CSRF-Token",e[2]),i.onreadystatechange=function(){var e,t,a;4===i.readyState&&([0,200].has(i.status)?0===i.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(i.responseText)).parentNode,a=0,e.remove(),t.querySelectorAll("dl, li").length<1?t.remove():t.querySelectorAll("a[id][type]").forEach(function(e){e.setAttribute("id",e.getAttribute("id").slice(0,e.getAttribute("id").lastIndexOf(".")+1)+a++)}),apijs.dialog.actionClose()):apijsRedmine.error(i.responseText):apijsRedmine.error(i.status))},i.send()},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(259),apijs.i18n.translate(260),apijsRedmine.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsRedmine.start.bind(apijsRedmine));
|
|
8
|
+
//# sourceMappingURL=apijs-redmine.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["app.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated S/16/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.start = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// urls sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substr(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substr(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\telems.removeChild(attachment);\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.parentNode.removeChild(elems);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.start.bind(apijsRedmine));"],"names":["apijsRedmine","this","start","d","apijs","i18n","data","frca","cs","de","en","es","fr","it","ja","nl","pl","pt","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substr","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","removeChild","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["app.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated D/09/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.start = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// urls sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substr(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substr(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\tattachment.remove();\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.start.bind(apijsRedmine));"],"names":["apijsRedmine","this","start","d","apijs","i18n","data","frca","cs","de","en","es","fr","it","ja","nl","pl","pt","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substr","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/apijs - 6.
|
|
3
|
+
* https://www.luigifab.fr/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
|
-
Array.prototype.has||(Array.prototype.has=function(t,e){if(t instanceof Array){for(e in t)if(t.hasOwnProperty(e)&&this.has(t[e]))return!0}else for(e in this)if(this.hasOwnProperty(e)&&this[e]===t)return!0;return!1}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(t,e,i){for(e=e||window,i=0;i<this.length;i++)t.call(e,this[i],i,this)});var apijs=new function(){"use strict";this.core={},this.version=660,this.config={lang:"auto",debug:!1,dialog:{closeOnClick:!1,restrictNavigation:!0,player:!0},slideshow:{ids:"slideshow",anchor:!0},upload:{tokenName:"X-CSRF-Token",tokenValue:null}},this.start=function(){var t;if(console.info("APIJS "+this.version.toString().split("").join(".")+" - hello - 1 MB/Mo = 1024 kB/ko"),document.getElementById("oldBrowser"))throw new Error("APIJS canceled, #oldBrowser detected!");(t=document.querySelector('link[href*="apijs/fontello.woff2"]'))&&t.getAttribute("href").indexOf("?a3ab5acff3")<0&&console.error("APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3"),(t=document.querySelector('script[src*="apijs.min.js?v="]'))&&t.getAttribute("src").indexOf("?v="+this.version)<0&&console.error("APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v="+this.version),this.i18n=new this.core.i18n,this.dialog=new this.core.dialog,this.upload=new this.core.upload,this.slideshow=new this.core.slideshow,self.dispatchEvent(new CustomEvent("apijsbeforeload")),this.i18n.init(),this.slideshow.init(),document.querySelectorAll("video.apijsplayer[data-src]").forEach(function(t){apijs.startPlayer(t,t.getAttribute("data-src"))}),self.addEventListener("popstate",this.slideshow.onPopState),self.addEventListener("hashchange",this.slideshow.onPopState),this.config.debug&&(console.info("APIJS available languages: "+Object.keys(this.i18n.data).join(" ")),console.info("APIJS language loaded: "+this.config.lang),console.info("APIJS successfully started")),self.dispatchEvent(new CustomEvent("apijsload"))},this.formatNumber=function(e,t){var i,s="number"==typeof t?t:!1===t?0:2;try{i=new Intl.NumberFormat(this.config.lang,{minimumFractionDigits:s,maximumFractionDigits:s}).format(e)}catch(t){i=e.toFixed(s)}return"number"==typeof t?i:i.replace(/[.,]00$/,"")},this.startPlayer=function(t,e){return!0===this.config.dialog.player?(t.videoPlayer=new this.core.player(t,e),!0):"function"==typeof this.config.dialog.player&&(this.config.dialog.player(t,e),!0)},this.toArray=function(t){return Array.prototype.slice.call(t,0)},this.openTab=function(t){t.preventDefault(),0<this.href.length&&self.open(this.href)},this.log=function(t){this.config.debug&&console.info("APIJS "+t)},this.html=function(t,e){return!0===e||0===t.indexOf("#")?document.getElementById(t.replace("#","apijs")):this.dialog.t1?this.dialog.t1.querySelector(t):null},this.requestFullscreen=function(t){document.webkitFullscreenElement?document.webkitCancelFullScreen():document.mozFullScreenElement?document.mozCancelFullScreen():document.fullscreenElement?document.cancelFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen&&t.mozRequestFullScreen()},this.serialize=function(t,i){var s=[];return i="string"==typeof i?i:"",Array.prototype.forEach.call(t.elements,function(t){if(t.name&&!t.disabled&&!["file","reset","submit","button"].has(t.type)&&0===t.name.indexOf(i))if("select-multiple"===t.type)for(var e=0;e<t.options.length;e++)t.options[e].selected&&s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[e].value));else["checkbox","radio"].has(t.type)&&!t.checked||s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),s.join("&")}};"function"==typeof self.addEventListener&&self.addEventListener("load",apijs.start.bind(apijs)),apijs.core.i18n=function(){"use strict";this.data={cs:{103:"Zrušit",104:"Potvrzení",105:"Zavřít",106:"Předchozí",107:"Následující",132:"video stopa",133:"zvuková stopa",134:"titulky",142:"předchozí/následující",144:"zpět/vpřed",146:"ztlumit",149:"Konec",150:"Esc"},de:{103:"Abbrechen",104:"Bestätigen",105:"Schließen",106:"Vorheriges",107:"Nächstes",108:"Datei wählen",109:"Dateien wählen",124:"Verarbeitung läuft...",132:"videospur",133:"audiospur",134:"untertitel",142:"vorheriges/nächstes",143:"wiedergabe/pause",144:"rückwärts/vorwärts",145:"leiser/lauter",146:"ton aus",147:"vollbild",148:"beenden",149:"Ende",150:"Esc",161:"Alle Dateien wurden akzeptiert.",162:"Akzeptiertes Dateiformat: §.",163:"Akzeptiertes Dateiformate: § und §.",164:"Maximale Größe: § MB.",167:"Unerlaubtes Format",168:"Format zu gross",169:"Leere Datei",181:"§% - § kB/s - Noch § Minuten",182:"§% - § kB/s - Noch § Minute",183:"§% - § kB/s - Noch § Sekunden",185:"§% - bis § kB/s in § Minuten",186:"§% - bis § kB/s in § Minute",187:"§% - bis § kB/s in § Sekunden",188:"§% - bis § kB/s",191:"Abbrechen",192:"Sind Sie sicher? [span]Ja[/span] - Nein",193:"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.",194:"Es ist ein Fehler beim Senden.",195:"Es ist ein Fehler bei der Verarbeitung.",196:"Wir laden Sie ein es erneut zu [a §]versuchen[/a]."},en:{102:"Ok",103:"Cancel",104:"Confirm",105:"Close",106:"Previous",107:"Next",108:"Choose a file",109:"Choose one or multiple files",124:"Operation in progress...",125:"Upload in progress...",126:"Processing file in progress...",131:"video",132:"video track",133:"audio track",134:"subtitles",135:"off",141:"first/last",142:"previous/next",143:"play/pause",144:"backward/forward",145:"decrease/increase the volume",146:"mute",147:"full screen",148:"quit",149:"End",150:"Escape",161:"All files are accepted.",162:"Accepted file format: §.",163:"Accepted file formats: § and §.",164:"Maximum size: § MB.",165:"Maximum size by file: § MB.|Total maximum size: § MB.",166:"§ MB",167:"Format not allowed",168:"Size too large",169:"File empty",181:"§% - § kB/s - § minutes left",182:"§% - § kB/s - § minute left",183:"§% - § kB/s - § seconds left",184:"§% - § kB/s",185:"§% - at § kB/s in § minutes",186:"§% - at § kB/s in § minute",187:"§% - at § kB/s in § seconds",188:"§% - at § kB/s",191:"Interrupt",192:"Are you sure? [span]Yes[/span] - No",193:"It seems that an unlikely mistake just happened... Please try again.",194:"An error occurred while sending.",195:"An error occurred while processing.",196:"We invite you to [a §]try again[/a]."},es:{102:"Aceptar",103:"Cancelar",104:"Confirmar",105:"Cerrar",106:"Anterior",107:"Siguiente",108:"Elegir un fichero",109:"Elegir uno o varios ficheros",124:"Operación en curso...",125:"Envío en progreso...",126:"Tratamiento en curso...",131:"vídeo",132:"pista de vídeo",133:"pista de audio",134:"subtítulos",142:"anterior/siguiente",143:"reproducir/pausa",144:"retroceder/avanzar",145:"bajar/subir volumen",146:"silenciar",147:"pantalla completa",148:"salir",149:"Fin",150:"Esc",161:"Se aceptan todos los archivos.",162:"Formato de archivo aceptado: §.",163:"Formatos de archivos aceptados: § y §.",164:"Tamaño máximo: § MB.",165:"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.",167:"Formato no autorizado",168:"Tamaño demasiado importante",169:"Fichero vacío",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - a § kB/s en § minutos",186:"§% - a § kB/s en § minuto",187:"§% - a § kB/s en § segundos",188:"§% - a § kB/s",191:"Interrumpir",192:"¿Está seguro(a)? [span]Sí[/span] - No",193:"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.",194:"Se produjo un error durante el envío.",195:"Se produjo un error durante el procesamiento.",196:"Le invitamos a [a §]intentar de nuevo[/a]."},fr:{103:"Annuler",104:"Valider",105:"Fermer",106:"Précédent",107:"Suivant",108:"Choisir un fichier",109:"Choisir un ou plusieurs fichiers",124:"Opération en cours...",125:"Envoi en cours...",126:"Traitement en cours...",131:"vidéo",132:"piste vidéo",133:"piste audio",134:"sous-titres",141:"premier/dernier",142:"précédent/suivant",143:"lecture/pause",144:"reculer/avancer",145:"réduire/augmenter le volume",146:"couper le son",147:"plein écran",148:"quitter",149:"Fin",150:"Échap",161:"Tous les fichiers sont acceptés.",162:"Format de fichier accepté : §.",163:"Formats de fichier acceptés : § et §.",164:"Taille maximale : § Mo.",165:"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.",166:"§ Mo",167:"Format non autorisé",168:"Taille trop importante",169:"Fichier vide",181:"§% - § ko/s - § minutes restantes",182:"§% - § ko/s - § minute restante",183:"§% - § ko/s - § secondes restantes",184:"§% - § ko/s",185:"§% - à § ko/s en § minutes",186:"§% - à § ko/s en § minute",187:"§% - à § ko/s en § secondes",188:"§% - à § ko/s",191:"Interrompre",192:"Êtes-vous sûr(e) ? [span]Oui[/span] - Non",193:"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.",194:"Une erreur est survenue lors de l'envoi.",195:"Une erreur est survenue lors du traitement.",196:"Nous vous invitons à [a §]réessayer[/a]."},it:{103:"Annulla",104:"Conferma",105:"Chiudi",106:"Precedente",107:"Successivo",108:"Scegli un file",109:"Scegli uno o più file",124:"Operazione in corso...",125:"Invio in corso...",126:"Trattamento in corso...",132:"traccia video",133:"traccia audio",134:"sottotitoli",142:"precedente/successivo",143:"riproduci/pausa",144:"indietro/avanti",145:"riduci/aumenta volume",146:"silenzio",147:"schermo intero",148:"esci",149:"Fine",150:"Esc",161:"Tutti i file sono accettati.",162:"Formato del file accettato: §.",163:"Formati accettati: § et §.",164:"Dimensione massima: § MB.",167:"Formato non autorizzato",168:"Dimensione troppo importante",169:"File vuoto",181:"§% - § kB/s - § minuti rimanenti",182:"§% - § kB/s - § minuto rimanente",183:"§% - § kB/s - § secondi rimanenti",185:"§% - a § kB/s in § minuti",186:"§% - a § kB/s in § minuto",187:"§% - a § kB/s in § secondi",188:"§% - a § kB/s",191:"Interrompere",192:"Sei sicuro? [span]Si[/span] - No",193:"Sembra che un errore inaspettato si sia verificato... Riprova.",194:"Un errore si è verificato durante l'invio.",195:"Un errore si è verificato durante il trattamento.",196:"Vi invitiamo a [a §]riprovare[/a]."},ja:{103:"キャンセル",104:"承認",105:"閉じる",106:"前へ",107:"次へ",131:"ビデオ",132:"ビデオトラック",133:"オーディオトラック",134:"字幕",142:"前へ/次へ",144:"戻る/進む",146:"ミュート",147:"全画面表示",149:"終了",150:"Esc",166:"§ Mo",184:"§% - § Ko/s",192:"よろしいですか?[span]はい[/span] - いいえ"},nl:{103:"Annuleren",104:"Bevestigen",105:"Sluiten",106:"Vorige",107:"Volgende",132:"videospoor",133:"audiospoor",134:"ondertitels",142:"vorige/volgende",144:"achteruit/vooruit",145:"volume omlaag/omhoog",146:"dempen",147:"schermvullend",150:"Esc"},pl:{103:"Anuluj",104:"Potwierdź",105:"Zamknij",106:"Poprzedni",107:"Następny",131:"obraz",132:"ścieżka obrazu",133:"ścieżka dźwiękowa",134:"napisy",142:"poprzedni/następny",144:"wstecz/przodu",145:"ciszej/głośniej",146:"wycisz",147:"pełny ekran",150:"Esc"},pt:{103:"Cancelar",104:"Confirmar",105:"Fechar",106:"Anterior",107:"Seguinte",108:"Escolher um ficheiro",109:"Escolher um ou vários ficheiros",124:"Operação em processo...",125:"Envio em processo...",126:"Tratamento em processo...",131:"vídeo",132:"faixa de vídeo",133:"faixa de áudio",134:"legendas",142:"anterior/seguinte",143:"reprodução/pausa",144:"recuar/avançar",145:"diminuir/aumentar volume",146:"sem som",147:"ecrã completo",148:"sair",149:"Fim",150:"Esc",161:"Todos os ficheiros foram aceites.",162:"Formato do ficheiro aceite: §.",163:"Formatos de ficheiro aceites: § e §.",164:"Tamanho máximo: § MB.",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - § kB/s em § minutos",186:"§% - § kB/s em § minuto",187:"§% - § kB/s em § segundos",188:"§% - § kB/s",192:"Tem a certeza? [span]Sim[/span] - Não",193:"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.",194:"Ocorreu um erro ao enviar.",195:"Ocorreu um erro ao processar.",196:"Convidamo-lo a [a §]tentar novamente[/a]."},ptbr:{107:"Próximo",124:"Operação em andamento...",125:"Envio em andamento...",126:"Tratamento em andamento...",132:"trilha de vídeo",133:"trilha de áudio",142:"anterior/próximo",144:"retroceder/avançar",146:"sem áudio",147:"tela inteira",149:"Final"},ru:{102:"Ок",103:"Отмена",104:"Подтвердить",105:"Закрыть",106:"Предыдущий",107:"Следующий",108:"Выберите файл",124:"Операция в процессе...",131:"видео",132:"видеодорожка",133:"аудиодорожка",134:"субтитры",142:"предыдущий/следующий",143:"воспроизведение/пауза",144:"назад/вперед",145:"понизить/повысить громкость",146:"выключить звук",147:"полноэкранный режим",148:"выйти",150:"Esc",161:"Все файлы приняты.",162:"Формат файла: §.",163:"Форматы файлов: § и §.",164:"Максимальный размер: § MB.",181:"§% - § kB/s - осталось § минут",182:"§% - § kB/s - осталось § минут",183:"§% - § kB/s - осталось § секунд",185:"§% - § kB/s за § минут",186:"§% - § kB/s за § минут",187:"§% - § kB/s за § секунд",188:"§% - § kB/s",192:"Вы уверены? [span]Да[/span] - нет",193:"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.",194:"Возникла ошибка при отправке файла.",195:"Возникла ошибка при обработке файла."},sk:{103:"Zrušiť",104:"Potvrdiť",105:"Zavrieť",106:"Dozadu",107:"Ďalej",133:"zvuková stopa",134:"titulky",142:"dozadu/ďalej",144:"dozadu/dopredu",145:"znizit/zvysit hlasitost",146:"stlmiť",150:"Esc"},tr:{103:"İptal",104:"Onayla",105:"Kapat",106:"Önceki",107:"Sonraki",131:"görüntü",132:"görüntü kaydı",133:"ses kaydı",134:"altyazılar",142:"önceki/sonraki",144:"geri/i̇leri",145:"ses kısar/açar",146:"sesi kapatma",147:"tam ekran",149:"Son",150:"Esc",192:"Emin misiniz ? [span]Evet[/span] - Hayır"},uk:{103:"Відмінити",104:"Підтвердити",105:"Закрити",106:"Попередній",107:"Наступний",131:"відео",132:"відеодоріжка",133:"звукова доріжка",134:"субтитри",142:"попередній/наступний",144:"назад/вперед",145:"зменшити/збільшити гучність",146:"вимкнути звук",149:"Кінець",150:"Esc"},zh:{103:"取消",104:"确认",105:"关闭",106:"上一个",107:"下一个",131:"视频",132:"视频轨道",133:"音频轨道",134:"字幕",142:"上一个/下一个",144:"快退/快进",145:"音量减/增",146:"静音",147:"全屏",150:"Esc",192:"您确定吗?[span]是[/span] - 否"}},this.init=function(){var t=apijs.config.lang,e=document.querySelector("html");-1<t.indexOf("auto")&&"string"==typeof(t=e.getAttribute("xml:lang")||e.getAttribute("lang"))&&(t=(t=t.replace(/[-_]/g,"").toLowerCase()).slice(0,4),this.data.hasOwnProperty(t)||(t=t.slice(0,2)),this.data.hasOwnProperty(t)&&(apijs.config.lang=t)),this.data.hasOwnProperty(t)||(apijs.config.lang="en")},this.translate=function(t){var e=apijs.config.lang,i=1,s="";if("string"!=typeof this.data[e][t])if(3<e.length&&"string"==typeof this.data[e.slice(0,2)][t])e=e.slice(0,2);else{if("en"===e||"string"!=typeof this.data.en[t])return t;e="en"}return 1<arguments.length?(this.data[e][t].split("§").forEach(function(t){s+=i<this.length?t+this[i++]:t},arguments),s):this.data[e][t]},this.translateNode=function(){return document.createTextNode(this.translate.apply(this,arguments))},this.changeLang=function(t){if("string"==typeof t){if(-1<t.indexOf("auto"))return apijs.config.lang="auto",this.init(),!0;if(t=t.replace(/[-_]/g,""),this.data.hasOwnProperty(t))return apijs.config.lang=t,!0}return!1}},apijs.core.select=function(){"use strict";this.init=function(){document.querySelectorAll("select").forEach(function(t){t.addEventListener("focus",apijs.select.open)})},this.open=function(t){var e,i=t.target,s=document.createDocumentFragment(),n=document.createElement("div"),t=document.createElement("ul");i.querySelectorAll("option").forEach(function(t){(e=document.createElement("li")).appendChild(document.createTextNode(t.textContent)),Array.prototype.forEach.call(t.attributes,function(t){e.setAttribute(t.name,t.value)}),this.appendChild(e)},t),n.appendChild(t),s.appendChild(n),console.log(s.firstChild.innerHTML),i.parentNode.replaceChild(s.firstChild,i)}},apijs.core.player=function(n,t){"use strict";this.video=n,this.stalled=!1,this.subload=!1,this.autoRun=function(a,t){if(a.removeAttribute("src"),a.removeAttribute("data-src"),a.removeAttribute("controls"),a.classList.add("apijsplayer"),a.onloadedmetadata=function(t){this.stalled=!1,this.onTimeupdate(t),this.onProgress(t),this.onVideotrack(),this.onAudiotrack()}.bind(this),a.onstalled=function(t){this.stalled=!0,this.onWaiting(t)}.bind(this),a.onplaying=this.onPlay.bind(this),a.onpause=this.onPlay.bind(this),a.onended=this.onPlay.bind(this),a.onprogress=this.onProgress.bind(this),a.ontimeupdate=this.onTimeupdate.bind(this),a.onseeking=this.onTimeupdate.bind(this),a.onseeked=this.onWaiting.bind(this),a.onwaiting=this.onWaiting.bind(this),a.onloadstart=this.onWaiting.bind(this),a.oncanplay=this.onWaiting.bind(this),a.onclick=this.actionPlay.bind(this),a.onvolumechange=this.actionVolume.bind(this),a.ondurationchange=apijs.dialog.onMediaLoad,a.onerror=apijs.dialog.onMediaLoad,a.parentNode.appendChild(this.htmlSvgPlayer()),t.indexOf("m3u")<0)return a.appendChild(this.htmlSource(t)),this;var o=new XMLHttpRequest;return o.open("GET",t,!0),o.onreadystatechange=function(){if(4===o.readyState)if(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijsplayer.init",xhr:o}})),!a||0<a.childNodes.length)o.abort();else if([0,200].has(o.status)){for(var t,e,i=0,s=0,n=o.responseText.trim().split("\n");"string"==typeof(t=n.shift());)0===t.indexOf("#APIJS#attr")?(e=t.split("|"),a.setAttribute(e[1],e[2])):0===t.indexOf("#APIJS#track|subtitles")?(e=t.split("|"),this.html(".tracks.texttrack select").appendChild(this.htmlOption(s++,e[3]+" - "+e[2])),a.appendChild(this.htmlTrack(e))):0===t.indexOf("#EXTINF")?e=t.replace(/#EXTINF:[0-9]+,/,""):5<t.length&&"#"!==t[0]&&(this.html(".tracks.video select").appendChild(this.htmlOption(i++,"string"==typeof e?e:i)),a.appendChild(this.htmlSource(t)));this.updateSelect("video",i),"object"==typeof a.textTracks&&this.updateSelect("texttrack",a.textTracks.length||s)}else apijs.dialog.onMediaLoad({type:"error"})}.bind(this),o.send(),this},this.updateSelect=function(t,e){var i="texttrack"===t?1:0;i<e?(this.html(".tracks."+t).removeAttribute("style"),this.html(".tracks."+t+" em").textContent="("+e+")",this.html(".tracks."+t+" select").setAttribute("size",e<10?e+i:10)):(this.html(".tracks."+t).setAttribute("style","display:none;"),this.html(".tracks."+t+" select").innerHTML="")},this.html=function(t){return this.video.parentNode.querySelector(t)},this.onVideotrack=function(){var t,e=this.video.videoTracks,i=this.html(".tracks.videotrack select"),s=apijs.config.lang,n=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(n=n<0?t:n),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("videotrack",e.length)}i.selectedIndex=Math.max(0,n),0<=n&&this.actionVideotrack(n)}},this.onAudiotrack=function(){var t,e=this.video.audioTracks,i=this.html(".tracks.audiotrack select"),s=apijs.config.lang,n=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(n=n<0?t:n),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("audiotrack",e.length)}i.selectedIndex=Math.max(0,n),0<=n&&this.actionAudiotrack(n)}},this.onTimeupdate=function(t){var e,i,s,n=this.video.currentTime,a=this.video.duration,o="--:--";isNaN(n)||a===1/0||isNaN(a)||(o=(e=0<(e=Math.floor(n/3600))?e+":":"")+(i=(i=Math.floor(n%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(n%60))<10?"0"+s:s),o+=" / "+(e=0<(e=Math.floor(a/3600))?e+":":"")+(i=(i=Math.floor(a%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(a%60))<10?"0"+s:s),this.html("svg.bar rect").style.width=n/a*100+"%"),this.html("span.time").textContent=o,this.stalled&&!this.subload&&(this.stalled=!1,this.onWaiting(t))},this.onProgress=function(){var t,e,i=this.video,s=this.html("svg.bar"),n=i.buffered.length;if(0<n&&i.duration!==1/0&&!isNaN(i.duration))for(s.querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)});0<n--;)(e=document.createElement("rect")).setAttribute("class","buffer"),99.8<(t=(i.buffered.end(n)-i.buffered.start(n))/i.duration*100)?e.setAttribute("style","left:0%; width:100%;"):e.setAttribute("style","left:"+i.buffered.start(n)/i.duration*100+"%; width:"+t+"%;"),s.appendChild(e)},this.onPlay=function(){[1,2].has(this.video.networkState)&&(this.video.paused?(this.html("span.play").textContent="",apijs.dialog.remove("playing")):(this.html("span.play").textContent="",apijs.dialog.add("playing")))},this.onWaiting=function(t){apijs.log("player:video:onWaiting:"+t.type+" stalled:"+this.stalled+"/subload:"+this.subload),apijs.dialog[["loadstart","waiting","seeking","stalled"].has(t.type)?"add":"remove"]("loading")},this.actionPlay=function(){var t=this.video;[1,2].has(t.networkState)&&(t.ended||t.paused?t.play():t.pause())},this.actionVolume=function(t){var e=this.video,i=this.html("svg.vol"),s=i.offsetWidth,n=0;if([1,2].has(e.networkState)){if("object"==typeof t&&!isNaN(t.clientX)){for(;n+=i.offsetLeft,i=i.offsetParent;);n=(n=100*(t.clientX-n)/s/100)<=.1?0:.92<n?1:n,e.volume=n,e.muted=!1}this.html("svg.vol rect").style.width=e.muted?0:100*e.volume+"%"}},this.actionPosition=function(t){var e=this.video,i=this.html("svg.bar"),s=i.offsetWidth,n=0;if([1,2].has(e.networkState)&&e.duration!==1/0&&!isNaN(e.duration)&&"object"==typeof t){for(;n+=i.offsetLeft,i=i.offsetParent;);n=(n=e.duration*(t.clientX-n)*100/s/100)<=1?0:n,e.currentTime=n}},this.actionVideotrack=function(t){var e,i=this.video.videoTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--n.currentTime}"object"==typeof t&&t.target.blur()},this.actionAudiotrack=function(t){var e,i=this.video.audioTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--n.currentTime}"object"==typeof t&&t.target.blur()},this.actionTexttrack=function(t){var e,i=this.video.textTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].mode=e==s?"showing":"hidden";this.subload=!0}"object"==typeof t&&t.target.blur()},this.actionVideo=function(t){this.html("svg.bar rect").style.width="0",this.html("svg.bar").querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)}),this.html("span.play").textContent="",this.updateSelect("videotrack",0),this.updateSelect("audiotrack",0),this.video.src=this.video.querySelectorAll("source")["object"==typeof t?t.target.value:t].src,"object"==typeof t&&t.target.blur()},this.htmlSvgPlayer=function(){var t,e,i,s=document.createElement("div");return s.setAttribute("class","apijsplayer noplaying"),(i=document.createElement("span")).setAttribute("class","btn play fnt"),i.appendChild(document.createTextNode("")),i.onclick=this.actionPlay.bind(this),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg bar"),(e=document.createElement("svg")).setAttribute("class","bar"),e.onclick=this.actionPosition.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","time"),i.appendChild(document.createTextNode("--:--")),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg vol nomobile"),(e=document.createElement("svg")).setAttribute("class","vol"),e.onclick=this.actionVolume.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks audiotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(133)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionAudiotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks videotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(132)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks video"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(131)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideo.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks texttrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(134)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionTexttrack.bind(this),(t=document.createElement("option")).appendChild(apijs.i18n.translateNode(135)),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","btn full fnt nomobile"),i.appendChild(document.createTextNode("")),i.onclick=function(){apijs.requestFullscreen(apijs.dialog.t1||this.video.parentNode)}.bind(this),s.appendChild(i),s},this.htmlTrack=function(t){var e=document.createElement("track");return e.setAttribute("kind",t[1]),e.setAttribute("label",t[2]),e.setAttribute("srclang",t[3]),e.setAttribute("src",t[4]),e.onload=function(t){apijs.log("player:track:onload "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e.onerror=function(t){apijs.log("player:track:onerror "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e},this.htmlSource=function(t){var e=document.createElement("source");return e.setAttribute("src",t),e.onerror=apijs.dialog.onMediaLoad,e},this.htmlOption=function(t,e){"object"==typeof e&&(e=""===e.label?e.language.toLowerCase():e.language.toLowerCase()+" - "+e.label);var i=document.createElement("option");return i.setAttribute("value",t),i.appendChild(document.createTextNode(e)),i},this.autoRun(n,t)},apijs.core.dialog=function(){"use strict";this.klass=[],this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null,this.ft=/information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g,this.ti="a,area,button,input,textarea,select,object,iframe",this.ns="http://www.w3.org/2000/svg",this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,this.d=null,this.dialogInformation=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("information",i).htmlParent().htmlContent(t,e).htmlBtnOk().show("button.confirm"):(console.error("apijs.dialog.dialogInformation invalid arguments",arguments),!1)},this.dialogConfirmation=function(t,e,i,s,n){return"string"==typeof t&&"string"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("confirmation",n).htmlParent().htmlContent(t,e).htmlBtnConfirm("button","apijs.dialog.actionConfirm();").show("button.confirm")):(console.error("apijs.dialog.dialogConfirmation invalid arguments",arguments),!1)},this.dialogFormOptions=function(t,e,i,s,n,a){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"function"==typeof s?(this.callback=s,this.args=n,this.init("options",a).htmlParent(i,"apijs.dialog.actionConfirm();").htmlContent(t,e).htmlBtnConfirm("submit").show(!0)):(console.error("apijs.dialog.dialogFormOptions invalid arguments",arguments),!1)},this.dialogFormUpload=function(t,e,i,s,n,a){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("upload",a).htmlParent(i,"apijs.upload.actionConfirm();").htmlContent(t,e).htmlUpload(s,"boolean"==typeof n&&n).htmlBtnConfirm("submit").show("button.browse"):(console.error("apijs.dialog.dialogFormUpload invalid arguments",arguments),!1)},this.dialogProgress=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("progress",i).htmlParent().htmlContent(t,e).htmlSvgProgress().show():(console.error("apijs.dialog.dialogProgress invalid arguments",arguments),!1)},this.dialogWaiting=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("waiting",i).htmlParent().htmlContent(t,e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogWaiting invalid arguments",arguments),!1)},this.dialogPhoto=function(t,e,i,s,n){var a="string"==typeof n;return n=a?"notransition slideshow loading "+n:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("photo",n).htmlParent().htmlMedia(t,e,i,s).htmlHelp(a,!1).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogPhoto invalid arguments",arguments),!1)},this.dialogVideo=function(t,e,i,s,n){var a="string"==typeof n;return n=a?"notransition slideshow loading "+n:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("video",n).htmlParent().htmlMedia(t,e,i,s).htmlHelp(a,t.indexOf("iframe")<0).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogVideo invalid arguments",arguments),!1)},this.dialogIframe=function(t,e,i){return"string"==typeof t&&"boolean"==typeof e?this.init("iframe","string"==typeof i?i+" loading":"loading",!e).htmlParent().htmlIframe(t).htmlBtnClose(e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogIframe invalid arguments",arguments),!1)},this.dialogAjax=function(t,e,i,s,n){return"string"==typeof t&&"boolean"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("ajax","string"==typeof n?n+" loading":"loading",!e).htmlParent().htmlBtnClose(e).htmlSvgLoader(!1).show(),this.xhr=new XMLHttpRequest,this.xhr.open("GET",t,!0),this.xhr.onreadystatechange=function(){4===this.xhr.readyState&&"function"==typeof this.callback&&(this.callback(this.xhr,this.args),this.remove("loading"))}.bind(this),this.xhr.send(),this):(console.error("apijs.dialog.dialogAjax invalid arguments",arguments),!1)},this.update=function(){return this.has("start","ready","end")&&(this.t1&&this.t1.setAttribute("class",this.klass.join(" ")),this.t2&&this.t2.setAttribute("class",this.klass.join(" "))),this},this.add=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.add argument is not a string",t),this.klass.indexOf(t)<0&&this.klass.push(t)},this),this.update()},this.remove=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.remove argument is not a string",t),-1<this.klass.indexOf(t)&&this.klass.splice(this.klass.indexOf(t),1)},this),this.update()},this.toggle=function(t,e){return"string"==typeof t&&"string"==typeof e||console.error("apijs.dialog.toggle argument is not a string",t,e),this.has(t)&&this.remove(t),this.has(e)||this.add(e),this.update()},this.has=function(){return this.klass.has(apijs.toArray(arguments))},this.actionClose=function(t){apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)&&history.pushState({},"",self.location.href.slice(0,self.location.href.indexOf("#"))),"object"==typeof t?"apijsDialog"!==t.target.getAttribute("id")||apijs.dialog.has("photo","video","progress","waiting","lock")||apijs.dialog.clear(!0):this.t1&&this.clear(!0)},this.onCloseBrowser=function(t){if(apijs.dialog.has("progress","waiting","lock"))return t.preventDefault(),t.stopPropagation(),t.m=apijs.i18n.translate(124),t.returnValue=t.m,t.m},this.onResizeBrowser=function(){var t=document.querySelector("body").clientWidth<=(apijs.dialog.has("photo","video")?900:460);apijs.dialog[t?"add":"remove"]("mobile"),t=document.querySelector("body").clientWidth<=300,apijs.dialog[t?"add":"remove"]("tiny")},this.onScrollBrowser=function(t){var e=apijs.dialog,i=t.target,s=!1;if(e.has("slideshow")&&!e.has("playing")&&!["OPTION","SELECT"].has(i.nodeName)&&["DOMMouseScroll","mousewheel","panleft","panright"].has(t.type))i=(new Date).getTime()/1e3,(e.scroll<1||i>1+e.scroll)&&(e.scroll=i,s=0<t.detail||t.wheelDelta<0,apijs.slideshow["panleft"===t.type||s?"actionNext":"actionPrev"]());else{if("OPTION"===i.nodeName)i=i.parentNode;else if(!["TEXTAREA","SELECT"].has(i.nodeName))for(;!0!==s&&"HTML"!==i.nodeName;)i.classList.contains("scrollable")?s=!0:i=i.parentNode;if("HTML"!==i.nodeName&&((s=0<t.detail||t.wheelDelta<0)&&i.scrollTop<i.scrollHeight-i.offsetHeight||!s&&0<i.scrollTop))return}t.preventDefault(),t.stopPropagation()},this.onScrollIframe=function(t){for(var e,i=t.target;i.parentNode;)i=i.parentNode;((e=0<t.detail||t.wheelDelta<0)&&i.defaultView.innerHeight+i.defaultView.pageYOffset>=i.body.offsetHeight-1||!e&&i.defaultView.pageYOffset<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e=apijs.dialog,i=e.media;e.has("progress","waiting","lock")?(t.ctrlKey&&[81,87,82,115,116].has(t.keyCode)||t.altKey&&115===t.keyCode||[27,116].has(t.keyCode))&&t.preventDefault():e.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(e.t1)):e.has("slideshow")?27===t.keyCode?(t.preventDefault(),e.actionClose()):35===t.keyCode?(t.preventDefault(),apijs.slideshow.actionLast()):36===t.keyCode?(t.preventDefault(),apijs.slideshow.actionFirst()):37===t.keyCode?(t.preventDefault(),apijs.slideshow.actionPrev()):39===t.keyCode&&(t.preventDefault(),apijs.slideshow.actionNext()):27===t.keyCode&&(t.preventDefault(),e.actionClose()),e.has("video")&&!e.has("videoiframe")&&(32===t.keyCode||80===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.ended||i.paused?i.play():i.pause())):38===t.keyCode||33===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&i.currentTime<i.duration-10&&(i.currentTime+=10)):40===t.keyCode||34===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&(10<i.currentTime?i.currentTime-=10:i.currentTime=0)):107===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),i.volume<.8?i.volume+=.2:i.volume=1)):109===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),.21<i.volume?i.volume-=.2:i.volume=0)):77===t.keyCode&&(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted=!i.muted))),[32,33,34,35,36,38,40].has(t.keyCode)&&(t.target&&["INPUT","TEXTAREA","OPTION","SELECT"].has(t.target.nodeName)||(t.preventDefault(),t.stopPropagation()))},this.onFullscreen=function(t){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;t&&apijs.log("dialog:onFullscreen:"+(e?"in":"out")),apijs.dialog[e?"add":"remove"]("fullscreen")},this.onIframeLoad=function(t){t.removeAttribute("class"),apijs.dialog.remove("loading"),t.contentWindow.document.addEventListener("keydown",window.parent.apijs.dialog.onKey),t.contentWindow.addEventListener("DOMMouseScroll",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("mousewheel",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("touchmove",window.parent.apijs.dialog.onScrollIframe,{passive:!1})},this.onMediaLoad=function(t){var e,i,s=apijs.dialog,n=s.media;t&&t.target&&(e=t.target.currentSrc||t.target.src,apijs.log("dialog:onMediaLoad:"+t.type+" "+(e?e.slice(e.lastIndexOf("/")+1):""))),n&&["load","durationchange"].has(t.type)?(s.remove("loading","error"),n.style.visibility="visible",n.hasAttribute("src")||"IMG"!==n.nodeName||n.setAttribute("src",n.imageLoader.src)):n&&"error"===t.type&&(s.toggle("loading","error"),n.removeAttribute("style"),(s=apijs.html(".tracks.video select"))&&t&&t.target&&0<(i=s.querySelectorAll("option")).length&&0<s.value.length&&(i[s.value].setAttribute("disabled","disabled"),s.selectedIndex+=1,"VIDEO"===t.target.nodeName&&""!==s.value&&n.videoPlayer.actionVideo(s)))},this.actionConfirm=function(){return this.has("options")&&!0!==this.callback(!1,this.args)||(this.add("lock","loading"),this.htmlSvgLoader(!1),apijs.html("div.btns").style.visibility="hidden",apijs.html("div.bbcode").style.visibility="hidden",self.setTimeout(function(){this.t2&&"FORM"===this.t2.nodeName?this.callback(this.t2.getAttribute("action"),this.args):this.t2&&this.callback(this.args)}.bind(this),12)),!1},this.init=function(t,e,i){return i=!0===i,"string"==typeof e?e=0<(e=e.replace(this.ft,"").trim()).length?i?e+" lock":e:i?"lock":null:i&&(e="lock"),this.t0&&this.clear(!1),this.klass.push("start"),this.klass.push(t),self.matchMedia("prefers-reduced-motion:reduce").matches&&this.klass.push("reduce"),"string"==typeof e&&(this.klass=this.klass.concat(e.split(" "))),this.t0=document.createDocumentFragment(),document.addEventListener("keydown",this.onKey),self.addEventListener("beforeunload",this.onCloseBrowser),self.addEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.addEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.addEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.addEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.setAttribute("tabindex","-1")}),this},this.show=function(t){this.onResizeBrowser(),this.onFullscreen(),0<this.height&&!this.has("photo","video")&&(this.t2.style.minHeight=this.height+"px");var e=apijs.html("#Dialog");return e?(this.toggle("start","ready"),this.t1=e,this.t1.appendChild(this.t0.firstChild.firstChild),this.t1.setAttribute("class",this.t2.getAttribute("class"))):this.has("notransition")?(this.toggle("start","ready"),document.querySelector("body").appendChild(this.t0)):(document.querySelector("body").appendChild(this.t0),self.setTimeout(function(){apijs.dialog.toggle("start","ready")},12)),apijs.config.dialog.closeOnClick&&!this.has("progress","waiting","lock")&&document.addEventListener("click",this.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.onFullscreen)),!0===t?self.setTimeout(function(){apijs.html("input:not([readonly]),textarea:not([readonly]),select:not([disabled])").focus()},12):"string"==typeof t&&apijs.html(t).focus(),!0},this.clear=function(t){return t&&this.xhr&&(this.callback=null,this.xhr.abort()),document.removeEventListener("keydown",this.onKey),self.removeEventListener("beforeunload",this.onCloseBrowser),self.removeEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.removeEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.removeEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.removeEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.removeAttribute("tabindex")}),apijs.config.dialog.closeOnClick&&document.removeEventListener("click",this.actionClose),this.has("photo","video")?(this.has("video")&&!this.has("videoiframe")&&this.t2.querySelectorAll("video, source, track").forEach(function(t){for(var e in t)0===e.indexOf("on")&&(t[e]=null);t.removeAttribute("src")}),this.media.videoPlayer=null,this.media.imageLoader=null,document.webkitFullscreenEnabled?document.removeEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.removeEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.removeEventListener("mozfullscreenchange",this.onFullscreen)):this.height=parseFloat(self.getComputedStyle(this.t2).height),t?(this.toggle("ready","end"),document.querySelector("body").removeChild(this.t1)):this.t1.removeChild(this.t2),this.klass=[],t&&(this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null),this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,!(this.d=null)},this.htmlParent=function(t,e){return this.t1=document.createElement("div"),this.t1.setAttribute("id","apijsDialog"),"string"==typeof t?(this.t2=document.createElement("form"),this.t2.setAttribute("action",t),this.t2.setAttribute("method","post"),this.t2.setAttribute("enctype","multipart/form-data"),this.t2.setAttribute("onsubmit","return "+e)):this.t2=document.createElement("div"),this.t2.setAttribute("id","apijsBox"),this.t1.appendChild(this.t2),this.t0.appendChild(this.t1),this},this.htmlContent=function(t,e){return 0<t.length&&(this.a=document.createElement("h1"),this.a.innerHTML=t.replace(/</g,"<").replace(/>/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0<e.length&&(this.a=document.createElement("div"),this.a.setAttribute("class","bbcode"),"["!==e[0]&&(e="[p]"+e+"[/p]"),this.a.innerHTML=e.replace(/</g,"<").replace(/>/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.a.querySelectorAll("a.popup").forEach(function(t){t.addEventListener("click",apijs.openTab)}),this.t2.appendChild(this.a)),this},this.htmlBtnOk=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","confirm"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(102)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnConfirm=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type",t),this.b.setAttribute("class","confirm"),"submit"!==t&&this.b.setAttribute("onclick",e),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(104)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","cancel"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(103)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnNavigation=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","navigation noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","prev"),this.b.setAttribute("id","apijsPrev"),this.b.setAttribute("onclick","apijs.slideshow.actionPrev();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","next"),this.b.setAttribute("id","apijsNext"),this.b.setAttribute("onclick","apijs.slideshow.actionNext();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","close"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(105)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a)),this},this.htmlUpload=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.b=document.createElement("input"),this.b.setAttribute("type","file"),this.b.setAttribute("name",t),this.b.setAttribute("id","apijsFile"),e&&this.b.setAttribute("multiple","multiple"),this.b.setAttribute("onchange","apijs.upload.actionChoose(this);"),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","browse"),this.b.setAttribute("onclick","this.previousSibling.click();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(e?109:108)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("div"),this.b.setAttribute("class","filenames"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgProgress=function(){return this.a=document.createElement("span"),this.a.setAttribute("class","info"),this.t2.appendChild(this.a),this.a=document.createElement("svg"),this.a.setAttribute("id","apijsProgress"),this.b=document.createElement("rect"),this.b.setAttribute("class","auto"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgLoader=function(t){return this.a=document.createElementNS(this.ns,"svg"),this.a.setAttribute("class","loader"),this.b=document.createElementNS(this.ns,"path"),!1!==t&&this.b.setAttribute("style","opacity:0;"),this.b.setAttribute("d","M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z"),this.c=document.createElementNS(this.ns,"animateTransform"),this.c.setAttribute("attributeName","transform"),this.c.setAttribute("type","rotate"),this.c.setAttribute("from","0 64 64"),this.c.setAttribute("to","360 64 64"),this.c.setAttribute("dur","5s"),this.c.setAttribute("repeatCount","indefinite"),this.b.appendChild(this.c),this.c=document.createElementNS(this.ns,"animate"),this.c.setAttribute("attributeName","opacity"),this.c.setAttribute("to","1"),this.c.setAttribute("dur","0.01s"),this.c.setAttribute("begin","1s"),this.c.setAttribute("fill","freeze"),!1!==t&&this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlMedia=function(t,e,i,s){var n;return this.a=document.createElement("dl"),this.a.setAttribute("class","media"),this.b=document.createElement("dt"),this.has("photo")?(this.media=document.createElement("img"),this.media.setAttribute("alt",s.replace('"',""))):0<t.indexOf("iframe")?(this.media=document.createElement("iframe"),this.media.setAttribute("type","text/html"),this.media.setAttribute("scrolling","no"),this.media.setAttribute("src",t)):(this.media=document.createElement("video"),this.media.setAttribute("controls","controls"),this.media.setAttribute("preload","metadata")),this.media.setAttribute("id","apijsMedia"),this.b.appendChild(this.media),this.a.appendChild(this.b),this.b=document.createElement("dd"),this.b.setAttribute("class","nomobile noplaying"),"false"===e&&"false"===i||(n=t.slice(t.lastIndexOf("/")+1),this.c=document.createElement("span"),"false"!==e&&"auto"!==e&&"false"!==i?this.c.appendChild(document.createTextNode(e+" ("+i+") ")):"false"!==e&&"auto"!==e?this.c.appendChild(document.createTextNode(e+" ")):"auto"===e&&"false"!==i?this.c.appendChild(document.createTextNode(n+" ("+i+") ")):"auto"===e?this.c.appendChild(document.createTextNode(n+" ")):"false"!==i&&this.c.appendChild(document.createTextNode("("+i+") ")),this.b.appendChild(this.c)),this.b.appendChild(document.createTextNode(s)),this.a.appendChild(this.b),this.t2.appendChild(this.a),this.has("photo")?(this.media.imageLoader=new Image,this.media.imageLoader.src=t,this.media.imageLoader.onload=this.onMediaLoad,this.media.imageLoader.onerror=this.onMediaLoad):0<t.indexOf("iframe")?(this.media.onload=function(t){this.onIframeLoad(this.media),this.onMediaLoad(t)}.bind(this),this.add("videoiframe")):apijs.startPlayer(this.media,t)?this.add("videoplayer"):(this.c=document.createElement("source"),this.c.setAttribute("src",t),this.c.onerror=this.onMediaLoad,this.media.appendChild(this.c),this.media.ondurationchange=this.onMediaLoad,this.media.onerror=this.onMediaLoad,this.add("videosource")),this},this.htmlHelp=function(t,e){var i,s,n=[t?["start",149,141]:[],t?["left","right",142]:[],e?["bottom","topk",144]:[],e?["minus","plus",145]:[],e?["M",146]:[],e?["P",143]:[],["F11",147],[150,148]];for(this.a=document.createElement("ul"),this.a.setAttribute("class","kbd nomobile nofullscreen");i=n.shift();)if(0<i.length){for(this.b=document.createElement("li");s=i.shift();)0<i.length?(this.c=document.createElement("kbd"),["M","P","F11"].has(s)?this.c.appendChild(document.createTextNode(s)):"string"==typeof s?this.c.setAttribute("class",s):this.c.appendChild(apijs.i18n.translateNode(s)),this.b.appendChild(this.c)):this.b.appendChild(apijs.i18n.translateNode(s));this.a.appendChild(this.b)}return this.t2.appendChild(this.a),this},this.htmlIframe=function(t){return this.a=document.createElement("iframe"),this.a.setAttribute("src",t),this.a.setAttribute("class","loading"),this.a.setAttribute("onload","apijs.dialog.onIframeLoad(this);"),this.t2.appendChild(this.a),this}},apijs.core.slideshow=function(){"use strict";this.current=null,this.init=function(){for(var t,e,i,s=apijs.config.slideshow.ids,n=0;e=apijs.html(s+"."+n,!0);n++){for(i=e.classList.contains("hoverload"),t=0;e=apijs.html(s+"."+n+"."+t,!0);t++)e.addEventListener("click",this.show),i&&e.addEventListener("mouseover",this.show);(e=apijs.html(s+"."+n+".99999",!0))&&e.addEventListener("click",this.show)}this.onPopState()},this.onPopState=function(){var t;new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)?(t=RegExp.$1.replace(/-/g,"."),apijs.html(t,!0)&&!apijs.dialog.has("slideshow")&&apijs.slideshow.show(t,!1)):apijs.slideshow.current&&apijs.dialog.actionClose()},this.show=function(t,e){var i,s,n,a=!1,o={};if("string"==typeof t)a=!0,i=apijs.html(t,!0),o.id=t;else{for(t.preventDefault(),i=t.target;"A"!==i.nodeName;)i=i.parentNode;if("mouseover"===t.type&&i.classList.contains("current"))return!1;o.id=i.getAttribute("id")}return o.prefix=apijs.config.slideshow.ids+"."+o.id.split(".")[1],o.number=parseInt(o.id.split(".")[2],10),o.gallery=apijs.html(o.prefix+".99999",!0),99999!==o.number&&(t=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]"),n=apijs.html(o.prefix,!0).querySelectorAll("dl"),o.gallery||t.length!==n.length?(t.forEach(function(t){t.classList.remove("current")}),i.setAttribute("class","current")):(n.forEach(function(t){t.classList.remove("current")}),i.parentNode.parentNode.setAttribute("class","current"))),o.gallery?(99999===o.number&&(a=!0,i=o.gallery.hasAttribute("class")?o.gallery.getAttribute("class"):o.prefix+".0",i=apijs.html(i,!0),o.number=parseInt(i.getAttribute("id").split(".")[2],10),o.id=o.id.replace(99999,o.number)),o.config=i.querySelector("input").getAttribute("value").split("|"),0<(n=o.config.shift()).indexOf(";")&&(s=(n=n.split(";"))[1].trim(),n=n[0].trim()),o.gallery.setAttribute("href",i.getAttribute("href")),o.gallery.querySelector("img").setAttribute("src",n),o.gallery.querySelector("img").setAttribute("srcset",s||""),o.gallery.querySelector("img").setAttribute("alt",i.querySelector("img").getAttribute("alt")),o.gallery.setAttribute("class",o.id)):(a=!0,o.config=i.querySelector("input").getAttribute("value").split("|")),o.url=i.getAttribute("href"),o.type=i.getAttribute("type").substr(0,5).replace("image","dialogPhoto").replace("video","dialogVideo"),o.type=0===o.type.indexOf("dialog")?o.type:"dialogPhoto",o.styles=apijs.html(o.prefix,!0).getAttribute("class").replace(/gallery|album/g,"").trim(),a&&(apijs.dialog[o.type](o.url,o.config[0],o.config[1],o.config[2],o.styles),s=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]").length-(o.gallery?2:1),apijs.slideshow.current={number:o.number,first:o.prefix+".0",prev:0<o.number?o.prefix+"."+(o.number-1):null,next:o.number<s?o.prefix+"."+(o.number+1):null,last:o.prefix+"."+s,total:s},apijs.slideshow.current.prev&&apijs.html("#Prev").removeAttribute("disabled"),apijs.slideshow.current.next&&apijs.html("#Next").removeAttribute("disabled"),apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&("boolean"!=typeof e||e)&&(e=0<(e=self.location.href).indexOf("#")?e.slice(0,e.indexOf("#")):e,e+="#"+(o.prefix+"."+(99999===o.number?0:o.number)).replace(/\./g,"-"),history.pushState({},"",e))),a},this.actionFirst=function(){return!!(this.current&&0<this.current.number&&this.current.number<=this.current.total)&&this.show(this.current.first)},this.actionPrev=function(){return!!(this.current&&this.current.prev&&0<this.current.number)&&this.show(this.current.prev)},this.actionNext=function(){return!!(this.current&&this.current.next&&this.current.number<this.current.total)&&this.show(this.current.next)},this.actionLast=function(){return!!(this.current&&0<=this.current.number&&this.current.number<this.current.total)&&this.show(this.current.last)}},apijs.core.upload=function(){"use strict";this.title=null,this.action=null,this.input=null,this.onemax=0,this.allmax=0,this.exts=null,this.callback=null,this.args=null,this.icon=null,this.files=[],this.start=0,this.end=0,this.sendFile=function(t,e,i,s,n,a,o,r){r=this.sendFiles(t,e,i,s,0,n,a,o,r);return r||console.error("apijs.upload.sendFile invalid arguments",arguments),r},this.sendFiles=function(t,e,i,s,n,a,o,r,l){if(this.files=[],!0!==t&&(this.title=t,this.action=e,this.input=i,this.onemax=s,this.allmax=n,this.exts="string"==typeof a?a.split(","):["*"],this.callback=o,this.args=r,this.icon=l),"string"!=typeof this.title||"string"!=typeof this.action||"string"!=typeof this.input||"number"!=typeof this.onemax||"number"!=typeof this.allmax||"function"!=typeof this.callback)return("number"!=typeof this.allmax||0<this.allmax)&&console.error("apijs.upload.sendFiles invalid arguments",arguments),!1;r=0<this.allmax,l="*"===this.exts.join()?apijs.i18n.translate(161):1===this.exts.length?apijs.i18n.translate(162,this.exts.join()):apijs.i18n.translate(163,this.exts.slice(0,-1).join(", "),this.exts.slice(-1));return l+="[br]"+apijs.i18n.translate(r?165:164,apijs.formatNumber(this.onemax),r?apijs.formatNumber(this.allmax):"").replace("|","[br]"),apijs.dialog.dialogFormUpload(this.title,l,this.action,this.input,r,this.icon)},this.actionChoose=function(t){var e,i=[],s=0;this.files=[],this.exts&&(Array.prototype.forEach.call(t.files,function(t){e=t.name+' <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(t.size/1048576))+"</span>","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?e+=' <span class="ee">'+apijs.i18n.translate(168)+"</span>":t.size<=0?e+=' <span class="ee">'+apijs.i18n.translate(169)+"</span>":this.files.push(t):e+=' <span class="ee">'+apijs.i18n.translate(167)+"</span>",i.push("<div>"+e+"</div>"),s+=t.size/1048576},this),0<this.allmax&&s>=this.allmax&&i.push('<div class="tt"> = <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(s))+'</span> <span class="ee">'+apijs.i18n.translate(168)+"</span></div>"),this.files.length===t.files.length?(apijs.html("button.confirm").removeAttribute("disabled"),apijs.html("button.confirm").focus()):apijs.html("button.confirm").setAttribute("disabled","disabled"),apijs.html("div.filenames").innerHTML=i.join(" "))},this.actionConfirm=function(){var s,e,t;return 0<this.files.length?(s=new FormData,(e=new XMLHttpRequest).open("POST",this.action+(0<this.action.indexOf("?")?"&isAjax=true":"?isAjax=true"),!0),"string"==typeof apijs.config.upload.tokenValue&&(e.setRequestHeader(apijs.config.upload.tokenName,apijs.config.upload.tokenValue),s.append(apijs.config.upload.tokenName,apijs.config.upload.tokenValue)),3<(t=apijs.serialize(apijs.dialog.t2)).length&&t.split("&").forEach(function(t){t=t.split("="),s.append(t[0],t[1])}),this.files.forEach(function(t,e,i){s.append(1<i.length&&this.input.indexOf("[")<0?this.input+"_"+e:this.input,t)},this),e.onreadystatechange=function(t){4===e.readyState&&(t=e.responseText.trim(),[0,200].has(e.status)?(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.upload.send",xhr:e}})),apijs.log("upload:onreadystatechange status:200 message:"+t),0===t.indexOf("success-")?(this.updateTitle(),this.callback(t.slice(8),this.args)):this.onError(195,t)):(apijs.log("upload:onreadystatechange status:"+e.status+" message: "+t),this.onError(194,e.status)))}.bind(this),e.upload.onloadstart=this.onStart.bind(this),e.upload.onprogress=this.onProgress.bind(this),e.upload.onload=this.onProgress.bind(this),e.upload.onerror=this.onError.bind(this),e.send(s)):apijs.html("button.browse").focus(),!1},this.onStart=function(){this.start=this.end=Math.round((new Date).getTime()/1e3),apijs.dialog.dialogProgress(this.title,apijs.i18n.translate(125),this.icon)},this.onError=function(t,e){this.updateTitle(),"number"==typeof t?e="[p]"+apijs.i18n.translate(t)+"[/p] "+e:"string"!=typeof e&&(e="[p]"+apijs.i18n.translate(193)+"[/p]"),e+="[p]"+apijs.i18n.translate(196,'href="apijs://restart" onclick="apijs.upload.sendFile(true); return false;"')+"[/p]",apijs.dialog.dialogInformation(this.title,e,"string"==typeof this.icon?"upload error "+this.icon:"upload error")},this.onProgress=function(t){var e,i,s,n,a,o,r=Math.round((new Date).getTime()/1e3);t.lengthComputable&&"progress"===t.type&&r>=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),r=100*(a=r-this.start)/e+10,24<a&&(n=Math.round(r-a),n=10*Math.ceil(n/10),o=Math.ceil(n/60),s=Math.round(t.loaded/a/1024),a<40||r<90?(i=184,n=null):1<o?(i=181,n=o):50<n?(i=182,n=1):i=183),this.updateProgress(e,i,s,n))):"load"===t.type&&(n=Math.round((new Date).getTime()/1e3)-this.start,o=Math.ceil(n/60),0<(s=Math.round(t.loaded/n/1024))&&s!==1/0?1<o?(i=185,n=o):50<n?(i=186,n=1):20<n?i=187:(i=188,n=null):n=s=null,this.updateTitle(100),this.updateProgress(100,i,s,n))},this.updateProgress=function(t,e,i,s){var n,a=apijs.html("rect"),o=apijs.html("span.info");99<t?(n="100%",a.setAttribute("class","end"),a.style.width="",apijs.html("p").textContent=apijs.i18n.translate(126)):(a.style.width=n=t+"%",a.hasAttribute("class")&&a.removeAttribute("class")),"number"==typeof e&&"number"==typeof i&&"number"==typeof s?n=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1),s):"number"==typeof e&&"number"==typeof i&&(n=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1))),o.textContent=n},this.updateTitle=function(t){"number"==typeof t?document.title=/^\d{1,3}% - /.test(document.title)?t+"% - "+document.title.slice(document.title.indexOf(" - ")+3):t+"% - "+document.title:/^\d{1,3}% - /.test(document.title)&&(document.title=document.title.slice(document.title.indexOf(" - ")+3))}};
|
|
7
|
+
Array.prototype.has||(Array.prototype.has=function(t,e){if(t instanceof Array){for(e in t)if(t.hasOwnProperty(e)&&this.has(t[e]))return!0}else for(e in this)if(this.hasOwnProperty(e)&&this[e]===t)return!0;return!1}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(t,e,i){for(e=e||window,i=0;i<this.length;i++)t.call(e,this[i],i,this)});var apijs=new function(){"use strict";this.core={},this.version=670,this.config={lang:"auto",debug:!1,dialog:{closeOnClick:!1,restrictNavigation:!0,player:!0},slideshow:{ids:"slideshow",anchor:!0},upload:{tokenName:"X-CSRF-Token",tokenValue:null}},this.start=function(){var t;if(console.info("APIJS "+this.version.toString().split("").join(".")+" - hello - 1 MB/Mo = 1024 kB/ko"),document.getElementById("oldBrowser"))throw new Error("APIJS canceled, #oldBrowser detected!");(t=document.querySelector('link[href*="apijs/fontello.woff2"]'))&&t.getAttribute("href").indexOf("?a3ab5acff3")<0&&console.error("APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3"),(t=document.querySelector('script[src*="apijs.min.js?v="]'))&&t.getAttribute("src").indexOf("?v="+this.version)<0&&console.error("APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v="+this.version),this.i18n=new this.core.i18n,this.dialog=new this.core.dialog,this.upload=new this.core.upload,this.slideshow=new this.core.slideshow,self.dispatchEvent(new CustomEvent("apijsbeforeload")),this.i18n.init(),this.slideshow.init(),document.querySelectorAll("video.apijsplayer[data-src]").forEach(function(t){apijs.startPlayer(t,t.getAttribute("data-src"))}),self.addEventListener("popstate",this.slideshow.onPopState),self.addEventListener("hashchange",this.slideshow.onPopState),this.config.debug&&(console.info("APIJS available languages: "+Object.keys(this.i18n.data).join(" ")),console.info("APIJS language loaded: "+this.config.lang),console.info("APIJS successfully started")),self.dispatchEvent(new CustomEvent("apijsload"))},this.formatNumber=function(e,t){var i,s="number"==typeof t?t:!1===t?0:2;try{i=new Intl.NumberFormat(this.config.lang,{minimumFractionDigits:s,maximumFractionDigits:s}).format(e)}catch(t){i=e.toFixed(s)}return"number"==typeof t?i:i.replace(/[.,]00$/,"")},this.startPlayer=function(t,e){return!0===this.config.dialog.player?(t.videoPlayer=new this.core.player(t,e),t.parentNode.classList.add("apijsvideoplayer"),!0):"function"==typeof this.config.dialog.player&&(this.config.dialog.player(t,e),!0)},this.toArray=function(t){return Array.prototype.slice.call(t,0)},this.openTab=function(t){t.preventDefault(),0<this.href.length&&self.open(this.href)},this.log=function(t){this.config.debug&&console.info("APIJS "+t)},this.html=function(t,e){return!0===e||0===t.indexOf("#")?document.getElementById(t.replace("#","apijs")):this.dialog.t1?this.dialog.t1.querySelector(t):null},this.requestFullscreen=function(t){document.webkitFullscreenElement?document.webkitCancelFullScreen():document.mozFullScreenElement?document.mozCancelFullScreen():document.fullscreenElement?document.cancelFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen&&t.mozRequestFullScreen()},this.serialize=function(t,i){var s=[];return i="string"==typeof i?i:"",Array.prototype.forEach.call(t.elements,function(t,e){if(t.name&&!t.disabled&&!["file","reset","submit","button"].has(t.type)&&0===t.name.indexOf(i))if("select-multiple"===t.type)for(e=0;e<t.options.length;e++)t.options[e].selected&&s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[e].value));else["checkbox","radio"].has(t.type)&&!t.checked||s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),s.join("&")}};"function"==typeof self.addEventListener&&self.addEventListener("load",apijs.start.bind(apijs)),apijs.core.i18n=function(){"use strict";this.data={cs:{103:"Zrušit",104:"Potvrzení",105:"Zavřít",106:"Předchozí",107:"Následující",132:"video stopa",133:"zvuková stopa",134:"titulky",142:"předchozí/následující",144:"zpět/vpřed",146:"ztlumit",149:"Konec",150:"Esc"},de:{103:"Abbrechen",104:"Bestätigen",105:"Schließen",106:"Vorheriges",107:"Nächstes",108:"Datei wählen",109:"Dateien wählen",124:"Verarbeitung läuft...",132:"videospur",133:"audiospur",134:"untertitel",142:"vorheriges/nächstes",143:"wiedergabe/pause",144:"rückwärts/vorwärts",145:"leiser/lauter",146:"ton aus",147:"vollbild",148:"beenden",149:"Ende",150:"Esc",161:"Alle Dateien wurden akzeptiert.",162:"Akzeptiertes Dateiformat: §.",163:"Akzeptiertes Dateiformate: § und §.",164:"Maximale Größe: § MB.",167:"Unerlaubtes Format",168:"Format zu gross",169:"Leere Datei",181:"§% - § kB/s - Noch § Minuten",182:"§% - § kB/s - Noch § Minute",183:"§% - § kB/s - Noch § Sekunden",185:"§% - bis § kB/s in § Minuten",186:"§% - bis § kB/s in § Minute",187:"§% - bis § kB/s in § Sekunden",188:"§% - bis § kB/s",191:"Abbrechen",192:"Sind Sie sicher? [span]Ja[/span] - Nein",193:"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.",194:"Es ist ein Fehler beim Senden.",195:"Es ist ein Fehler bei der Verarbeitung.",196:"Wir laden Sie ein es erneut zu [a §]versuchen[/a]."},en:{102:"Ok",103:"Cancel",104:"Confirm",105:"Close",106:"Previous",107:"Next",108:"Choose a file",109:"Choose one or multiple files",124:"Operation in progress...",125:"Upload in progress...",126:"Processing file in progress...",127:"Drag and drop your files here",131:"video",132:"video track",133:"audio track",134:"subtitles",135:"off",141:"first/last",142:"previous/next",143:"play/pause",144:"backward/forward",145:"decrease/increase the volume",146:"mute",147:"full screen",148:"quit",149:"End",150:"Escape",161:"All files are accepted.",162:"Accepted file format: §.",163:"Accepted file formats: § and §.",164:"Maximum size: § MB.",165:"Maximum size by file: § MB.|Total maximum size: § MB.",166:"§ MB",167:"Format not allowed",168:"Size too large",169:"File empty",181:"§% - § kB/s - § minutes left",182:"§% - § kB/s - § minute left",183:"§% - § kB/s - § seconds left",184:"§% - § kB/s",185:"§% - at § kB/s in § minutes",186:"§% - at § kB/s in § minute",187:"§% - at § kB/s in § seconds",188:"§% - at § kB/s",191:"Interrupt",192:"Are you sure? [span]Yes[/span] - No",193:"It seems that an unlikely mistake just happened... Please try again.",194:"An error occurred while sending.",195:"An error occurred while processing.",196:"We invite you to [a §]try again[/a]."},es:{102:"Aceptar",103:"Cancelar",104:"Confirmar",105:"Cerrar",106:"Anterior",107:"Siguiente",108:"Elegir un fichero",109:"Elegir uno o varios ficheros",124:"Operación en curso...",125:"Envío en progreso...",126:"Tratamiento en curso...",131:"vídeo",132:"pista de vídeo",133:"pista de audio",134:"subtítulos",142:"anterior/siguiente",143:"reproducir/pausa",144:"retroceder/avanzar",145:"bajar/subir volumen",146:"silenciar",147:"pantalla completa",148:"salir",149:"Fin",150:"Esc",161:"Se aceptan todos los archivos.",162:"Formato de archivo aceptado: §.",163:"Formatos de archivos aceptados: § y §.",164:"Tamaño máximo: § MB.",165:"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.",167:"Formato no autorizado",168:"Tamaño demasiado importante",169:"Fichero vacío",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - a § kB/s en § minutos",186:"§% - a § kB/s en § minuto",187:"§% - a § kB/s en § segundos",188:"§% - a § kB/s",191:"Interrumpir",192:"¿Está seguro(a)? [span]Sí[/span] - No",193:"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.",194:"Se produjo un error durante el envío.",195:"Se produjo un error durante el procesamiento.",196:"Le invitamos a [a §]intentar de nuevo[/a]."},fr:{103:"Annuler",104:"Valider",105:"Fermer",106:"Précédent",107:"Suivant",108:"Choisir un fichier",109:"Choisir un ou plusieurs fichiers",124:"Opération en cours...",125:"Envoi en cours...",126:"Traitement en cours...",127:"Faites glisser et déposez vos fichiers ici",131:"vidéo",132:"piste vidéo",133:"piste audio",134:"sous-titres",141:"premier/dernier",142:"précédent/suivant",143:"lecture/pause",144:"reculer/avancer",145:"réduire/augmenter le volume",146:"couper le son",147:"plein écran",148:"quitter",149:"Fin",150:"Échap",161:"Tous les fichiers sont acceptés.",162:"Format de fichier accepté : §.",163:"Formats de fichier acceptés : § et §.",164:"Taille maximale : § Mo.",165:"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.",166:"§ Mo",167:"Format non autorisé",168:"Taille trop importante",169:"Fichier vide",181:"§% - § ko/s - § minutes restantes",182:"§% - § ko/s - § minute restante",183:"§% - § ko/s - § secondes restantes",184:"§% - § ko/s",185:"§% - à § ko/s en § minutes",186:"§% - à § ko/s en § minute",187:"§% - à § ko/s en § secondes",188:"§% - à § ko/s",191:"Interrompre",192:"Êtes-vous sûr(e) ? [span]Oui[/span] - Non",193:"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.",194:"Une erreur est survenue lors de l'envoi.",195:"Une erreur est survenue lors du traitement.",196:"Nous vous invitons à [a §]réessayer[/a]."},it:{103:"Annulla",104:"Conferma",105:"Chiudi",106:"Precedente",107:"Successivo",108:"Scegli un file",109:"Scegli uno o più file",124:"Operazione in corso...",125:"Invio in corso...",126:"Trattamento in corso...",132:"traccia video",133:"traccia audio",134:"sottotitoli",142:"precedente/successivo",143:"riproduci/pausa",144:"indietro/avanti",145:"riduci/aumenta volume",146:"silenzio",147:"schermo intero",148:"esci",149:"Fine",150:"Esc",161:"Tutti i file sono accettati.",162:"Formato del file accettato: §.",163:"Formati accettati: § et §.",164:"Dimensione massima: § MB.",167:"Formato non autorizzato",168:"Dimensione troppo importante",169:"File vuoto",181:"§% - § kB/s - § minuti rimanenti",182:"§% - § kB/s - § minuto rimanente",183:"§% - § kB/s - § secondi rimanenti",185:"§% - a § kB/s in § minuti",186:"§% - a § kB/s in § minuto",187:"§% - a § kB/s in § secondi",188:"§% - a § kB/s",191:"Interrompere",192:"Sei sicuro? [span]Si[/span] - No",193:"Sembra che un errore inaspettato si sia verificato... Riprova.",194:"Un errore si è verificato durante l'invio.",195:"Un errore si è verificato durante il trattamento.",196:"Vi invitiamo a [a §]riprovare[/a]."},ja:{103:"キャンセル",104:"承認",105:"閉じる",106:"前へ",107:"次へ",131:"ビデオ",132:"ビデオトラック",133:"オーディオトラック",134:"字幕",142:"前へ/次へ",144:"戻る/進む",146:"ミュート",147:"全画面表示",149:"終了",150:"Esc",166:"§ Mo",184:"§% - § Ko/s",192:"よろしいですか?[span]はい[/span] - いいえ"},nl:{103:"Annuleren",104:"Bevestigen",105:"Sluiten",106:"Vorige",107:"Volgende",132:"videospoor",133:"audiospoor",134:"ondertitels",142:"vorige/volgende",144:"achteruit/vooruit",145:"volume omlaag/omhoog",146:"dempen",147:"schermvullend",150:"Esc"},pl:{103:"Anuluj",104:"Potwierdź",105:"Zamknij",106:"Poprzedni",107:"Następny",131:"obraz",132:"ścieżka obrazu",133:"ścieżka dźwiękowa",134:"napisy",142:"poprzedni/następny",144:"wstecz/przodu",145:"ciszej/głośniej",146:"wycisz",147:"pełny ekran",150:"Esc"},pt:{103:"Cancelar",104:"Confirmar",105:"Fechar",106:"Anterior",107:"Seguinte",108:"Escolher um ficheiro",109:"Escolher um ou vários ficheiros",124:"Operação em processo...",125:"Envio em processo...",126:"Tratamento em processo...",131:"vídeo",132:"faixa de vídeo",133:"faixa de áudio",134:"legendas",142:"anterior/seguinte",143:"reprodução/pausa",144:"recuar/avançar",145:"diminuir/aumentar volume",146:"sem som",147:"ecrã completo",148:"sair",149:"Fim",150:"Esc",161:"Todos os ficheiros foram aceites.",162:"Formato do ficheiro aceite: §.",163:"Formatos de ficheiro aceites: § e §.",164:"Tamanho máximo: § MB.",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - § kB/s em § minutos",186:"§% - § kB/s em § minuto",187:"§% - § kB/s em § segundos",188:"§% - § kB/s",192:"Tem a certeza? [span]Sim[/span] - Não",193:"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.",194:"Ocorreu um erro ao enviar.",195:"Ocorreu um erro ao processar.",196:"Convidamo-lo a [a §]tentar novamente[/a]."},ptbr:{107:"Próximo",124:"Operação em andamento...",125:"Envio em andamento...",126:"Tratamento em andamento...",132:"trilha de vídeo",133:"trilha de áudio",142:"anterior/próximo",144:"retroceder/avançar",146:"sem áudio",147:"tela inteira",149:"Final"},ru:{102:"Ок",103:"Отмена",104:"Подтвердить",105:"Закрыть",106:"Предыдущий",107:"Следующий",108:"Выберите файл",124:"Операция в процессе...",131:"видео",132:"видеодорожка",133:"аудиодорожка",134:"субтитры",142:"предыдущий/следующий",143:"воспроизведение/пауза",144:"назад/вперед",145:"понизить/повысить громкость",146:"выключить звук",147:"полноэкранный режим",148:"выйти",150:"Esc",161:"Все файлы приняты.",162:"Формат файла: §.",163:"Форматы файлов: § и §.",164:"Максимальный размер: § MB.",181:"§% - § kB/s - осталось § минут",182:"§% - § kB/s - осталось § минут",183:"§% - § kB/s - осталось § секунд",185:"§% - § kB/s за § минут",186:"§% - § kB/s за § минут",187:"§% - § kB/s за § секунд",188:"§% - § kB/s",192:"Вы уверены? [span]Да[/span] - нет",193:"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.",194:"Возникла ошибка при отправке файла.",195:"Возникла ошибка при обработке файла."},sk:{103:"Zrušiť",104:"Potvrdiť",105:"Zavrieť",106:"Dozadu",107:"Ďalej",133:"zvuková stopa",134:"titulky",142:"dozadu/ďalej",144:"dozadu/dopredu",145:"znizit/zvysit hlasitost",146:"stlmiť",150:"Esc"},tr:{103:"İptal",104:"Onayla",105:"Kapat",106:"Önceki",107:"Sonraki",131:"görüntü",132:"görüntü kaydı",133:"ses kaydı",134:"altyazılar",142:"önceki/sonraki",144:"geri/i̇leri",145:"ses kısar/açar",146:"sesi kapatma",147:"tam ekran",149:"Son",150:"Esc",192:"Emin misiniz ? [span]Evet[/span] - Hayır"},uk:{103:"Відмінити",104:"Підтвердити",105:"Закрити",106:"Попередній",107:"Наступний",131:"відео",132:"відеодоріжка",133:"звукова доріжка",134:"субтитри",142:"попередній/наступний",144:"назад/вперед",145:"зменшити/збільшити гучність",146:"вимкнути звук",149:"Кінець",150:"Esc"},zh:{103:"取消",104:"确认",105:"关闭",106:"上一个",107:"下一个",131:"视频",132:"视频轨道",133:"音频轨道",134:"字幕",142:"上一个/下一个",144:"快退/快进",145:"音量减/增",146:"静音",147:"全屏",150:"Esc",192:"您确定吗?[span]是[/span] - 否"}},this.init=function(){var t=apijs.config.lang,e=document.querySelector("html");-1<t.indexOf("auto")&&"string"==typeof(t=e.getAttribute("xml:lang")||e.getAttribute("lang"))&&(t=(t=t.replace(/[-_]/g,"").toLowerCase()).slice(0,4),this.data.hasOwnProperty(t)||(t=t.slice(0,2)),this.data.hasOwnProperty(t)&&(apijs.config.lang=t)),this.data.hasOwnProperty(t)||(apijs.config.lang="en")},this.translate=function(t){var e=apijs.config.lang,i=1,s="";if("string"!=typeof this.data[e][t])if(3<e.length&&"string"==typeof this.data[e.slice(0,2)][t])e=e.slice(0,2);else{if("en"===e||"string"!=typeof this.data.en[t])return t;e="en"}return 1<arguments.length?(this.data[e][t].split("§").forEach(function(t){s+=i<this.length?t+this[i++]:t},arguments),s):this.data[e][t]},this.translateNode=function(){return document.createTextNode(this.translate.apply(this,arguments))},this.changeLang=function(t){if("string"==typeof t){if(-1<t.indexOf("auto"))return apijs.config.lang="auto",this.init(),!0;if(t=t.replace(/[-_]/g,""),this.data.hasOwnProperty(t))return apijs.config.lang=t,!0}return!1}},apijs.core.dialog=function(){"use strict";this.klass=[],this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null,this.ft=/information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g,this.ti="a,area,button,input,textarea,select,object,iframe",this.ns="http://www.w3.org/2000/svg",this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,this.d=null,this.dialogInformation=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("information",i).htmlParent().htmlContent(t,e).htmlBtnOk().show("button.confirm"):(console.error("apijs.dialog.dialogInformation invalid arguments",arguments),!1)},this.dialogConfirmation=function(t,e,i,s,a){return"string"==typeof t&&"string"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("confirmation",a).htmlParent().htmlContent(t,e).htmlBtnConfirm("button","apijs.dialog.actionConfirm();").show("button.confirm")):(console.error("apijs.dialog.dialogConfirmation invalid arguments",arguments),!1)},this.dialogFormOptions=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"function"==typeof s?(this.callback=s,this.args=a,this.init("options",n).htmlParent(i,"apijs.dialog.actionConfirm();").htmlContent(t,e).htmlBtnConfirm("submit").show(!0)):(console.error("apijs.dialog.dialogFormOptions invalid arguments",arguments),!1)},this.dialogFormUpload=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("upload",n).htmlParent(i,"apijs.upload.actionConfirm();","apijs.upload.actionDrag(event);").htmlContent(t,e).htmlUpload(s,"boolean"==typeof a&&a).htmlBtnConfirm("submit").show("button.browse"):(console.error("apijs.dialog.dialogFormUpload invalid arguments",arguments),!1)},this.dialogProgress=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("progress",i).htmlParent().htmlContent(t,e).htmlSvgProgress().show():(console.error("apijs.dialog.dialogProgress invalid arguments",arguments),!1)},this.dialogWaiting=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("waiting",i).htmlParent().htmlContent(t,e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogWaiting invalid arguments",arguments),!1)},this.dialogPhoto=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("photo",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,!1).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogPhoto invalid arguments",arguments),!1)},this.dialogVideo=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("video",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,t.indexOf("iframe")<0).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogVideo invalid arguments",arguments),!1)},this.dialogIframe=function(t,e,i){return"string"==typeof t&&"boolean"==typeof e?this.init("iframe","string"==typeof i?i+" loading":"loading",!e).htmlParent().htmlIframe(t).htmlBtnClose(e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogIframe invalid arguments",arguments),!1)},this.dialogAjax=function(t,e,i,s,a){return"string"==typeof t&&"boolean"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("ajax","string"==typeof a?a+" loading":"loading",!e).htmlParent().htmlBtnClose(e).htmlSvgLoader(!1).show(),this.xhr=new XMLHttpRequest,this.xhr.open("GET",t,!0),this.xhr.onreadystatechange=function(){4===this.xhr.readyState&&"function"==typeof this.callback&&(this.callback(this.xhr,this.args),this.remove("loading"))}.bind(this),this.xhr.send(),this):(console.error("apijs.dialog.dialogAjax invalid arguments",arguments),!1)},this.update=function(){return this.has("start","ready","end")&&(this.t1&&this.t1.setAttribute("class",this.klass.join(" ")),this.t2&&this.t2.setAttribute("class",this.klass.join(" "))),this},this.add=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.add argument is not a string",t),this.klass.indexOf(t)<0&&this.klass.push(t)},this),this.update()},this.remove=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.remove argument is not a string",t),-1<this.klass.indexOf(t)&&this.klass.splice(this.klass.indexOf(t),1)},this),this.update()},this.toggle=function(t,e){return"string"==typeof t&&"string"==typeof e||console.error("apijs.dialog.toggle argument is not a string",t,e),this.has(t)&&this.remove(t),this.has(e)||this.add(e),this.update()},this.has=function(){return this.klass.has(apijs.toArray(arguments))},this.actionClose=function(t){apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)&&history.pushState({},"",self.location.href.slice(0,self.location.href.indexOf("#"))),"object"==typeof t?"apijsDialog"!==t.target.getAttribute("id")||apijs.dialog.has("photo","video","progress","waiting","lock")||apijs.dialog.clear(!0):this.t1&&this.clear(!0)},this.onCloseBrowser=function(t){if(apijs.dialog.has("progress","waiting","lock"))return t.preventDefault(),t.stopPropagation(),t.m=apijs.i18n.translate(124),t.returnValue=t.m,t.m},this.onResizeBrowser=function(){var t=document.querySelector("body"),e=t.clientWidth<=(apijs.dialog.has("photo","video")?900:460);apijs.dialog[e?"add":"remove"]("mobile"),e=t.clientWidth<=300,apijs.dialog[e?"add":"remove"]("tiny")},this.onScrollBrowser=function(t){var e=apijs.dialog,i=t.target,s=!1;if(e.has("slideshow")&&!e.has("playing")&&!["OPTION","SELECT"].has(i.nodeName)&&["DOMMouseScroll","mousewheel","panleft","panright"].has(t.type))i=(new Date).getTime()/1e3,(e.scroll<1||i>1+e.scroll)&&(e.scroll=i,s=0<t.detail||t.wheelDelta<0,apijs.slideshow["panleft"===t.type||s?"actionNext":"actionPrev"]());else{if("OPTION"===i.nodeName)i=i.parentNode;else if(!["TEXTAREA","SELECT"].has(i.nodeName))for(;!0!==s&&"HTML"!==i.nodeName;)i.classList.contains("scrollable")?s=!0:i=i.parentNode;if("HTML"!==i.nodeName&&((s=0<t.detail||t.wheelDelta<0)&&i.scrollTop<i.scrollHeight-i.offsetHeight||!s&&0<i.scrollTop))return}t.preventDefault(),t.stopPropagation()},this.onScrollIframe=function(t){for(var e,i=t.target;i.parentNode;)i=i.parentNode;((e=0<t.detail||t.wheelDelta<0)&&i.defaultView.innerHeight+i.defaultView.pageYOffset>=i.body.offsetHeight-1||!e&&i.defaultView.pageYOffset<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e=apijs.dialog,i=e.media;e.has("progress","waiting","lock")?(t.ctrlKey&&[81,87,82,115,116].has(t.keyCode)||t.altKey&&115===t.keyCode||[27,116].has(t.keyCode))&&t.preventDefault():e.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(e.t1)):e.has("slideshow")?27===t.keyCode?(t.preventDefault(),e.actionClose()):35===t.keyCode?(t.preventDefault(),apijs.slideshow.actionLast()):36===t.keyCode?(t.preventDefault(),apijs.slideshow.actionFirst()):37===t.keyCode?(t.preventDefault(),apijs.slideshow.actionPrev()):39===t.keyCode&&(t.preventDefault(),apijs.slideshow.actionNext()):27===t.keyCode&&(t.preventDefault(),e.actionClose()),e.has("video")&&!e.has("videoiframe")&&(32===t.keyCode||80===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.ended||i.paused?i.play():i.pause())):38===t.keyCode||33===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&i.currentTime<i.duration-10&&(i.currentTime+=10)):40===t.keyCode||34===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&(10<i.currentTime?i.currentTime-=10:i.currentTime=0)):107===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),i.volume<.8?i.volume+=.2:i.volume=1)):109===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),.21<i.volume?i.volume-=.2:i.volume=0)):77===t.keyCode&&(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted=!i.muted))),[32,33,34,35,36,38,40].has(t.keyCode)&&(t.target&&(["INPUT","TEXTAREA","OPTION","SELECT"].has(t.target.nodeName)||t.target.classList.contains("scrollable"))||(t.preventDefault(),t.stopPropagation()))},this.onFullscreen=function(t){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;t&&apijs.log("dialog:onFullscreen:"+(e?"in":"out")),apijs.dialog[e?"add":"remove"]("fullscreen")},this.onIframeLoad=function(t){t.removeAttribute("class"),apijs.dialog.remove("loading"),t.contentWindow.document.addEventListener("keydown",window.parent.apijs.dialog.onKey),t.contentWindow.addEventListener("DOMMouseScroll",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("mousewheel",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("touchmove",window.parent.apijs.dialog.onScrollIframe,{passive:!1})},this.onMediaLoad=function(t){var e,i,s=apijs.dialog,a=s.media;t&&t.target&&(e=t.target.currentSrc||t.target.src,apijs.log("dialog:onMediaLoad:"+t.type+" "+(e?e.slice(e.lastIndexOf("/")+1):""))),a&&["load","durationchange"].has(t.type)?(s.remove("loading","error"),a.style.visibility="visible",a.hasAttribute("src")||"IMG"!==a.nodeName||a.setAttribute("src",a.imageLoader.src)):a&&"error"===t.type&&(s.toggle("loading","error"),a.removeAttribute("style"),(s=apijs.html(".tracks.video select"))&&t&&t.target&&0<(i=s.querySelectorAll("option")).length&&0<s.value.length&&(i[s.value].setAttribute("disabled","disabled"),s.selectedIndex+=1,"VIDEO"===t.target.nodeName&&""!==s.value&&a.videoPlayer.actionVideo(s)))},this.actionConfirm=function(){return this.has("options")&&!0!==this.callback(!1,this.args)||(this.add("lock","loading"),this.htmlSvgLoader(!1),apijs.html("div.btns").style.visibility="hidden",apijs.html("div.bbcode").style.visibility="hidden",self.setTimeout(function(){this.t2&&"FORM"===this.t2.nodeName?this.callback(this.t2.getAttribute("action"),this.args):this.t2&&this.callback(this.args)}.bind(this),12)),!1},this.init=function(t,e,i){return i=!0===i,"string"==typeof e?e=0<(e=e.replace(this.ft,"").trim()).length?i?e+" lock":e:i?"lock":null:i&&(e="lock"),this.t0&&this.clear(!1),this.klass.push("start"),this.klass.push(t),self.matchMedia("prefers-reduced-motion:reduce").matches&&this.klass.push("reduce"),"string"==typeof e&&(this.klass=this.klass.concat(e.split(" "))),this.t0=document.createDocumentFragment(),document.addEventListener("keydown",this.onKey),self.addEventListener("beforeunload",this.onCloseBrowser),self.addEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.addEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.addEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.addEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.setAttribute("tabindex","-1")}),this},this.show=function(t){this.onResizeBrowser(),this.onFullscreen(),0<this.height&&!this.has("photo","video")&&(this.t2.style.minHeight=this.height+"px");var e=apijs.html("#Dialog");return e?(this.toggle("start","ready"),this.t1=e,this.t1.appendChild(this.t0.firstChild.firstChild),this.t1.setAttribute("class",this.t2.getAttribute("class"))):this.has("notransition")?(this.toggle("start","ready"),document.querySelector("body").appendChild(this.t0)):(document.querySelector("body").appendChild(this.t0),self.setTimeout(function(){apijs.dialog.toggle("start","ready")},12)),apijs.config.dialog.closeOnClick&&!this.has("progress","waiting","lock")&&document.addEventListener("click",this.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.onFullscreen)),!0===t?self.setTimeout(function(){apijs.html("input:not([readonly]),textarea:not([readonly]),select:not([disabled])").focus()},12):"string"==typeof t&&apijs.html(t).focus(),!0},this.clear=function(t){if(t&&this.xhr&&(this.callback=null,this.xhr.abort()),document.removeEventListener("keydown",this.onKey),self.removeEventListener("beforeunload",this.onCloseBrowser),self.removeEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.removeEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.removeEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.removeEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.removeAttribute("tabindex")}),apijs.config.dialog.closeOnClick&&document.removeEventListener("click",this.actionClose),this.has("photo","video")?(this.has("video")&&!this.has("videoiframe")&&this.t2.querySelectorAll("video, source, track").forEach(function(t){for(var e in t)0===e.indexOf("on")&&(t[e]=null);t.removeAttribute("src")}),this.media.videoPlayer=null,this.media.imageLoader=null,document.webkitFullscreenEnabled?document.removeEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.removeEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.removeEventListener("mozfullscreenchange",this.onFullscreen)):this.height=parseFloat(self.getComputedStyle(this.t2).height),t)this.toggle("ready","end"),this.t1.remove();else for(;this.t1.firstChild;)this.t1.firstChild.remove();return this.klass=[],t&&(this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null),this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,!(this.d=null)},this.htmlParent=function(t,e,i){return this.t1=document.createElement("div"),this.t1.setAttribute("id","apijsDialog"),"string"==typeof i&&(this.t1.setAttribute("ondragenter",i),this.t1.setAttribute("ondragleave",i),this.t1.setAttribute("ondragover",i),this.t1.setAttribute("ondrop",i),this.a=document.createElement("p"),this.a.setAttribute("class","drag"),this.a.appendChild(apijs.i18n.translateNode(127)),this.t1.appendChild(this.a)),"string"==typeof t?(this.t2=document.createElement("form"),this.t2.setAttribute("action",t),this.t2.setAttribute("method","post"),this.t2.setAttribute("enctype","multipart/form-data"),this.t2.setAttribute("onsubmit","return "+e)):this.t2=document.createElement("div"),this.t2.setAttribute("id","apijsBox"),this.t1.appendChild(this.t2),this.t0.appendChild(this.t1),this},this.htmlContent=function(t,e){return 0<t.length&&(this.a=document.createElement("h1"),this.a.innerHTML=t.replace(/</g,"<").replace(/>/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0<e.length&&(this.a=document.createElement("div"),this.a.setAttribute("class","bbcode"),"["!==e[0]&&(e="[p]"+e+"[/p]"),this.a.innerHTML=e.replace(/</g,"<").replace(/>/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.a.querySelectorAll("a.popup").forEach(function(t){t.addEventListener("click",apijs.openTab)}),this.t2.appendChild(this.a)),this},this.htmlBtnOk=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","confirm"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(102)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnConfirm=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type",t),this.b.setAttribute("class","confirm"),"submit"!==t&&this.b.setAttribute("onclick",e),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(104)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","cancel"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(103)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnNavigation=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","navigation noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","prev"),this.b.setAttribute("id","apijsPrev"),this.b.setAttribute("onclick","apijs.slideshow.actionPrev();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","next"),this.b.setAttribute("id","apijsNext"),this.b.setAttribute("onclick","apijs.slideshow.actionNext();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","close"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(105)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a)),this},this.htmlUpload=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.b=document.createElement("input"),this.b.setAttribute("type","file"),this.b.setAttribute("name",t),this.b.setAttribute("id","apijsFile"),e&&this.b.setAttribute("multiple","multiple"),this.b.setAttribute("onchange","apijs.upload.actionChoose(this);"),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","browse"),this.b.setAttribute("onclick","this.previousSibling.click();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(e?109:108)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("div"),this.b.setAttribute("class","filenames scrollable"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgProgress=function(){return this.a=document.createElement("span"),this.a.setAttribute("class","info"),this.t2.appendChild(this.a),this.a=document.createElement("svg"),this.a.setAttribute("id","apijsProgress"),this.b=document.createElement("rect"),this.b.setAttribute("class","auto"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgLoader=function(t){return this.a=document.createElementNS(this.ns,"svg"),this.a.setAttribute("class","loader"),this.b=document.createElementNS(this.ns,"path"),!1!==t&&this.b.setAttribute("style","opacity:0;"),this.b.setAttribute("d","M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z"),this.c=document.createElementNS(this.ns,"animateTransform"),this.c.setAttribute("attributeName","transform"),this.c.setAttribute("type","rotate"),this.c.setAttribute("from","0 64 64"),this.c.setAttribute("to","360 64 64"),this.c.setAttribute("dur","5s"),this.c.setAttribute("repeatCount","indefinite"),this.b.appendChild(this.c),this.c=document.createElementNS(this.ns,"animate"),this.c.setAttribute("attributeName","opacity"),this.c.setAttribute("to","1"),this.c.setAttribute("dur","0.01s"),this.c.setAttribute("begin","1s"),this.c.setAttribute("fill","freeze"),!1!==t&&this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlMedia=function(t,e,i,s){var a;return this.a=document.createElement("dl"),this.a.setAttribute("class","media"),this.b=document.createElement("dt"),this.has("photo")?(this.media=document.createElement("img"),this.media.setAttribute("alt",s.replace('"',""))):0<t.indexOf("iframe")?(this.media=document.createElement("iframe"),this.media.setAttribute("type","text/html"),this.media.setAttribute("scrolling","no"),this.media.setAttribute("src",t)):(this.media=document.createElement("video"),this.media.setAttribute("controls","controls"),this.media.setAttribute("preload","metadata")),this.media.setAttribute("id","apijsMedia"),this.b.appendChild(this.media),this.a.appendChild(this.b),this.b=document.createElement("dd"),this.b.setAttribute("class","nomobile noplaying"),"false"===e&&"false"===i||(a=t.slice(t.lastIndexOf("/")+1),this.c=document.createElement("span"),"false"!==e&&"auto"!==e&&"false"!==i?this.c.appendChild(document.createTextNode(e+" ("+i+") ")):"false"!==e&&"auto"!==e?this.c.appendChild(document.createTextNode(e+" ")):"auto"===e&&"false"!==i?this.c.appendChild(document.createTextNode(a+" ("+i+") ")):"auto"===e?this.c.appendChild(document.createTextNode(a+" ")):"false"!==i&&this.c.appendChild(document.createTextNode("("+i+") ")),this.b.appendChild(this.c)),this.b.appendChild(document.createTextNode(s)),this.a.appendChild(this.b),this.t2.appendChild(this.a),this.has("photo")?(this.media.imageLoader=new Image,this.media.imageLoader.src=t,this.media.imageLoader.onload=this.onMediaLoad,this.media.imageLoader.onerror=this.onMediaLoad):0<t.indexOf("iframe")?(this.media.onload=function(t){this.onIframeLoad(this.media),this.onMediaLoad(t)}.bind(this),this.add("videoiframe")):apijs.startPlayer(this.media,t)?this.add("apijsvideoplayer"):(this.c=document.createElement("source"),this.c.setAttribute("src",t),this.c.onerror=this.onMediaLoad,this.media.appendChild(this.c),this.media.ondurationchange=this.onMediaLoad,this.media.onerror=this.onMediaLoad,this.add("videosource")),this},this.htmlHelp=function(t,e){var i,s,a=[t?["start",149,141]:[],t?["left","right",142]:[],e?["bottom","topk",144]:[],e?["minus","plus",145]:[],e?["M",146]:[],e?["P",143]:[],["F11",147],[150,148]];for(this.a=document.createElement("ul"),this.a.setAttribute("class","kbd nomobile nofullscreen");i=a.shift();)if(0<i.length){for(this.b=document.createElement("li");s=i.shift();)0<i.length?(this.c=document.createElement("kbd"),["M","P","F11"].has(s)?this.c.appendChild(document.createTextNode(s)):"string"==typeof s?this.c.setAttribute("class",s):this.c.appendChild(apijs.i18n.translateNode(s)),this.b.appendChild(this.c)):this.b.appendChild(apijs.i18n.translateNode(s));this.a.appendChild(this.b)}return this.t2.appendChild(this.a),this},this.htmlIframe=function(t){return this.a=document.createElement("iframe"),this.a.setAttribute("src",t),this.a.setAttribute("class","loading"),this.a.setAttribute("onload","apijs.dialog.onIframeLoad(this);"),this.t2.appendChild(this.a),this}},apijs.core.player=function(a,t){"use strict";this.video=a,this.stalled=!1,this.subload=!1,this.autoRun=function(n,t){if(n.removeAttribute("src"),n.removeAttribute("data-src"),n.removeAttribute("controls"),n.classList.add("apijsplayer"),n.onloadedmetadata=function(t){this.stalled=!1,this.onTimeupdate(t),this.onProgress(t),this.onVideotrack(),this.onAudiotrack()}.bind(this),n.onstalled=function(t){this.stalled=!0,this.onWaiting(t)}.bind(this),n.onplaying=this.onPlay.bind(this),n.onpause=this.onPlay.bind(this),n.onended=this.onPlay.bind(this),n.onprogress=this.onProgress.bind(this),n.ontimeupdate=this.onTimeupdate.bind(this),n.onseeking=this.onTimeupdate.bind(this),n.onseeked=this.onWaiting.bind(this),n.onwaiting=this.onWaiting.bind(this),n.onloadstart=this.onWaiting.bind(this),n.oncanplay=this.onWaiting.bind(this),n.onclick=this.actionPlay.bind(this),n.onvolumechange=this.actionVolume.bind(this),n.ondurationchange=apijs.dialog.onMediaLoad,n.onerror=apijs.dialog.onMediaLoad,n.parentNode.appendChild(this.htmlSvgPlayer()),t.indexOf("m3u")<0)return n.appendChild(this.htmlSource(t)),this;var o=new XMLHttpRequest;return o.open("GET",t,!0),o.onreadystatechange=function(){if(4===o.readyState)if(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijsplayer.init",xhr:o}})),!n||0<n.childNodes.length)o.abort();else if([0,200].has(o.status)){for(var t,e,i=0,s=0,a=o.responseText.trim().split("\n");"string"==typeof(t=a.shift());)0===t.indexOf("#APIJS#attr")?(e=t.split("|"),n.setAttribute(e[1],e[2])):0===t.indexOf("#APIJS#track|subtitles")?(e=t.split("|"),this.html(".tracks.texttrack select").appendChild(this.htmlOption(s++,e[3]+" - "+e[2])),n.appendChild(this.htmlTrack(e))):0===t.indexOf("#EXTINF")?e=t.replace(/#EXTINF:[0-9]+,/,""):5<t.length&&"#"!==t[0]&&(this.html(".tracks.video select").appendChild(this.htmlOption(i++,"string"==typeof e?e:i)),n.appendChild(this.htmlSource(t)));this.updateSelect("video",i),"object"==typeof n.textTracks&&this.updateSelect("texttrack",n.textTracks.length||s)}else apijs.dialog.onMediaLoad({type:"error"})}.bind(this),o.send(),this},this.updateSelect=function(t,e){var i="texttrack"===t?1:0;i<e?(this.html(".tracks."+t).removeAttribute("style"),this.html(".tracks."+t+" em").textContent="("+e+")",this.html(".tracks."+t+" select").setAttribute("size",e<10?e+i:10)):(this.html(".tracks."+t).setAttribute("style","display:none;"),this.html(".tracks."+t+" select").innerHTML="")},this.html=function(t){return this.video.parentNode.querySelector(t)},this.onVideotrack=function(){var t,e=this.video.videoTracks,i=this.html(".tracks.videotrack select"),s=apijs.config.lang,a=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(a=a<0?t:a),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("videotrack",e.length)}i.selectedIndex=Math.max(0,a),0<=a&&this.actionVideotrack(a)}},this.onAudiotrack=function(){var t,e=this.video.audioTracks,i=this.html(".tracks.audiotrack select"),s=apijs.config.lang,a=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(a=a<0?t:a),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("audiotrack",e.length)}i.selectedIndex=Math.max(0,a),0<=a&&this.actionAudiotrack(a)}},this.onTimeupdate=function(t){var e,i,s,a=this.video.currentTime,n=this.video.duration,o="--:--";isNaN(a)||n===1/0||isNaN(n)||(o=(e=0<(e=Math.floor(a/3600))?e+":":"")+(i=(i=Math.floor(a%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(a%60))<10?"0"+s:s),o+=" / "+(e=0<(e=Math.floor(n/3600))?e+":":"")+(i=(i=Math.floor(n%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(n%60))<10?"0"+s:s),this.html("svg.bar rect").style.width=a/n*100+"%"),this.html("span.time").textContent=o,this.stalled&&!this.subload&&(this.stalled=!1,this.onWaiting(t))},this.onProgress=function(){var t,e,i=this.video,s=this.html("svg.bar"),a=i.buffered.length;if(0<a&&i.duration!==1/0&&!isNaN(i.duration))for(s.querySelectorAll(".buffer").forEach(function(t){t.remove()});0<a--;)(e=document.createElement("rect")).setAttribute("class","buffer"),99.8<(t=(i.buffered.end(a)-i.buffered.start(a))/i.duration*100)?e.setAttribute("style","left:0%; width:100%;"):e.setAttribute("style","left:"+i.buffered.start(a)/i.duration*100+"%; width:"+t+"%;"),s.appendChild(e)},this.onPlay=function(){[1,2].has(this.video.networkState)&&(this.video.paused?(this.html("span.play").textContent="",(apijs.dialog.t1?apijs.dialog:this.video.parentNode.classList).remove("playing")):(this.html("span.play").textContent="",(apijs.dialog.t1?apijs.dialog:this.video.parentNode.classList).add("playing")))},this.onWaiting=function(t){apijs.log("player:video:onWaiting:"+t.type+" stalled:"+this.stalled+"/subload:"+this.subload),apijs.dialog[["loadstart","waiting","seeking","stalled"].has(t.type)?"add":"remove"]("loading")},this.actionPlay=function(){var t=this.video;[1,2].has(t.networkState)&&(t.ended||t.paused?t.play():t.pause())},this.actionVolume=function(t){var e=this.video,i=this.html("svg.vol"),s=i.offsetWidth,a=0;if([1,2].has(e.networkState)){if("object"==typeof t&&!isNaN(t.clientX)){for(;a+=i.offsetLeft,i=i.offsetParent;);a=100*(t.clientX-a)/s/100,e.volume=a=a<=.1?0:.92<a?1:a,e.muted=!1}this.html("svg.vol rect").style.width=e.muted?0:100*e.volume+"%"}},this.actionPosition=function(t){var e=this.video,i=this.html("svg.bar"),s=i.offsetWidth,a=0;if([1,2].has(e.networkState)&&e.duration!==1/0&&!isNaN(e.duration)&&"object"==typeof t){for(;a+=i.offsetLeft,i=i.offsetParent;);a=e.duration*(t.clientX-a)*100/s/100,e.currentTime=a=a<=1?0:a}},this.actionVideotrack=function(t){var e,i=this.video.videoTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--a.currentTime}"object"==typeof t&&t.target.blur()},this.actionAudiotrack=function(t){var e,i=this.video.audioTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--a.currentTime}"object"==typeof t&&t.target.blur()},this.actionTexttrack=function(t){var e,i=this.video.textTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].mode=e==s?"showing":"hidden";this.subload=!0}"object"==typeof t&&t.target.blur()},this.actionVideo=function(t){this.html("svg.bar rect").style.width="0",this.html("svg.bar").querySelectorAll(".buffer").forEach(function(t){t.remove()}),this.html("span.play").textContent="",this.updateSelect("videotrack",0),this.updateSelect("audiotrack",0),this.video.src=this.video.querySelectorAll("source")["object"==typeof t?t.target.value:t].src,"object"==typeof t&&t.target.blur()},this.actionFullscreen=function(){var t=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;this.video.parentNode.classList[t?"add":"remove"]("fullscreen")},this.htmlSvgPlayer=function(){var t,e,i,s=document.createElement("div");return s.setAttribute("class","apijsplayer noplaying"),(i=document.createElement("span")).setAttribute("class","btn play fnt"),i.appendChild(document.createTextNode("")),i.onclick=this.actionPlay.bind(this),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg bar"),(e=document.createElement("svg")).setAttribute("class","bar"),e.onclick=this.actionPosition.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","time"),i.appendChild(document.createTextNode("--:--")),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg vol nomobile"),(e=document.createElement("svg")).setAttribute("class","vol"),e.onclick=this.actionVolume.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks audiotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(133)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionAudiotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks videotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(132)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks video"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(131)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideo.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks texttrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(134)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionTexttrack.bind(this),(t=document.createElement("option")).appendChild(apijs.i18n.translateNode(135)),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","btn full fnt nomobile"),i.appendChild(document.createTextNode("")),i.onclick=function(){apijs.dialog.t1?apijs.requestFullscreen(apijs.dialog.t1):(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.actionFullscreen.bind(this)):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.actionFullscreen.bind(this)):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.actionFullscreen.bind(this)),apijs.requestFullscreen(this.video.parentNode))}.bind(this),s.appendChild(i),s},this.htmlTrack=function(t){var e=document.createElement("track");return e.setAttribute("kind",t[1]),e.setAttribute("label",t[2]),e.setAttribute("srclang",t[3]),e.setAttribute("src",t[4]),e.onload=function(t){apijs.log("player:track:onload "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e.onerror=function(t){apijs.log("player:track:onerror "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e},this.htmlSource=function(t){var e=document.createElement("source");return e.setAttribute("src",t),e.onerror=apijs.dialog.onMediaLoad,e},this.htmlOption=function(t,e){"object"==typeof e&&(e=""===e.label?e.language.toLowerCase():e.language.toLowerCase()+" - "+e.label);var i=document.createElement("option");return i.setAttribute("value",t),i.appendChild(document.createTextNode(e)),i},this.autoRun(a,t)},apijs.core.slideshow=function(){"use strict";this.current=null,this.init=function(){for(var t,e,i,s=apijs.config.slideshow.ids,a=0;e=apijs.html(s+"."+a,!0);a++){for(i=e.classList.contains("hoverload"),t=0;e=apijs.html(s+"."+a+"."+t,!0);t++)e.addEventListener("click",this.show),i&&e.addEventListener("mouseover",this.show);(e=apijs.html(s+"."+a+".99999",!0))&&e.addEventListener("click",this.show)}this.onPopState()},this.onPopState=function(){var t;new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)?(t=RegExp.$1.replace(/-/g,"."),apijs.html(t,!0)&&!apijs.dialog.has("slideshow")&&apijs.slideshow.show(t,!1)):apijs.slideshow.current&&apijs.dialog.actionClose()},this.show=function(t,e){var i,s,a,n=!1,o={};if("string"==typeof t)i=apijs.html(t,n=!0),o.id=t;else{for(t.preventDefault(),i=t.target;"A"!==i.nodeName;)i=i.parentNode;if("mouseover"===t.type&&i.classList.contains("current"))return!1;o.id=i.getAttribute("id")}return o.prefix=apijs.config.slideshow.ids+"."+o.id.split(".")[1],o.number=parseInt(o.id.split(".")[2],10),o.gallery=apijs.html(o.prefix+".99999",!0),99999!==o.number&&(t=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]"),a=apijs.html(o.prefix,!0).querySelectorAll("dl"),o.gallery||t.length!==a.length?(t.forEach(function(t){t.classList.remove("current")}),i.setAttribute("class","current")):(a.forEach(function(t){t.classList.remove("current")}),i.parentNode.parentNode.setAttribute("class","current"))),o.gallery?(99999===o.number&&(n=!0,i=o.gallery.hasAttribute("class")?o.gallery.getAttribute("class"):o.prefix+".0",i=apijs.html(i,!0),o.number=parseInt(i.getAttribute("id").split(".")[2],10),o.id=o.id.replace(99999,o.number)),o.config=i.querySelector("input").getAttribute("value").split("|"),0<(a=o.config.shift()).indexOf(";")&&(s=(a=a.split(";"))[1].trim(),a=a[0].trim()),o.gallery.setAttribute("href",i.getAttribute("href")),o.gallery.querySelector("img").setAttribute("src",a),o.gallery.querySelector("img").setAttribute("srcset",s||""),o.gallery.querySelector("img").setAttribute("alt",i.querySelector("img").getAttribute("alt")),o.gallery.setAttribute("class",o.id)):(n=!0,o.config=i.querySelector("input").getAttribute("value").split("|")),o.url=i.getAttribute("href"),o.type=i.getAttribute("type").substr(0,5).replace("image","dialogPhoto").replace("video","dialogVideo"),o.type=0===o.type.indexOf("dialog")?o.type:"dialogPhoto",o.styles=apijs.html(o.prefix,!0).getAttribute("class").replace(/gallery|album/g,"").trim(),n&&(apijs.dialog[o.type](o.url,o.config[0],o.config[1],o.config[2],o.styles),s=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]").length-(o.gallery?2:1),apijs.slideshow.current={number:o.number,first:o.prefix+".0",prev:0<o.number?o.prefix+"."+(o.number-1):null,next:o.number<s?o.prefix+"."+(o.number+1):null,last:o.prefix+"."+s,total:s},apijs.slideshow.current.prev&&apijs.html("#Prev").removeAttribute("disabled"),apijs.slideshow.current.next&&apijs.html("#Next").removeAttribute("disabled"),apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&("boolean"!=typeof e||e)&&(e=0<(e=self.location.href).indexOf("#")?e.slice(0,e.indexOf("#")):e,e+="#"+(o.prefix+"."+(99999===o.number?0:o.number)).replace(/\./g,"-"),history.pushState({},"",e))),n},this.actionFirst=function(){return!!(this.current&&0<this.current.number&&this.current.number<=this.current.total)&&this.show(this.current.first)},this.actionPrev=function(){return!!(this.current&&this.current.prev&&0<this.current.number)&&this.show(this.current.prev)},this.actionNext=function(){return!!(this.current&&this.current.next&&this.current.number<this.current.total)&&this.show(this.current.next)},this.actionLast=function(){return!!(this.current&&0<=this.current.number&&this.current.number<this.current.total)&&this.show(this.current.last)}},apijs.core.upload=function(){"use strict";this.title=null,this.action=null,this.input=null,this.onemax=0,this.allmax=0,this.exts=null,this.callback=null,this.args=null,this.icon=null,this.files=[],this.start=0,this.end=0,this.sendFile=function(t,e,i,s,a,n,o,r){r=this.sendFiles(t,e,i,s,0,a,n,o,r);return r||console.error("apijs.upload.sendFile invalid arguments",arguments),r},this.sendFiles=function(t,e,i,s,a,n,o,r,l){if(this.files=[],!0!==t&&(this.title=t,this.action=e,this.input=i,this.onemax=s,this.allmax=a,this.exts="string"==typeof n?n.split(","):["*"],this.callback=o,this.args=r,this.icon=l),"string"!=typeof this.title||"string"!=typeof this.action||"string"!=typeof this.input||"number"!=typeof this.onemax||"number"!=typeof this.allmax||"function"!=typeof this.callback)return("number"!=typeof this.allmax||0<this.allmax)&&console.error("apijs.upload.sendFiles invalid arguments",arguments),!1;r=0<this.allmax,l="*"===this.exts.join()?apijs.i18n.translate(161):1===this.exts.length?apijs.i18n.translate(162,this.exts.join()):apijs.i18n.translate(163,this.exts.slice(0,-1).join(", "),this.exts.slice(-1));return l+="[br]"+apijs.i18n.translate(r?165:164,apijs.formatNumber(this.onemax),r?apijs.formatNumber(this.allmax):"").replace("|","[br]"),apijs.dialog.dialogFormUpload(this.title,l,this.action,this.input,r,this.icon)},this.actionDrag=function(t){"dragenter"==t.type?apijs.dialog.add("drag"):"dragleave"==t.type?apijs.dialog.remove("drag"):t.dataTransfer&&t.dataTransfer.files&&0<t.dataTransfer.files.length&&(this.actionChoose(t.dataTransfer),apijs.dialog.remove("drag")),t.stopPropagation(),t.preventDefault()},this.actionChoose=function(t){var i,s=[],a=0,n=!1,e=apijs.html("button.confirm");this.files=[],this.exts&&(Array.prototype.forEach.call(0<this.allmax?t.files:Array.prototype.slice.call(t.files,0,1),function(t,e){i=t.size/1048576,i=apijs.formatNumber(i<.01?.01:i),i=(0<this.allmax?'<td class="nb">'+(e+1)+"</td>":"")+'<td class="name">'+t.name+'</td><td class="size">'+apijs.i18n.translate(166,i)+"</td>","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?(i+='<td class="err">'+apijs.i18n.translate(168)+"</td>",n=!0):t.size<=0?(i+='<td class="err">'+apijs.i18n.translate(169)+"</td>",n=!0):(i+="<td></td>",this.files.push(t)):(i+='<td class="err">'+apijs.i18n.translate(167)+"</td>",n=!0),s.push("<tr>"+i+"</tr>"),a+=t.size/1048576},this),0<this.allmax&&a>=this.allmax&&(s.push('<tr class="tt"><td></td><td></td><td class="size">'+apijs.i18n.translate(166,apijs.formatNumber(a))+'</td><td class="err">'+apijs.i18n.translate(168)+"</td></tr>"),n=!0),n?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus()),apijs.html("div.filenames").innerHTML="<table>"+s.join("")+"</table>")},this.actionConfirm=function(){var s,e,t;return 0<this.files.length?(s=new FormData,(e=new XMLHttpRequest).open("POST",this.action+(0<this.action.indexOf("?")?"&isAjax=true":"?isAjax=true"),!0),"string"==typeof apijs.config.upload.tokenValue&&(e.setRequestHeader(apijs.config.upload.tokenName,apijs.config.upload.tokenValue),s.append(apijs.config.upload.tokenName,apijs.config.upload.tokenValue)),3<(t=apijs.serialize(apijs.dialog.t2)).length&&t.split("&").forEach(function(t){t=t.split("="),s.append(t[0],t[1])}),this.files.forEach(function(t,e,i){s.append(1<i.length&&this.input.indexOf("[")<0?this.input+"_"+e:this.input,t)},this),e.onreadystatechange=function(t){4===e.readyState&&(t=e.responseText.trim(),[0,200].has(e.status)?(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.upload.send",xhr:e}})),apijs.log("upload:onreadystatechange status:200 message:"+t),0===t.indexOf("success-")?(this.updateTitle(),this.callback(t.slice(8),this.args)):this.onError(195,t)):(apijs.log("upload:onreadystatechange status:"+e.status+" message: "+t),this.onError(194,e.status)))}.bind(this),e.upload.onloadstart=this.onStart.bind(this),e.upload.onprogress=this.onProgress.bind(this),e.upload.onload=this.onProgress.bind(this),e.upload.onerror=this.onError.bind(this),e.send(s)):apijs.html("button.browse").focus(),!1},this.onStart=function(){this.start=this.end=Math.round((new Date).getTime()/1e3),apijs.dialog.dialogProgress(this.title,apijs.i18n.translate(125),this.icon)},this.onError=function(t,e){this.updateTitle(),"number"==typeof t?e="[p]"+apijs.i18n.translate(t)+"[/p] "+e:"string"!=typeof e&&(e="[p]"+apijs.i18n.translate(193)+"[/p]"),e+="[p]"+apijs.i18n.translate(196,'href="apijs://restart" onclick="apijs.upload.sendFile(true); return false;"')+"[/p]",apijs.dialog.dialogInformation(this.title,e,"string"==typeof this.icon?"upload error "+this.icon:"upload error")},this.onProgress=function(t){var e,i,s,a,n,o,r=Math.round((new Date).getTime()/1e3);t.lengthComputable&&"progress"===t.type&&r>=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),r=100*(n=r-this.start)/e+10,24<n&&(a=Math.round(r-n),a=10*Math.ceil(a/10),o=Math.ceil(a/60),s=Math.round(t.loaded/n/1024),n<40||r<90?(i=184,a=null):1<o?(i=181,a=o):50<a?(i=182,a=1):i=183),this.updateProgress(e,i,s,a))):"load"===t.type&&(a=Math.round((new Date).getTime()/1e3)-this.start,o=Math.ceil(a/60),0<(s=Math.round(t.loaded/a/1024))&&s!==1/0?1<o?(i=185,a=o):50<a?(i=186,a=1):20<a?i=187:(i=188,a=null):a=s=null,this.updateTitle(100),this.updateProgress(100,i,s,a))},this.updateProgress=function(t,e,i,s){var a,n,o=apijs.html("rect"),r=apijs.html("span.info");99<t?(a="100%",o.setAttribute("class","end"),o.style.width="",(n=apijs.html("p")).setAttribute("data-old",n.textContent),n.setAttribute("data-new",apijs.i18n.translate(126)),n.setAttribute("class","anim"),n.textContent=""):(o.style.width=a=t+"%",o.hasAttribute("class")&&o.removeAttribute("class")),"number"==typeof e&&"number"==typeof i&&"number"==typeof s?a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1),s):"number"==typeof e&&"number"==typeof i&&(a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1))),r.textContent=a},this.updateTitle=function(t){"number"==typeof t?document.title=/^\d{1,3}% - /.test(document.title)?t+"% - "+document.title.slice(document.title.indexOf(" - ")+3):t+"% - "+document.title:/^\d{1,3}% - /.test(document.title)&&(document.title=document.title.slice(document.title.indexOf(" - ")+3))}};
|
|
8
8
|
//# sourceMappingURL=apijs.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../code/apijs/src/javascripts/main.js","../code/apijs/src/javascripts/i18n.js","../code/apijs/src/javascripts/select.js","../code/apijs/src/javascripts/player.js","../code/apijs/src/javascripts/dialog.js","../code/apijs/src/javascripts/slideshow.js","../code/apijs/src/javascripts/upload.js"],"sourcesContent":["/**\n * Created J/03/12/2009\n * Updated V/08/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nif (!Array.prototype.has) {\n\tArray.prototype.has = function (needle, key) {\n\t\tif (needle instanceof Array) {\n\t\t\tfor (key in needle) if (needle.hasOwnProperty(key)) {\n\t\t\t\tif (this.has(needle[key]))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor (key in this) if (this.hasOwnProperty(key)) {\n\t\t\t\tif (this[key] === needle)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n}\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n\tNodeList.prototype.forEach = function (callback, that, i) {\n\t\tthat = that || window;\n\t\tfor (i = 0; i < this.length; i++)\n\t\t\tcallback.call(that, this[i], i, this);\n\t};\n}\n\nvar apijs = new (function () {\n\n\t\"use strict\";\n\tthis.core = {};\n\tthis.version = 660;\n\n\tthis.config = {\n\t\tlang: 'auto',\n\t\tdebug: false,\n\t\t//select: { },\n\t\tdialog: {\n\t\t\tcloseOnClick: false,\n\t\t\trestrictNavigation: true,\n\t\t\tplayer: true\n\t\t},\n\t\tslideshow: {\n\t\t\tids: 'slideshow',\n\t\t\tanchor: true\n\t\t},\n\t\tupload: {\n\t\t\ttokenName: 'X-CSRF-Token',\n\t\t\ttokenValue: null\n\t\t}\n\t};\n\n\tthis.start = function () {\n\n\t\tvar elem;\n\n\t\t// bonjour\n\t\tconsole.info('APIJS ' + this.version.toString().split('').join('.') + ' - hello - 1 MB/Mo = 1024 kB/ko');\n\t\tif (document.getElementById('oldBrowser'))\n\t\t\tthrow new Error('APIJS canceled, #oldBrowser detected!');\n\n\t\tif (elem = document.querySelector('link[href*=\"apijs/fontello.woff2\"]')) {\n\t\t\tif (elem.getAttribute('href').indexOf('?a3ab5acff3') < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3');\n\t\t}\n\t\tif (elem = document.querySelector('script[src*=\"apijs.min.js?v=\"]')) {\n\t\t\tif (elem.getAttribute('src').indexOf('?v=' + this.version) < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v=' + this.version);\n\t\t}\n\n\t\t// instancie\n\t\tthis.i18n = new this.core.i18n();\n\t\t//this.select = new this.core.select();\n\t\tthis.dialog = new this.core.dialog();\n\t\tthis.upload = new this.core.upload();\n\t\tthis.slideshow = new this.core.slideshow();\n\t\tself.dispatchEvent(new CustomEvent('apijsbeforeload'));\n\n\t\t// démarre\n\t\tthis.i18n.init();\n\t\tthis.slideshow.init();\n\t\t//this.select.init();\n\t\tdocument.querySelectorAll('video.apijsplayer[data-src]').forEach(function (elem) {\n\t\t\tapijs.startPlayer(elem, elem.getAttribute('data-src'));\n\t\t});\n\n\t\tself.addEventListener('popstate', this.slideshow.onPopState);\n\t\tself.addEventListener('hashchange', this.slideshow.onPopState);\n\n\t\tif (this.config.debug) {\n\t\t\tconsole.info('APIJS available languages: ' + Object.keys(this.i18n.data).join(' '));\n\t\t\tconsole.info('APIJS language loaded: ' + this.config.lang);\n\t\t\tconsole.info('APIJS successfully started');\n\t\t}\n\n\t\t// événement\n\t\tself.dispatchEvent(new CustomEvent('apijsload'));\n\t};\n\n\tthis.formatNumber = function (nb, dec) {\n\n\t\t// par défaut 2 chiffres\n\t\tvar dgt = (typeof dec == 'number') ? dec : ((dec === false) ? 0 : 2), str;\n\n\t\t// Firefox 29+ pas 27+, (iOS) Safari 10+ pas 9+\n\t\ttry {\n\t\t\tstr = new Intl.NumberFormat(this.config.lang, { minimumFractionDigits: dgt, maximumFractionDigits: dgt }).format(nb);\n\t\t}\n\t\tcatch (e) {\n\t\t\tstr = nb.toFixed(dgt);\n\t\t}\n\n\t\t// conserve 00 si on veut vraiment 2 chiffres\n\t\treturn (typeof dec == 'number') ? str : str.replace(/[.,]00$/, '');\n\t};\n\n\tthis.startPlayer = function (elem, url) {\n\n\t\tif (this.config.dialog.player === true) {\n\t\t\telem.videoPlayer = new this.core.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof this.config.dialog.player == 'function') {\n\t\t\tthis.config.dialog.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tthis.toArray = function (data) {\n\t\treturn Array.prototype.slice.call(data, 0);\n\t};\n\n\tthis.openTab = function (ev) {\n\t\tev.preventDefault();\n\t\tif (this.href.length > 0)\n\t\t\tself.open(this.href);\n\t};\n\n\tthis.log = function (txt) {\n\t\tif (this.config.debug)\n\t\t\tconsole.info('APIJS ' + txt);\n\t};\n\n\tthis.html = function (selector, id) {\n\t\tif ((id === true) || (selector.indexOf('#') === 0))\n\t\t\treturn document.getElementById(selector.replace('#', 'apijs'));\n\t\telse if (this.dialog.t1)\n\t\t\treturn this.dialog.t1.querySelector(selector);\n\t\telse\n\t\t\treturn null;\n\t};\n\n\tthis.requestFullscreen = function (elem) {\n\t\tif (document.webkitFullscreenElement)\n\t\t\tdocument.webkitCancelFullScreen();\n\t\telse if (document.mozFullScreenElement)\n\t\t\tdocument.mozCancelFullScreen();\n\t\telse if (document.fullscreenElement)\n\t\t\tdocument.cancelFullScreen();\n\t\telse if (elem.webkitRequestFullscreen)\n\t\t\telem.webkitRequestFullscreen();\n\t\telse if (elem.requestFullscreen)\n\t\t\telem.requestFullscreen();\n\t\telse if (elem.mozRequestFullScreen)\n\t\t\telem.mozRequestFullScreen();\n\t};\n\n\tthis.serialize = function (form, filter) {\n\n\t\tvar data = [];\n\t\tfilter = (typeof filter == 'string') ? filter : '';\n\n\t\t// https://gomakethings.com/how-to-serialize-form-data-with-vanilla-js/\n\t\tArray.prototype.forEach.call(form.elements, function (elem) {\n\n\t\t\tif (!elem.name || elem.disabled || ['file', 'reset', 'submit', 'button'].has(elem.type) || (elem.name.indexOf(filter) !== 0))\n\t\t\t\treturn;\n\n\t\t\tif (elem.type === 'select-multiple') {\n\t\t\t\tfor (var n = 0; n < elem.options.length; n++) {\n\t\t\t\t\tif (elem.options[n].selected)\n\t\t\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.options[n].value));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!['checkbox', 'radio'].has(elem.type) || elem.checked) {\n\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.value));\n\t\t\t}\n\t\t});\n\n\t\treturn data.join('&');\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('load', apijs.start.bind(apijs));\n","/**\n * Created S/05/06/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.i18n = function () {\n\n\t\"use strict\";\n\tthis.data = {\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\tcs: {\n\t\t\t103: \"Zrušit\",\n\t\t\t104: \"Potvrzení\",\n\t\t\t105: \"Zavřít\",\n\t\t\t106: \"Předchozí\",\n\t\t\t107: \"Následující\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t146: \"ztlumit\",\n\t\t\t149: \"Konec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tde: {\n\t\t\t103: \"Abbrechen\",\n\t\t\t104: \"Bestätigen\",\n\t\t\t105: \"Schließen\",\n\t\t\t106: \"Vorheriges\",\n\t\t\t107: \"Nächstes\",\n\t\t\t108: \"Datei wählen\",\n\t\t\t109: \"Dateien wählen\",\n\t\t\t124: \"Verarbeitung läuft...\",\n\t\t\t132: \"videospur\",\n\t\t\t133: \"audiospur\",\n\t\t\t134: \"untertitel\",\n\t\t\t142: \"vorheriges/nächstes\",\n\t\t\t143: \"wiedergabe/pause\",\n\t\t\t144: \"rückwärts/vorwärts\",\n\t\t\t145: \"leiser/lauter\",\n\t\t\t146: \"ton aus\",\n\t\t\t147: \"vollbild\",\n\t\t\t148: \"beenden\",\n\t\t\t149: \"Ende\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Alle Dateien wurden akzeptiert.\",\n\t\t\t162: \"Akzeptiertes Dateiformat: §.\",\n\t\t\t163: \"Akzeptiertes Dateiformate: § und §.\",\n\t\t\t164: \"Maximale Größe: § MB.\",\n\t\t\t167: \"Unerlaubtes Format\",\n\t\t\t168: \"Format zu gross\",\n\t\t\t169: \"Leere Datei\",\n\t\t\t181: \"§% - § kB/s - Noch § Minuten\",\n\t\t\t182: \"§% - § kB/s - Noch § Minute\",\n\t\t\t183: \"§% - § kB/s - Noch § Sekunden\",\n\t\t\t185: \"§% - bis § kB/s in § Minuten\",\n\t\t\t186: \"§% - bis § kB/s in § Minute\",\n\t\t\t187: \"§% - bis § kB/s in § Sekunden\",\n\t\t\t188: \"§% - bis § kB/s\",\n\t\t\t191: \"Abbrechen\",\n\t\t\t192: \"Sind Sie sicher? [span]Ja[/span] - Nein\",\n\t\t\t193: \"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.\",\n\t\t\t194: \"Es ist ein Fehler beim Senden.\",\n\t\t\t195: \"Es ist ein Fehler bei der Verarbeitung.\",\n\t\t\t196: \"Wir laden Sie ein es erneut zu [a §]versuchen[/a].\"\n\t\t},\n\t\ten: {\n\t\t\t102: \"Ok\",\n\t\t\t103: \"Cancel\",\n\t\t\t104: \"Confirm\",\n\t\t\t105: \"Close\",\n\t\t\t106: \"Previous\",\n\t\t\t107: \"Next\",\n\t\t\t108: \"Choose a file\",\n\t\t\t109: \"Choose one or multiple files\",\n\t\t\t124: \"Operation in progress...\",\n\t\t\t125: \"Upload in progress...\",\n\t\t\t126: \"Processing file in progress...\",\n\t\t\t131: \"video\",\n\t\t\t132: \"video track\",\n\t\t\t133: \"audio track\",\n\t\t\t134: \"subtitles\",\n\t\t\t135: \"off\",\n\t\t\t141: \"first/last\",\n\t\t\t142: \"previous/next\",\n\t\t\t143: \"play/pause\",\n\t\t\t144: \"backward/forward\",\n\t\t\t145: \"decrease/increase the volume\",\n\t\t\t146: \"mute\",\n\t\t\t147: \"full screen\",\n\t\t\t148: \"quit\",\n\t\t\t149: \"End\",\n\t\t\t150: \"Escape\",\n\t\t\t161: \"All files are accepted.\",\n\t\t\t162: \"Accepted file format: §.\",\n\t\t\t163: \"Accepted file formats: § and §.\",\n\t\t\t164: \"Maximum size: § MB.\",\n\t\t\t165: \"Maximum size by file: § MB.|Total maximum size: § MB.\",\n\t\t\t166: \"§ MB\",\n\t\t\t167: \"Format not allowed\",\n\t\t\t168: \"Size too large\",\n\t\t\t169: \"File empty\",\n\t\t\t181: \"§% - § kB/s - § minutes left\",\n\t\t\t182: \"§% - § kB/s - § minute left\",\n\t\t\t183: \"§% - § kB/s - § seconds left\",\n\t\t\t184: \"§% - § kB/s\",\n\t\t\t185: \"§% - at § kB/s in § minutes\",\n\t\t\t186: \"§% - at § kB/s in § minute\",\n\t\t\t187: \"§% - at § kB/s in § seconds\",\n\t\t\t188: \"§% - at § kB/s\",\n\t\t\t191: \"Interrupt\",\n\t\t\t192: \"Are you sure? [span]Yes[/span] - No\",\n\t\t\t193: \"It seems that an unlikely mistake just happened... Please try again.\",\n\t\t\t194: \"An error occurred while sending.\",\n\t\t\t195: \"An error occurred while processing.\",\n\t\t\t196: \"We invite you to [a §]try again[/a].\"\n\t\t},\n\t\tes: {\n\t\t\t102: \"Aceptar\",\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Cerrar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Siguiente\",\n\t\t\t108: \"Elegir un fichero\",\n\t\t\t109: \"Elegir uno o varios ficheros\",\n\t\t\t124: \"Operación en curso...\",\n\t\t\t125: \"Envío en progreso...\",\n\t\t\t126: \"Tratamiento en curso...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"pista de vídeo\",\n\t\t\t133: \"pista de audio\",\n\t\t\t134: \"subtítulos\",\n\t\t\t142: \"anterior/siguiente\",\n\t\t\t143: \"reproducir/pausa\",\n\t\t\t144: \"retroceder/avanzar\",\n\t\t\t145: \"bajar/subir volumen\",\n\t\t\t146: \"silenciar\",\n\t\t\t147: \"pantalla completa\",\n\t\t\t148: \"salir\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Se aceptan todos los archivos.\",\n\t\t\t162: \"Formato de archivo aceptado: §.\",\n\t\t\t163: \"Formatos de archivos aceptados: § y §.\",\n\t\t\t164: \"Tamaño máximo: § MB.\",\n\t\t\t165: \"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.\",\n\t\t\t167: \"Formato no autorizado\",\n\t\t\t168: \"Tamaño demasiado importante\",\n\t\t\t169: \"Fichero vacío\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - a § kB/s en § minutos\",\n\t\t\t186: \"§% - a § kB/s en § minuto\",\n\t\t\t187: \"§% - a § kB/s en § segundos\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrumpir\",\n\t\t\t192: \"¿Está seguro(a)? [span]Sí[/span] - No\",\n\t\t\t193: \"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.\",\n\t\t\t194: \"Se produjo un error durante el envío.\",\n\t\t\t195: \"Se produjo un error durante el procesamiento.\",\n\t\t\t196: \"Le invitamos a [a §]intentar de nuevo[/a].\"\n\t\t},\n\t\tfr: {\n\t\t\t103: \"Annuler\",\n\t\t\t104: \"Valider\",\n\t\t\t105: \"Fermer\",\n\t\t\t106: \"Précédent\",\n\t\t\t107: \"Suivant\",\n\t\t\t108: \"Choisir un fichier\",\n\t\t\t109: \"Choisir un ou plusieurs fichiers\",\n\t\t\t124: \"Opération en cours...\",\n\t\t\t125: \"Envoi en cours...\",\n\t\t\t126: \"Traitement en cours...\",\n\t\t\t131: \"vidéo\",\n\t\t\t132: \"piste vidéo\",\n\t\t\t133: \"piste audio\",\n\t\t\t134: \"sous-titres\",\n\t\t\t141: \"premier/dernier\",\n\t\t\t142: \"précédent/suivant\",\n\t\t\t143: \"lecture/pause\",\n\t\t\t144: \"reculer/avancer\",\n\t\t\t145: \"réduire/augmenter le volume\",\n\t\t\t146: \"couper le son\",\n\t\t\t147: \"plein écran\",\n\t\t\t148: \"quitter\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Échap\",\n\t\t\t161: \"Tous les fichiers sont acceptés.\",\n\t\t\t162: \"Format de fichier accepté : §.\",\n\t\t\t163: \"Formats de fichier acceptés : § et §.\",\n\t\t\t164: \"Taille maximale : § Mo.\",\n\t\t\t165: \"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.\",\n\t\t\t166: \"§ Mo\",\n\t\t\t167: \"Format non autorisé\",\n\t\t\t168: \"Taille trop importante\",\n\t\t\t169: \"Fichier vide\",\n\t\t\t181: \"§% - § ko/s - § minutes restantes\",\n\t\t\t182: \"§% - § ko/s - § minute restante\",\n\t\t\t183: \"§% - § ko/s - § secondes restantes\",\n\t\t\t184: \"§% - § ko/s\",\n\t\t\t185: \"§% - à § ko/s en § minutes\",\n\t\t\t186: \"§% - à § ko/s en § minute\",\n\t\t\t187: \"§% - à § ko/s en § secondes\",\n\t\t\t188: \"§% - à § ko/s\",\n\t\t\t191: \"Interrompre\",\n\t\t\t192: \"Êtes-vous sûr(e) ? [span]Oui[/span] - Non\",\n\t\t\t193: \"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.\",\n\t\t\t194: \"Une erreur est survenue lors de l'envoi.\",\n\t\t\t195: \"Une erreur est survenue lors du traitement.\",\n\t\t\t196: \"Nous vous invitons à [a §]réessayer[/a].\"\n\t\t},\n\t\tit: {\n\t\t\t103: \"Annulla\",\n\t\t\t104: \"Conferma\",\n\t\t\t105: \"Chiudi\",\n\t\t\t106: \"Precedente\",\n\t\t\t107: \"Successivo\",\n\t\t\t108: \"Scegli un file\",\n\t\t\t109: \"Scegli uno o più file\",\n\t\t\t124: \"Operazione in corso...\",\n\t\t\t125: \"Invio in corso...\",\n\t\t\t126: \"Trattamento in corso...\",\n\t\t\t132: \"traccia video\",\n\t\t\t133: \"traccia audio\",\n\t\t\t134: \"sottotitoli\",\n\t\t\t142: \"precedente/successivo\",\n\t\t\t143: \"riproduci/pausa\",\n\t\t\t144: \"indietro/avanti\",\n\t\t\t145: \"riduci/aumenta volume\",\n\t\t\t146: \"silenzio\",\n\t\t\t147: \"schermo intero\",\n\t\t\t148: \"esci\",\n\t\t\t149: \"Fine\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Tutti i file sono accettati.\",\n\t\t\t162: \"Formato del file accettato: §.\",\n\t\t\t163: \"Formati accettati: § et §.\",\n\t\t\t164: \"Dimensione massima: § MB.\",\n\t\t\t167: \"Formato non autorizzato\",\n\t\t\t168: \"Dimensione troppo importante\",\n\t\t\t169: \"File vuoto\",\n\t\t\t181: \"§% - § kB/s - § minuti rimanenti\",\n\t\t\t182: \"§% - § kB/s - § minuto rimanente\",\n\t\t\t183: \"§% - § kB/s - § secondi rimanenti\",\n\t\t\t185: \"§% - a § kB/s in § minuti\",\n\t\t\t186: \"§% - a § kB/s in § minuto\",\n\t\t\t187: \"§% - a § kB/s in § secondi\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrompere\",\n\t\t\t192: \"Sei sicuro? [span]Si[/span] - No\",\n\t\t\t193: \"Sembra che un errore inaspettato si sia verificato... Riprova.\",\n\t\t\t194: \"Un errore si è verificato durante l'invio.\",\n\t\t\t195: \"Un errore si è verificato durante il trattamento.\",\n\t\t\t196: \"Vi invitiamo a [a §]riprovare[/a].\"\n\t\t},\n\t\tja: {\n\t\t\t103: \"キャンセル\",\n\t\t\t104: \"承認\",\n\t\t\t105: \"閉じる\",\n\t\t\t106: \"前へ\",\n\t\t\t107: \"次へ\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t149: \"終了\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ Mo\",\n\t\t\t184: \"§% - § Ko/s\",\n\t\t\t192: \"よろしいですか?[span]はい[/span] - いいえ\"\n\t\t},\n\t\tnl: {\n\t\t\t103: \"Annuleren\",\n\t\t\t104: \"Bevestigen\",\n\t\t\t105: \"Sluiten\",\n\t\t\t106: \"Vorige\",\n\t\t\t107: \"Volgende\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t144: \"achteruit/vooruit\",\n\t\t\t145: \"volume omlaag/omhoog\",\n\t\t\t146: \"dempen\",\n\t\t\t147: \"schermvullend\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpl: {\n\t\t\t103: \"Anuluj\",\n\t\t\t104: \"Potwierdź\",\n\t\t\t105: \"Zamknij\",\n\t\t\t106: \"Poprzedni\",\n\t\t\t107: \"Następny\",\n\t\t\t131: \"obraz\",\n\t\t\t132: \"ścieżka obrazu\",\n\t\t\t133: \"ścieżka dźwiękowa\",\n\t\t\t134: \"napisy\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t144: \"wstecz/przodu\",\n\t\t\t145: \"ciszej/głośniej\",\n\t\t\t146: \"wycisz\",\n\t\t\t147: \"pełny ekran\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpt: {\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Fechar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Seguinte\",\n\t\t\t108: \"Escolher um ficheiro\",\n\t\t\t109: \"Escolher um ou vários ficheiros\",\n\t\t\t124: \"Operação em processo...\",\n\t\t\t125: \"Envio em processo...\",\n\t\t\t126: \"Tratamento em processo...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"faixa de vídeo\",\n\t\t\t133: \"faixa de áudio\",\n\t\t\t134: \"legendas\",\n\t\t\t142: \"anterior/seguinte\",\n\t\t\t143: \"reprodução/pausa\",\n\t\t\t144: \"recuar/avançar\",\n\t\t\t145: \"diminuir/aumentar volume\",\n\t\t\t146: \"sem som\",\n\t\t\t147: \"ecrã completo\",\n\t\t\t148: \"sair\",\n\t\t\t149: \"Fim\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Todos os ficheiros foram aceites.\",\n\t\t\t162: \"Formato do ficheiro aceite: §.\",\n\t\t\t163: \"Formatos de ficheiro aceites: § e §.\",\n\t\t\t164: \"Tamanho máximo: § MB.\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - § kB/s em § minutos\",\n\t\t\t186: \"§% - § kB/s em § minuto\",\n\t\t\t187: \"§% - § kB/s em § segundos\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Tem a certeza? [span]Sim[/span] - Não\",\n\t\t\t193: \"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.\",\n\t\t\t194: \"Ocorreu um erro ao enviar.\",\n\t\t\t195: \"Ocorreu um erro ao processar.\",\n\t\t\t196: \"Convidamo-lo a [a §]tentar novamente[/a].\"\n\t\t},\n\t\tptbr: {\n\t\t\t107: \"Próximo\",\n\t\t\t124: \"Operação em andamento...\",\n\t\t\t125: \"Envio em andamento...\",\n\t\t\t126: \"Tratamento em andamento...\",\n\t\t\t132: \"trilha de vídeo\",\n\t\t\t133: \"trilha de áudio\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tru: {\n\t\t\t102: \"Ок\",\n\t\t\t103: \"Отмена\",\n\t\t\t104: \"Подтвердить\",\n\t\t\t105: \"Закрыть\",\n\t\t\t106: \"Предыдущий\",\n\t\t\t107: \"Следующий\",\n\t\t\t108: \"Выберите файл\",\n\t\t\t124: \"Операция в процессе...\",\n\t\t\t131: \"видео\",\n\t\t\t132: \"видеодорожка\",\n\t\t\t133: \"аудиодорожка\",\n\t\t\t134: \"субтитры\",\n\t\t\t142: \"предыдущий/следующий\",\n\t\t\t143: \"воспроизведение/пауза\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"понизить/повысить громкость\",\n\t\t\t146: \"выключить звук\",\n\t\t\t147: \"полноэкранный режим\",\n\t\t\t148: \"выйти\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Все файлы приняты.\",\n\t\t\t162: \"Формат файла: §.\",\n\t\t\t163: \"Форматы файлов: § и §.\",\n\t\t\t164: \"Максимальный размер: § MB.\",\n\t\t\t181: \"§% - § kB/s - осталось § минут\",\n\t\t\t182: \"§% - § kB/s - осталось § минут\",\n\t\t\t183: \"§% - § kB/s - осталось § секунд\",\n\t\t\t185: \"§% - § kB/s за § минут\",\n\t\t\t186: \"§% - § kB/s за § минут\",\n\t\t\t187: \"§% - § kB/s за § секунд\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Вы уверены? [span]Да[/span] - нет\",\n\t\t\t193: \"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.\",\n\t\t\t194: \"Возникла ошибка при отправке файла.\",\n\t\t\t195: \"Возникла ошибка при обработке файла.\"\n\t\t},\n\t\tsk: {\n\t\t\t103: \"Zrušiť\",\n\t\t\t104: \"Potvrdiť\",\n\t\t\t105: \"Zavrieť\",\n\t\t\t106: \"Dozadu\",\n\t\t\t107: \"Ďalej\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t103: \"İptal\",\n\t\t\t104: \"Onayla\",\n\t\t\t105: \"Kapat\",\n\t\t\t106: \"Önceki\",\n\t\t\t107: \"Sonraki\",\n\t\t\t131: \"görüntü\",\n\t\t\t132: \"görüntü kaydı\",\n\t\t\t133: \"ses kaydı\",\n\t\t\t134: \"altyazılar\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t144: \"geri/i̇leri\",\n\t\t\t145: \"ses kısar/açar\",\n\t\t\t146: \"sesi kapatma\",\n\t\t\t147: \"tam ekran\",\n\t\t\t149: \"Son\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"Emin misiniz ? [span]Evet[/span] - Hayır\"\n\t\t},\n\t\tuk: {\n\t\t\t103: \"Відмінити\",\n\t\t\t104: \"Підтвердити\",\n\t\t\t105: \"Закрити\",\n\t\t\t106: \"Попередній\",\n\t\t\t107: \"Наступний\",\n\t\t\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tzh: {\n\t\t\t103: \"取消\",\n\t\t\t104: \"确认\",\n\t\t\t105: \"关闭\",\n\t\t\t106: \"上一个\",\n\t\t\t107: \"下一个\",\n\t\t\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"上一个/下一个\",\n\t\t\t144: \"快退/快进\",\n\t\t\t145: \"音量减/增\",\n\t\t\t146: \"静音\",\n\t\t\t147: \"全屏\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"您确定吗?[span]是[/span] - 否\"\n\t\t}\n\t\t// auto end\n\t};\n\n\tthis.init = function () {\n\n\t\tvar value = apijs.config.lang, html = document.querySelector('html');\n\n\t\tif (value.indexOf('auto') > -1) {\n\t\t\tvalue = html.getAttribute('xml:lang') || html.getAttribute('lang'); // pt-BR fr-FR\n\t\t\tif (typeof value == 'string') {\n\t\t\t\tvalue = value.replace(/[-_]/g, '').toLowerCase();\n\t\t\t\tvalue = value.slice(0, 4); // ptbr frfr\n\t\t\t\tif (!this.data.hasOwnProperty(value))\n\t\t\t\t\tvalue = value.slice(0, 2); // pt fr\n\t\t\t\tif (this.data.hasOwnProperty(value))\n\t\t\t\t\tapijs.config.lang = value;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.data.hasOwnProperty(value))\n\t\t\tapijs.config.lang = 'en';\n\t};\n\n\n\t// TRADUIT (public return string|domelement|boolean)\n\n\tthis.translate = function (word) {\n\n\t\tvar lang = apijs.config.lang, idx = 1, translation = '';\n\n\t\t// mot clef inexistant dans la langue configurée\n\t\t// test avec la langue par défaut pour éventuellement continuer\n\t\tif (typeof this.data[lang][word] != 'string') {\n\t\t\tif ((lang.length > 3) && (typeof this.data[lang.slice(0, 2)][word] == 'string'))\n\t\t\t\tlang = lang.slice(0, 2);\n\t\t\telse if ((lang !== 'en') && (typeof this.data.en[word] == 'string'))\n\t\t\t\tlang = 'en';\n\t\t\telse\n\t\t\t\treturn word;\n\t\t}\n\n\t\t// chaîne de caractères configurable\n\t\tif (arguments.length > 1) {\n\t\t\tthis.data[lang][word].split('§').forEach(function (data) {\n\t\t\t\ttranslation += (idx < this.length) ? data + this[idx++] : data;\n\t\t\t}, arguments); // pour que ci-dessus this = arguments\n\t\t\treturn translation;\n\t\t}\n\n\t\t// chaîne de caractères simple\n\t\treturn this.data[lang][word];\n\t};\n\n\tthis.translateNode = function () {\n\n\t\t// apply fait une copie des arguments\n\t\t// c'est comme si on avait appelé this.translate directement\n\t\treturn document.createTextNode(this.translate.apply(this, arguments));\n\t};\n\n\tthis.changeLang = function (lang) {\n\n\t\tif (typeof lang == 'string') {\n\n\t\t\tif (lang.indexOf('auto') > -1) {\n\t\t\t\tapijs.config.lang = 'auto';\n\t\t\t\tthis.init();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlang = lang.replace(/[-_]/g, '');\n\n\t\t\tif (this.data.hasOwnProperty(lang)) {\n\t\t\t\tapijs.config.lang = lang;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/02/03/2020\n * Updated J/19/11/2020\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.select = function () {\n\n\t\"use strict\";\n\n\tthis.init = function () {\n\n\t\tdocument.querySelectorAll('select').forEach(function (elem) {\n\t\t\telem.addEventListener('focus', apijs.select.open);\n\t\t});\n\t};\n\n\tthis.open = function (ev) {\n\n\t\tvar root = ev.target, t, a, b, c, d;\n\n\t\tt = document.createDocumentFragment();\n\n\t\t\ta = document.createElement('div');\n\n\t\t\t\tb = document.createElement('ul');\n\t\t\t\troot.querySelectorAll('option').forEach(function (elem) {\n\t\t\t\t\tc = document.createElement('li');\n\t\t\t\t\tc.appendChild(document.createTextNode(elem.textContent));\n\t\t\t\t\tArray.prototype.forEach.call(elem.attributes, function (attribute) {\n\t\t\t\t\t\tc.setAttribute(attribute.name, attribute.value);\n\t\t\t\t\t});\n\t\t\t\t\tthis.appendChild(c);\n\t\t\t\t}, b); // pour que ci-dessus this = b\n\n\t\t\ta.appendChild(b);\n\n\t\tt.appendChild(a);\n\n\t\tconsole.log(t.firstChild.innerHTML);\n\t\troot.parentNode.replaceChild(t.firstChild, root);\n\t};\n};","/**\n * Created D/11/01/2015\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.player = function (video, url) {\n\n\t\"use strict\";\n\tthis.video = video;\n\tthis.stalled = false;\n\tthis.subload = false;\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this|void|domelement)\n\n\tthis.autoRun = function (video, url) { // todo\n\n\t\tvideo.removeAttribute('src');\n\t\tvideo.removeAttribute('data-src');\n\t\tvideo.removeAttribute('controls');\n\t\tvideo.classList.add('apijsplayer');\n\n\t\t// https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Events/evenement_medias\n\t\tvideo.onloadedmetadata = function (ev) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onTimeupdate(ev);\n\t\t\tthis.onProgress(ev);\n\t\t\tthis.onVideotrack();\n\t\t\tthis.onAudiotrack();\n\t\t}.bind(this);\n\t\tvideo.onstalled = function (ev) {\n\t\t\tthis.stalled = true;\n\t\t\tthis.onWaiting(ev);\n\t\t}.bind(this);\n\t\tvideo.onplaying = this.onPlay.bind(this);\n\t\tvideo.onpause = this.onPlay.bind(this);\n\t\tvideo.onended = this.onPlay.bind(this);\n\t\tvideo.onprogress = this.onProgress.bind(this);\n\t\tvideo.ontimeupdate = this.onTimeupdate.bind(this);\n\t\tvideo.onseeking = this.onTimeupdate.bind(this);\n\t\tvideo.onseeked = this.onWaiting.bind(this);\n\t\tvideo.onwaiting = this.onWaiting.bind(this);\n\t\tvideo.onloadstart = this.onWaiting.bind(this);\n\t\tvideo.oncanplay = this.onWaiting.bind(this);\n\t\tvideo.onclick = this.actionPlay.bind(this);\n\t\tvideo.onvolumechange = this.actionVolume.bind(this);\n\t\tvideo.ondurationchange = apijs.dialog.onMediaLoad;\n\t\tvideo.onerror = apijs.dialog.onMediaLoad;\n\n\t\t// ajoute les contrôles\n\t\tvideo.parentNode.appendChild(this.htmlSvgPlayer());\n\n\t\t// charge les sources\n\t\tif (url.indexOf('m3u') < 0) {\n\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\treturn this;\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijsplayer.init', xhr: xhr } }));\n\t\t\t\tif (!video || (video.childNodes.length > 0)) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\t\t\t\telse if ([0, 200].has(xhr.status)) {\n\n\t\t\t\t\tvar url, txt, nbv = 0, nbt = 0, data = xhr.responseText.trim().split(\"\\n\");\n\t\t\t\t\twhile (typeof (url = data.shift()) == 'string') {\n\n\t\t\t\t\t\t// #APIJS#attr|name|value\n\t\t\t\t\t\tif (url.indexOf('#APIJS#attr') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tvideo.setAttribute(txt[1], txt[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #APIJS#track|kind|label|srclang|src\n\t\t\t\t\t\telse if (url.indexOf('#APIJS#track|subtitles') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tthis.html('.tracks.texttrack select').appendChild(this.htmlOption(nbt++, txt[3] + ' - ' + txt[2]));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlTrack(txt));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #EXTINF: Text\n\t\t\t\t\t\telse if (url.indexOf('#EXTINF') === 0) {\n\t\t\t\t\t\t\ttxt = url.replace(/#EXTINF:[0-9]+,/, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// http\n\t\t\t\t\t\telse if ((url.length > 5) && (url[0] !== '#')) {\n\t\t\t\t\t\t\tthis.html('.tracks.video select').appendChild(this.htmlOption(nbv++, (typeof txt == 'string') ? txt : nbv));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.updateSelect('video', nbv);\n\t\t\t\t\tif (typeof video.textTracks == 'object')\n\t\t\t\t\t\tthis.updateSelect('texttrack', video.textTracks.length || nbt);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijs.dialog.onMediaLoad({ type: 'error' });\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\txhr.send();\n\n\t\treturn this;\n\t};\n\n\tthis.updateSelect = function (css, total) {\n\n\t\t// s'il y une seule option on affiche pas, sauf pour les sous titres\n\t\tvar adjust = (css === 'texttrack') ? 1 : 0;\n\t\tif (total > adjust) {\n\t\t\tthis.html('.tracks.' + css).removeAttribute('style');\n\t\t\tthis.html('.tracks.' + css + ' em').textContent = '(' + total + ')';\n\t\t\tthis.html('.tracks.' + css + ' select').setAttribute('size', (total < 10) ? total + adjust : 10);\n\t\t}\n\t\telse {\n\t\t\tthis.html('.tracks.' + css).setAttribute('style', 'display:none;');\n\t\t\tthis.html('.tracks.' + css + ' select').innerHTML = '';\n\t\t}\n\t};\n\n\tthis.html = function (selector) {\n\t\treturn this.video.parentNode.querySelector(selector);\n\t};\n\n\n\t// GESTION DES ÉVÉNEMENTS (private return void)\n\n\tthis.onVideotrack = function () {\n\n\t\tvar tracks = this.video.videoTracks, select = this.html('.tracks.videotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes vidéo\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('videotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionVideotrack(auto);\n\t\t}\n\t};\n\n\tthis.onAudiotrack = function () {\n\n\t\tvar tracks = this.video.audioTracks, select = this.html('.tracks.audiotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes audio\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('audiotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionAudiotrack(auto);\n\t\t}\n\t};\n\n\tthis.onTimeupdate = function (ev) {\n\n\t\tvar time = this.video.currentTime, duration = this.video.duration, text = '--:--', hh, mm, ss;\n\n\t\tif (!isNaN(time) && (duration !== Infinity) && !isNaN(duration)) {\n\n\t\t\thh = Math.floor(time / 3600);\n\t\t\tmm = Math.floor((time % 3600) / 60);\n\t\t\tss = Math.floor(time % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext = hh + mm + ':' + ss;\n\n\t\t\thh = Math.floor(duration / 3600);\n\t\t\tmm = Math.floor((duration % 3600) / 60);\n\t\t\tss = Math.floor(duration % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext += ' / ' + hh + mm + ':' + ss;\n\n\t\t\tthis.html('svg.bar rect').style.width = (time / duration * 100) + '%';\n\t\t}\n\n\t\tthis.html('span.time').textContent = text;\n\n\t\t// loader stalled sauf par les tracks\n\t\tif (this.stalled && !this.subload) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onWaiting(ev);\n\t\t}\n\t};\n\n\tthis.onProgress = function () {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), idx = video.buffered.length, width, buffer;\n\n\t\tif ((idx > 0) && (video.duration !== Infinity) && !isNaN(video.duration)) {\n\n\t\t\telem.querySelectorAll('.buffer').forEach(function (node) { node.parentNode.removeChild(node); });\n\t\t\twhile (idx-- > 0) {\n\n\t\t\t\tbuffer = document.createElement('rect');\n\t\t\t\tbuffer.setAttribute('class', 'buffer');\n\n\t\t\t\twidth = (video.buffered.end(idx) - video.buffered.start(idx)) / video.duration * 100;\n\t\t\t\tif (width > 99.8)\n\t\t\t\t\tbuffer.setAttribute('style', 'left:0%; width:100%;');\n\t\t\t\telse\n\t\t\t\t\tbuffer.setAttribute('style', 'left:' + (video.buffered.start(idx) / video.duration * 100) + '%; width:' + width + '%;');\n\n\t\t\t\telem.appendChild(buffer);\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onPlay = function () { // todo\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tif (this.video.paused) {\n\t\t\t\tthis.html('span.play').textContent = '\\uE810';\n\t\t\t\tapijs.dialog.remove('playing');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.html('span.play').textContent = '\\uE811';\n\t\t\t\tapijs.dialog.add('playing');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onWaiting = function (ev) { // todo\n\t\tapijs.log('player:video:onWaiting:' + ev.type + ' stalled:' + this.stalled + '/subload:' + this.subload);\n\t\tapijs.dialog[['loadstart', 'waiting', 'seeking', 'stalled'].has(ev.type) ? 'add' : 'remove']('loading');\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionPlay = function () {\n\n\t\tvar video = this.video;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\t\t\tif (video.ended || video.paused)\n\t\t\t\tvideo.play();\n\t\t\telse\n\t\t\t\tvideo.pause();\n\t\t}\n\t};\n\n\tthis.actionVolume = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.vol'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\n\t\t\tif ((typeof ev == 'object') && !isNaN(ev.clientX)) {\n\n\t\t\t\tdo { value += elem.offsetLeft; }\n\t\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\t\tvalue = ((ev.clientX - value) * 100 / width) / 100;\n\t\t\t\tvalue = (value <= 0.1) ? 0 : ((value > 0.92) ? 1 : value);\n\n\t\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t\t//\tvalue = 1 - value;\n\n\t\t\t\tvideo.volume = value;\n\t\t\t\tvideo.muted = false;\n\t\t\t}\n\n\t\t\tthis.html('svg.vol rect').style.width = video.muted ? 0 : (video.volume * 100) + '%';\n\t\t}\n\t};\n\n\tthis.actionPosition = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif (([1,2].has(video.networkState)) && (video.duration !== Infinity) && !isNaN(video.duration) && (typeof ev == 'object')) {\n\n\t\t\tdo { value += elem.offsetLeft; }\n\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\tvalue = (video.duration * (ev.clientX - value) * 100 / width) / 100;\n\t\t\tvalue = (value <= 1) ? 0 : value;\n\n\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t//\tvalue = video.duration - value;\n\n\t\t\tvideo.currentTime = value;\n\t\t}\n\t};\n\n\tthis.actionVideotrack = function (ev) {\n\n\t\tvar tracks = this.video.videoTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionAudiotrack = function (ev) {\n\n\t\tvar tracks = this.video.audioTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionTexttrack = function (ev) {\n\n\t\tvar tracks = this.video.textTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].mode = (idx == value) ? 'showing' : 'hidden';\n\n\t\t\tthis.subload = true;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionVideo = function (ev) {\n\n\t\tthis.html('svg.bar rect').style.width = '0';\n\t\tthis.html('svg.bar').querySelectorAll('.buffer').forEach(function (node) { node.parentNode.removeChild(node); });\n\t\tthis.html('span.play').textContent = '\\uE810';\n\n\t\tthis.updateSelect('videotrack', 0);\n\t\tthis.updateSelect('audiotrack', 0);\n\n\t\tthis.video.src = this.video.querySelectorAll('source')[(typeof ev == 'object') ? ev.target.value : ev].src;\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return domelement)\n\n\tthis.htmlSvgPlayer = function () {\n\n\t\tvar d, c, b, a = document.createElement('div');\n\t\ta.setAttribute('class', 'apijsplayer noplaying');\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn play fnt');\n\t\t\tb.appendChild(document.createTextNode('\\uE810'));\n\t\t\tb.onclick = this.actionPlay.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg bar');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'bar');\n\t\t\t\tc.onclick = this.actionPosition.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'time');\n\t\t\tb.appendChild(document.createTextNode('--:--'));\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg vol nomobile');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'vol');\n\t\t\t\tc.onclick = this.actionVolume.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks audiotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(133));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionAudiotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks videotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(132));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks video');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(131));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideo.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks texttrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(134));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionTexttrack.bind(this);\n\n\t\t\t\t\td = document.createElement('option');\n\t\t\t\t\td.appendChild(apijs.i18n.translateNode(135)); // off\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn full fnt nomobile');\n\t\t\tb.appendChild(document.createTextNode('\\uE80F'));\n\t\t\tb.onclick = function () {\n\t\t\t\tapijs.requestFullscreen(apijs.dialog.t1 ? apijs.dialog.t1 : this.video.parentNode);\n\t\t\t}.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlTrack = function (data) { // todo\n\n\t\tvar a = document.createElement('track');\n\t\ta.setAttribute('kind', data[1]);\n\t\ta.setAttribute('label', data[2]);\n\t\ta.setAttribute('srclang', data[3]);\n\t\ta.setAttribute('src', data[4]);\n\n\t\ta.onload = function (ev) {\n\t\t\tapijs.log('player:track:onload ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\ta.onerror = function (ev) {\n\t\t\tapijs.log('player:track:onerror ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlSource = function (url) {\n\n\t\tvar a = document.createElement('source');\n\t\ta.setAttribute('src', url);\n\t\ta.onerror = apijs.dialog.onMediaLoad;\n\n\t\treturn a;\n\t};\n\n\tthis.htmlOption = function (idx, txt) {\n\n\t\tif (typeof txt == 'object')\n\t\t\ttxt = (txt.label === '') ? txt.language.toLowerCase() : txt.language.toLowerCase() + ' - ' + txt.label;\n\n\t\tvar a = document.createElement('option');\n\t\ta.setAttribute('value', idx);\n\t\ta.appendChild(document.createTextNode(txt));\n\n\t\treturn a;\n\t};\n\n\n\tthis.autoRun(video, url);\n};","/**\n * Created D/12/04/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.dialog = function () {\n\n\t\"use strict\";\n\tthis.klass = [];\n\tthis.height = 0;\n\tthis.scroll = 0; // time\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.xhr = null;\n\n\tthis.ft = /information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g;\n\tthis.ti = 'a,area,button,input,textarea,select,object,iframe';\n\tthis.ns = 'http://www.w3.org/2000/svg';\n\n\tthis.media = null;\n\tthis.t0 = null; // fragment\n\tthis.t1 = null; // div id=apijsDialog\n\tthis.t2 = null; // div/form id=apijsBox\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = null;\n\tthis.d = null;\n\n\n\t// GÉNÉRATION DES BOÎTES DE DIALOGUE (public return boolean)\n\n\tthis.dialogInformation = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('information', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnOk()\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogInformation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogConfirmation = function (title, text, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('confirmation', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('button', 'apijs.dialog.actionConfirm();')\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogConfirmation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormOptions = function (title, text, action, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('options', icon)\n\t\t\t\t.htmlParent(action, 'apijs.dialog.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show(true);\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormOptions invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormUpload = function (title, text, action, input, multiple, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof input == 'string')) {\n\t\t\treturn this.init('upload', icon)\n\t\t\t\t.htmlParent(action, 'apijs.upload.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlUpload(input, (typeof multiple == 'boolean') ? multiple : false)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show('button.browse');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormUpload invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogProgress = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('progress', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgProgress()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogProgress invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogWaiting = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('waiting', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogWaiting invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogPhoto = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('photo', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, false)\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogPhoto invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogVideo = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('video', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, url.indexOf('iframe') < 0) // true si pas iframe\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogVideo invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogIframe = function (url, close, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean')) {\n\t\t\treturn this.init('iframe', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlIframe(url)\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogIframe invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogAjax = function (url, close, callback, args, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean') && (typeof callback == 'function')) {\n\t\t\t// dialogue\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.init('ajax', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t\t// ajax\n\t\t\tthis.xhr = new XMLHttpRequest();\n\t\t\tthis.xhr.open('GET', url, true);\n\t\t\tthis.xhr.onreadystatechange = function () {\n\t\t\t\tif ((this.xhr.readyState === 4) && (typeof this.callback == 'function')) {\n\t\t\t\t\tthis.callback(this.xhr, this.args);\n\t\t\t\t\tthis.remove('loading');\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.xhr.send();\n\t\t\treturn this;\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogAjax invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES CLASSES CSS (public sauf update private, return this sauf has return true)\n\n\tthis.update = function () {\n\n\t\t// il n'est pas question de mettre à jour les attributs class sans l'une des 3 classes de base\n\t\tif (this.has('start', 'ready', 'end')) {\n\t\t\tif (this.t1)\n\t\t\t\tthis.t1.setAttribute('class', this.klass.join(' '));\n\t\t\tif (this.t2)\n\t\t\t\tthis.t2.setAttribute('class', this.klass.join(' '));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.add = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.add argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) < 0)\n\t\t\t\tthis.klass.push(css);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.remove = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.remove argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) > -1)\n\t\t\t\tthis.klass.splice(this.klass.indexOf(css), 1);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.toggle = function (search, replace) {\n\n\t\tif ((typeof search != 'string') || (typeof replace != 'string'))\n\t\t\tconsole.error('apijs.dialog.toggle argument is not a string', search, replace);\n\n\t\tif (this.has(search))\n\t\t\tthis.remove(search);\n\t\tif (!this.has(replace))\n\t\t\tthis.add(replace);\n\n\t\treturn this.update();\n\t};\n\n\tthis.has = function () {\n\t\treturn this.klass.has(apijs.toArray(arguments)); // true if one found\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private sauf actionClose)\n\n\tthis.actionClose = function (ev) {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function')) {\n\t\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href))\n\t\t\t\thistory.pushState({}, '', self.location.href.slice(0, self.location.href.indexOf('#')));\n\t\t}\n\n\t\tif (typeof ev == 'object') {\n\t\t\tif ((ev.target.getAttribute('id') === 'apijsDialog') && !apijs.dialog.has('photo', 'video', 'progress', 'waiting', 'lock'))\n\t\t\t\tapijs.dialog.clear(true);\n\t\t}\n\t\telse if (this.t1) {\n\t\t\tthis.clear(true);\n\t\t}\n\t};\n\n\tthis.onCloseBrowser = function (ev) {\n\n\t\tif (apijs.dialog.has('progress', 'waiting', 'lock')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t\tev.m = apijs.i18n.translate(124);\n\t\t\tev.returnValue = ev.m; // Gecko, Trident, Chrome 34+\n\t\t\treturn ev.m; // Gecko, WebKit, Chrome\n\t\t}\n\t};\n\n\tthis.onResizeBrowser = function () {\n\n\t\tvar add = document.querySelector('body').clientWidth <= (apijs.dialog.has('photo', 'video') ? 900 : 460);\n\t\tapijs.dialog[add ? 'add' : 'remove']('mobile');\n\n\t\tadd = document.querySelector('body').clientWidth <= 300;\n\t\tapijs.dialog[add ? 'add' : 'remove']('tiny');\n\t};\n\n\tthis.onScrollBrowser = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = ev.target, brk = false;\n\n\t\t// dialogues du diaporama (suivant/précédent)\n\t\tif (that.has('slideshow') && !that.has('playing') &&\n\t\t !['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll','mousewheel','panleft','panright'].has(ev.type)) {\n\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (1 + that.scroll))) {\n\t\t\t\tthat.scroll = elem;\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tapijs.slideshow[((ev.type === 'panleft') || brk) ? 'actionNext' : 'actionPrev']();\n\t\t\t}\n\t\t}\n\t\t// autorise éventuellement le défilement\n\t\t// recherche l'éventuel élément scrollable\n\t\telse {\n\t\t\tif (elem.nodeName === 'OPTION') {\n\t\t\t\telem = elem.parentNode;\n\t\t\t}\n\t\t\telse if (!['TEXTAREA', 'SELECT'].has(elem.nodeName)) {\n\t\t\t\twhile ((brk !== true) && (elem.nodeName !== 'HTML')) {\n\t\t\t\t\tif (elem.classList.contains('scrollable'))\n\t\t\t\t\t\tbrk = true;\n\t\t\t\t\telse\n\t\t\t\t\t\telem = elem.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// elem = select | textarea | scrollable\n\t\t\tif (elem.nodeName !== 'HTML') {\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tif ((brk && (elem.scrollTop < (elem.scrollHeight - elem.offsetHeight))) || (!brk && (elem.scrollTop > 0)))\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// empèche le défilement\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\t};\n\n\tthis.onScrollIframe = function (ev) {\n\n\t\tvar elem = ev.target, brk;\n\t\twhile (elem.parentNode)\n\t\t\telem = elem.parentNode;\n\n\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\n\t\t// empèche le défilement (elem = iframe document)\n\t\tif (\n\t\t\t(brk && ((elem.defaultView.innerHeight + elem.defaultView.pageYOffset) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.pageYOffset <= 0))\n\t\t) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t}\n\t};\n\n\tthis.onKey = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = that.media;\n\n\t\t// dialogues d'attente et de progresssion ou tout autre dialogue verrouillé\n\t\t// ctrl + q | ctrl + w | ctrl + r | ctrl + f4 | ctrl + f5 // alt + f4 // échap | f5\n\t\tif (that.has('progress', 'waiting', 'lock')) {\n\n\t\t\tif ((ev.ctrlKey && [81, 87, 82, 115, 116].has(ev.keyCode)) || (ev.altKey && (ev.keyCode === 115)) || [27, 116].has(ev.keyCode))\n\t\t\t\tev.preventDefault();\n\t\t}\n\t\t// dialogues photo et vidéo\n\t\t// f11 (ne fonctionne plus sur Opera 74 Windows)\n\t\telse if (that.has('photo', 'video') && (ev.keyCode === 122)) {\n\t\t\tev.preventDefault();\n\t\t\tapijs.requestFullscreen(that.t1);\n\t\t}\n\t\t// dialogues photo et vidéo du diaporama\n\t\t// échap // fin // début // gauche // droite\n\t\telse if (that.has('slideshow')) {\n\n\t\t\tif (ev.keyCode === 27) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthat.actionClose();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 35) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionLast();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 36) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionFirst();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 37) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionPrev();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 39) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionNext();\n\t\t\t}\n\t\t}\n\t\t// pour tous les autres\n\t\t// échap\n\t\telse if (ev.keyCode === 27) {\n\t\t\tev.preventDefault();\n\t\t\tthat.actionClose();\n\t\t}\n\n\t\t// dialogue vidéo\n\t\t// espace | p // haut | page haut // bas | page bas // + // - // m\n\t\tif (that.has('video') && !that.has('videoiframe')) {\n\n\t\t\t// espace | p\n\t\t\tif ((ev.keyCode === 32) || (ev.keyCode === 80)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.ended || elem.paused)\n\t\t\t\t\t\telem.play();\n\t\t\t\t\telse\n\t\t\t\t\t\telem.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// haut | page haut\n\t\t\telse if ((ev.keyCode === 38) || (ev.keyCode === 33)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime < (elem.duration - 10))\n\t\t\t\t\t\telem.currentTime += 10;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// bas | page bas\n\t\t\telse if ((ev.keyCode === 40) || (ev.keyCode === 34)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > 10)\n\t\t\t\t\t\telem.currentTime -= 10;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.currentTime = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// +\n\t\t\telse if (ev.keyCode === 107) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume < 0.8)\n\t\t\t\t\t\telem.volume += 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// -\n\t\t\telse if (ev.keyCode === 109) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume > 0.21)\n\t\t\t\t\t\telem.volume -= 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// m\n\t\t\telse if (ev.keyCode === 77) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\telem.muted = !elem.muted; // inverse\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// défilement de la page pour tous (renvoi sur actionScrollBrowser)\n\t\t// espace | page haut | page bas | fin | début | haut | bas\n\t\tif ([32, 33, 34, 35, 36, 38, 40].has(ev.keyCode)) {\n\n\t\t\t// empèche le défilement\n\t\t\tif (!ev.target || !['INPUT', 'TEXTAREA', 'OPTION', 'SELECT'].has(ev.target.nodeName)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tev.stopPropagation();\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onFullscreen = function (ev) {\n\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tif (ev) apijs.log('dialog:onFullscreen:' + (res ? 'in' : 'out'));\n\n\t\tapijs.dialog[res ? 'add' : 'remove']('fullscreen');\n\t};\n\n\tthis.onIframeLoad = function (elem) { // todo\n\n\t\telem.removeAttribute('class');\n\t\tapijs.dialog.remove('loading');\n\n\t\telem.contentWindow.document.addEventListener('keydown', window.parent.apijs.dialog.onKey);\n\t\telem.contentWindow.addEventListener('DOMMouseScroll', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('mousewheel', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('touchmove', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t};\n\n\tthis.onMediaLoad = function (ev) { // todo\n\n\t\tvar that = apijs.dialog, media = that.media, src, elem, elems;\n\t\tif (ev && ev.target) {\n\t\t\tsrc = ev.target.currentSrc || ev.target.src;\n\t\t\tapijs.log('dialog:onMediaLoad:' + ev.type + ' ' + (src ? src.slice(src.lastIndexOf('/') + 1) : ''));\n\t\t}\n\n\t\tif (media && ['load', 'durationchange'].has(ev.type)) {\n\t\t\tthat.remove('loading', 'error');\n\t\t\tmedia.style.visibility = 'visible';\n\t\t\tif (!media.hasAttribute('src') && (media.nodeName === 'IMG'))\n\t\t\t\tmedia.setAttribute('src', media.imageLoader.src);\n\t\t}\n\t\telse if (media && (ev.type === 'error')) {\n\t\t\tthat.toggle('loading', 'error');\n\t\t\tmedia.removeAttribute('style');\n\t\t\t// player vidéo (désactive l'option et active la suivante)\n\t\t\telem = apijs.html('.tracks.video select');\n\t\t\tif (elem && ev && ev.target) {\n\t\t\t\telems = elem.querySelectorAll('option');\n\t\t\t\tif ((elems.length > 0) && (elem.value.length > 0)) {\n\t\t\t\t\telems[elem.value].setAttribute('disabled', 'disabled');\n\t\t\t\t\telem.selectedIndex += 1;\n\t\t\t\t\t// charge la vidéo suivante (si erreur au clic sur le select)\n\t\t\t\t\tif ((ev.target.nodeName === 'VIDEO') && (elem.value !== ''))\n\t\t\t\t\t\tmedia.videoPlayer.actionVideo(elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () { // todo\n\n\t\t// vérifie le dialogue d'options\n\t\t// arrêt du traitement si c'est pas bon\n\t\tif (this.has('options')) {\n\t\t\tif (this.callback(false, this.args) !== true)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// verrouille le dialogue et affiche le loader\n\t\tthis.add('lock', 'loading');\n\t\tthis.htmlSvgLoader(false);\n\n\t\t// masque les boutons et le texte du dialogue\n\t\tapijs.html('div.btns').style.visibility = 'hidden';\n\t\tapijs.html('div.bbcode').style.visibility = 'hidden';\n\n\t\t// appelle la fonction de rappel\n\t\t// ne déverrouille pas le dialogue\n\t\tself.setTimeout(function () {\n\t\t\tif ((this.t2) && (this.t2.nodeName === 'FORM'))\n\t\t\t\tthis.callback(this.t2.getAttribute('action'), this.args);\n\t\t\telse if (this.t2)\n\t\t\t\tthis.callback(this.args);\n\t\t}.bind(this), 12); // pour que ci-dessus this = this\n\n\t\treturn false; // très important\n\t};\n\n\n\t// GESTION DES CONTENEURS (private return this|boolean)\n\n\tthis.init = function (type, icon, isLocked) { // todo\n\n\t\tisLocked = (isLocked === true);\n\t\tif (typeof icon == 'string') {\n\t\t\ticon = icon.replace(this.ft, '').trim();\n\t\t\ticon = (icon.length > 0) ? (isLocked ? icon + ' lock' : icon) : (isLocked ? 'lock' : null);\n\t\t}\n\t\telse if (isLocked) {\n\t\t\ticon = 'lock';\n\t\t}\n\n\t\t// préparation\n\t\tif (this.t0)\n\t\t\tthis.clear(false);\n\n\t\t// css\n\t\tthis.klass.push('start');\n\t\tthis.klass.push(type);\n\n\t\tif (self.matchMedia('prefers-reduced-motion:reduce').matches)\n\t\t\tthis.klass.push('reduce');\n\n\t\tif (typeof icon == 'string')\n\t\t\tthis.klass = this.klass.concat(icon.split(' '));\n\n\t\t// création du fragment\n\t\tthis.t0 = document.createDocumentFragment();\n\n\t\t// surveillance des touches et du navigateur\n\t\tdocument.addEventListener('keydown', this.onKey);\n\t\tself.addEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.addEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.setAttribute('tabindex', '-1'); });\n\n\t\treturn this;\n\t};\n\n\tthis.show = function (focus) { // todo\n\n\t\t// design\n\t\tthis.onResizeBrowser();\n\t\tthis.onFullscreen();\n\n\t\tif ((this.height > 0) && !this.has('photo', 'video'))\n\t\t\tthis.t2.style.minHeight = this.height + 'px';\n\n\t\t// affichage du dialogue sans/sans/avec transitions CSS\n\t\tvar old = apijs.html('#Dialog');\n\t\tif (old) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tthis.t1 = old;\n\t\t\tthis.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\tthis.t1.setAttribute('class', this.t2.getAttribute('class'));\n\t\t}\n\t\telse if (this.has('notransition')) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t}\n\t\telse {\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t\tself.setTimeout(function () { apijs.dialog.toggle('start', 'ready'); }, 12);\n\t\t}\n\n\t\t// fermeture des popups au clic\n\t\tif (apijs.config.dialog.closeOnClick && !this.has('progress', 'waiting', 'lock'))\n\t\t\tdocument.addEventListener('click', this.actionClose);\n\n\t\t// passage en plein écran\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.addEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\n\t\t// auto-focus\n\t\tif (focus === true)\n\t\t\tself.setTimeout(function () { apijs.html('input:not([readonly]),textarea:not([readonly]),select:not([disabled])').focus(); }, 12);\n\t\telse if (typeof focus == 'string')\n\t\t\tapijs.html(focus).focus();\n\n\t\treturn true;\n\t};\n\n\tthis.clear = function (isAll) { // todo\n\n\t\tif (isAll && this.xhr) {\n\t\t\tthis.callback = null; // très important\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\t// surveillance des touches et du navigateur (depuis initDialog)\n\t\tdocument.removeEventListener('keydown', this.onKey);\n\t\tself.removeEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.removeEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation (depuis initDialog)\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.removeAttribute('tabindex'); });\n\n\t\t// fermeture des popups au clic (depuis showDialog)\n\t\tif (apijs.config.dialog.closeOnClick)\n\t\t\tdocument.removeEventListener('click', this.actionClose);\n\n\t\t// spécial\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\t// pour ne pas déclencher les fonctions\n\t\t\t// supprime tous les ontruc et les src\n\t\t\tif (this.has('video') && !this.has('videoiframe')) {\n\t\t\t\tthis.t2.querySelectorAll('video, source, track').forEach(function (elem) {\n\t\t\t\t\tfor (var name in elem) {\n\t\t\t\t\t\tif (name.indexOf('on') === 0)\n\t\t\t\t\t\t\telem[name] = null;\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute('src');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.media.videoPlayer = null;\n\t\t\tthis.media.imageLoader = null;\n\n\t\t\t// passage en plein écran (depuis showDialog)\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\t\t// mémorise la hauteur du dialogue\n\t\telse {\n\t\t\tthis.height = parseFloat(self.getComputedStyle(this.t2).height);\n\t\t}\n\n\t\t// supprime le dialogue\n\t\tif (isAll) {\n\t\t\tthis.toggle('ready', 'end');\n\t\t\tdocument.querySelector('body').removeChild(this.t1);\n\t\t}\n\t\telse {\n\t\t\tthis.t1.removeChild(this.t2);\n\t\t}\n\n\t\t// réinitialise toutes les variables (sauf ft/ti/ns)\n\t\tthis.klass = [];\n\t\tif (isAll) {\n\t\t\tthis.height = 0;\n\t\t\tthis.scroll = 0; // time\n\t\t\tthis.callback = null;\n\t\t\tthis.args = null;\n\t\t\tthis.xhr = null;\n\t\t}\n\t\tthis.media = null;\n\t\tthis.t0 = null; // fragment\n\t\tthis.t1 = null; // div id=apijsDialog\n\t\tthis.t2 = null; // div/form id=apijsBox\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = null;\n\t\tthis.d = null;\n\n\t\treturn true;\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this)\n\n\tthis.htmlParent = function (action, submit) {\n\n\t\tthis.t1 = document.createElement('div');\n\t\tthis.t1.setAttribute('id', 'apijsDialog');\n\n\t\tif (typeof action == 'string') {\n\t\t\tthis.t2 = document.createElement('form');\n\t\t\tthis.t2.setAttribute('action', action);\n\t\t\tthis.t2.setAttribute('method', 'post');\n\t\t\tthis.t2.setAttribute('enctype', 'multipart/form-data');\n\t\t\tthis.t2.setAttribute('onsubmit', 'return ' + submit);\n\t\t}\n\t\telse {\n\t\t\tthis.t2 = document.createElement('div');\n\t\t}\n\n\t\tthis.t2.setAttribute('id', 'apijsBox');\n\t\tthis.t1.appendChild(this.t2);\n\t\tthis.t0.appendChild(this.t1);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlContent = function (title, text) {\n\n\t\tif (title.length > 0) {\n\t\t\tthis.a = document.createElement('h1');\n\t\t\tthis.a.innerHTML = title.replace(/</g, '<').replace(/>/g, '>').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\tif (text.length > 0) {\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'bbcode');\n\t\t\tif (text[0] !== '[') text = '[p]' + text + '[/p]';\n\t\t\tthis.a.innerHTML = text.replace(/</g, '<').replace(/>/g, '>').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.a.querySelectorAll('a.popup').forEach(function (elem) { elem.addEventListener('click', apijs.openTab); });\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnOk = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(102));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnConfirm = function (type, click) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', type);\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tif (type !== 'submit') this.b.setAttribute('onclick', click);\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(104));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'cancel');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(103));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnNavigation = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'navigation noplaying');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'prev');\n\t\t\tthis.b.setAttribute('id', 'apijsPrev');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionPrev();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(106));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'next');\n\t\t\tthis.b.setAttribute('id', 'apijsNext');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionNext();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(107));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnClose = function (close) {\n\n\t\tif (close !== false) {\n\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'close noplaying');\n\n\t\t\t\tthis.b = document.createElement('button');\n\t\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\t\tthis.b.setAttribute('class', 'close');\n\t\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(105));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\n\t\t\tthis.a.appendChild(this.b);\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlUpload = function (input, isMultiple) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.b = document.createElement('input');\n\t\t\tthis.b.setAttribute('type', 'file');\n\t\t\tthis.b.setAttribute('name', input);\n\t\t\tthis.b.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.b.setAttribute('multiple', 'multiple');\n\t\t\tthis.b.setAttribute('onchange', 'apijs.upload.actionChoose(this);');\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'browse');\n\t\t\tthis.b.setAttribute('onclick', 'this.previousSibling.click();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(isMultiple ? 109 : 108));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('div');\n\t\t\tthis.b.setAttribute('class', 'filenames');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgProgress = function () {\n\n\t\tthis.a = document.createElement('span');\n\t\tthis.a.setAttribute('class', 'info');\n\t\tthis.t2.appendChild(this.a);\n\n\t\tthis.a = document.createElement('svg');\n\t\tthis.a.setAttribute('id', 'apijsProgress');\n\n\t\t\tthis.b = document.createElement('rect');\n\t\t\tthis.b.setAttribute('class', 'auto');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgLoader = function (isDelayed) {\n\n\t\tthis.a = document.createElementNS(this.ns, 'svg');\n\t\tthis.a.setAttribute('class', 'loader');\n\n\t\t\tthis.b = document.createElementNS(this.ns, 'path');\n\t\t\tif (isDelayed !== false) this.b.setAttribute('style', 'opacity:0;');\n\t\t\tthis.b.setAttribute('d', 'M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z');\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animateTransform');\n\t\t\t\tthis.c.setAttribute('attributeName', 'transform');\n\t\t\t\tthis.c.setAttribute('type', 'rotate');\n\t\t\t\tthis.c.setAttribute('from', '0 64 64');\n\t\t\t\tthis.c.setAttribute('to', '360 64 64');\n\t\t\t\tthis.c.setAttribute('dur', '5s');\n\t\t\t\tthis.c.setAttribute('repeatCount', 'indefinite');\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animate');\n\t\t\t\tthis.c.setAttribute('attributeName', 'opacity');\n\t\t\t\tthis.c.setAttribute('to', '1');\n\t\t\t\tthis.c.setAttribute('dur', '0.01s');\n\t\t\t\tthis.c.setAttribute('begin', '1s');\n\t\t\t\tthis.c.setAttribute('fill', 'freeze');\n\n\t\t\tif (isDelayed !== false) this.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlMedia = function (url, name, date, legend) {\n\n\t\tthis.a = document.createElement('dl');\n\t\tthis.a.setAttribute('class', 'media');\n\n\t\t\tthis.b = document.createElement('dt');\n\n\t\t\tif (this.has('photo')) {\n\t\t\t\tthis.media = document.createElement('img');\n\t\t\t\tthis.media.setAttribute('alt', legend.replace('\"', ''));\n\t\t\t}\n\t\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\t\tthis.media = document.createElement('iframe');\n\t\t\t\tthis.media.setAttribute('type', 'text/html');\n\t\t\t\tthis.media.setAttribute('scrolling', 'no');\n\t\t\t\tthis.media.setAttribute('src', url);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.media = document.createElement('video');\n\t\t\t\tthis.media.setAttribute('controls', 'controls');\n\t\t\t\tthis.media.setAttribute('preload', 'metadata');\n\t\t\t}\n\n\t\t\tthis.media.setAttribute('id', 'apijsMedia');\n\t\t\tthis.b.appendChild(this.media);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('dd');\n\t\t\tthis.b.setAttribute('class', 'nomobile noplaying');\n\n\t\t\tif ((name !== 'false') || (date !== 'false')) {\n\n\t\t\t\tvar fileid = url.slice(url.lastIndexOf('/') + 1);\n\t\t\t\tthis.c = document.createElement('span');\n\n\t\t\t\t// name + date\n\t\t\t\tif ((name !== 'false') && (name !== 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' (' + date + ') '));\n\t\t\t\t// name\n\t\t\t\telse if ((name !== 'false') && (name !== 'auto'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' '));\n\t\t\t\t// auto name + date\n\t\t\t\telse if ((name === 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' (' + date + ') '));\n\t\t\t\t// auto name\n\t\t\t\telse if (name === 'auto')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' '));\n\t\t\t\t// date\n\t\t\t\telse if (date !== 'false')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode('(' + date + ') '));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t}\n\n\t\t\tthis.b.appendChild(document.createTextNode(legend));\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\t// au choix : photo / vidéo avec iframe / vidéo avec lecteur / vidéo simple\n\t\t// lecteur créé v5.2 / supprimé v5.3 / refait v6.0 / extrait v6.6\n\t\tif (this.has('photo')) {\n\t\t\tthis.media.imageLoader = new Image();\n\t\t\tthis.media.imageLoader.src = url;\n\t\t\tthis.media.imageLoader.onload = this.onMediaLoad;\n\t\t\tthis.media.imageLoader.onerror = this.onMediaLoad;\n\t\t}\n\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\tthis.media.onload = function (ev) {\n\t\t\t\tthis.onIframeLoad(this.media);\n\t\t\t\tthis.onMediaLoad(ev);\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.add('videoiframe');\n\t\t}\n\t\telse if (apijs.startPlayer(this.media, url)) {\n\t\t\tthis.add('videoplayer');\n\t\t}\n\t\telse {\n\t\t\tthis.c = document.createElement('source');\n\t\t\tthis.c.setAttribute('src', url);\n\t\t\tthis.c.onerror = this.onMediaLoad;\n\t\t\tthis.media.appendChild(this.c);\n\t\t\tthis.media.ondurationchange = this.onMediaLoad;\n\t\t\tthis.media.onerror = this.onMediaLoad;\n\t\t\tthis.add('videosource');\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlHelp = function (isSlideshow, isVideo) {\n\n\t\tvar items, item, keys = [\n\t\t\tisSlideshow ? ['start', 149, 141] : [], // début/fin\n\t\t\tisSlideshow ? ['left', 'right', 142] : [],\n\t\t\tisVideo ? ['bottom', 'topk', 144] : [],\n\t\t\tisVideo ? ['minus', 'plus', 145] : [],\n\t\t\tisVideo ? ['M', 146] : [],\n\t\t\tisVideo ? ['P', 143] : [],\n\t\t\t['F11', 147],\n\t\t\t[150, 148] // échap\n\t\t];\n\n\t\tthis.a = document.createElement('ul');\n\t\tthis.a.setAttribute('class', 'kbd nomobile nofullscreen');\n\n\t\twhile (items = keys.shift()) {\n\n\t\t\tif (items.length > 0) {\n\n\t\t\t\tthis.b = document.createElement('li');\n\n\t\t\t\twhile (item = items.shift()) {\n\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\tthis.c = document.createElement('kbd');\n\t\t\t\t\t\tif (['M', 'P', 'F11'].has(item))\n\t\t\t\t\t\t\tthis.c.appendChild(document.createTextNode(item));\n\t\t\t\t\t\telse if (typeof item == 'string')\n\t\t\t\t\t\t\tthis.c.setAttribute('class', item);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.b.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.a.appendChild(this.b);\n\t\t\t}\n\t\t}\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlIframe = function (url) {\n\n\t\tthis.a = document.createElement('iframe');\n\t\tthis.a.setAttribute('src', url);\n\t\tthis.a.setAttribute('class', 'loading');\n\t\tthis.a.setAttribute('onload', 'apijs.dialog.onIframeLoad(this);');\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n};","/**\n * Created J/13/05/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.slideshow = function () {\n\n\t\"use strict\";\n\tthis.current = null;\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return void|boolean)\n\n\tthis.init = function () {\n\n\t\tvar i, j, elem, ids = apijs.config.slideshow.ids, hoverload = false;\n\n\t\tfor (i = 0; elem = apijs.html(ids + '.' + i, true); i++) {\n\n\t\t\thoverload = elem.classList.contains('hoverload');\n\n\t\t\tfor (j = 0; elem = apijs.html(ids + '.' + i + '.' + j, true); j++) {\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t\t\tif (hoverload)\n\t\t\t\t\telem.addEventListener('mouseover', this.show);\n\t\t\t}\n\n\t\t\tif (elem = apijs.html(ids + '.' + i + '.99999', true))\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t}\n\n\t\tthis.onPopState();\n\t};\n\n\tthis.onPopState = function () {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href)) {\n\t\t\tvar id = RegExp.$1.replace(/-/g, '.');\n\t\t\tif (apijs.html(id, true) && !apijs.dialog.has('slideshow')) // Chrome 31 et Opera 19 passent 2 fois sans le !has\n\t\t\t\tapijs.slideshow.show(id, false);\n\t\t}\n\t\telse if (apijs.slideshow.current) {\n\t\t\tapijs.dialog.actionClose();\n\t\t}\n\t};\n\n\tthis.show = function (ev, push) { // todo\n\n\t\tvar source, show = false, media = {}, src, srcset, total, hash;\n\n\t\t// recherche de la source (élément a)\n\t\t// recherche des informations du média (1/4, id)\n\t\t// la source est soit une miniature (ev=click/mouseover/stringId) soit l'image principale (ev=click)\n\t\tif (typeof ev == 'string') {\n\t\t\tshow = true;\n\t\t\tsource = apijs.html(ev, true);\n\t\t\tmedia.id = ev;\n\t\t}\n\t\telse {\n\t\t\tev.preventDefault();\n\t\t\tsource = ev.target;\n\t\t\twhile (source.nodeName !== 'A')\n\t\t\t\tsource = source.parentNode;\n\n\t\t\t// stop sur miniature déjà à jour en mode gallery\n\t\t\tif ((ev.type === 'mouseover') && source.classList.contains('current'))\n\t\t\t\treturn false;\n\n\t\t\tmedia.id = source.getAttribute('id');\n\t\t}\n\n\t\t// recherche des informations du média (2/4, prefix|number|gallery)\n\t\tmedia.prefix = apijs.config.slideshow.ids + '.' + media.id.split('.')[1];\n\t\tmedia.number = parseInt(media.id.split('.')[2], 10);\n\t\tmedia.gallery = apijs.html(media.prefix + '.99999', true);\n\n\t\t// SI SOURCE N'EST PAS L'IMAGE PRINCIPALE DU MODE GALLERY\n\t\t// marque la source avec la class current\n\t\t// prend soin de supprimer les anciennes class current\n\t\t// v5.1 soit sur le lien (avant sur l'image elle même), soit sur le dl\n\t\tif (media.number !== 99999) {\n\n\t\t\tvar links = apijs.html(media.prefix, true).querySelectorAll('a[id][type]'),\n\t\t\t conts = apijs.html(media.prefix, true).querySelectorAll('dl');\n\n\t\t\tif (media.gallery || (links.length !== conts.length)) {\n\t\t\t\tlinks.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.setAttribute('class', 'current');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconts.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.parentNode.parentNode.setAttribute('class', 'current');\n\t\t\t}\n\t\t}\n\n\t\t// UNIQUEMENT EN MODE GALLERY\n\t\t// recherche des informations du média (3/4, [number]|config)\n\t\t// réaffecte la source sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// réaffecte le numéro du média sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// supprime l'adresse de l'image principale de la configuration du média (media.config = url|name|date|legend)\n\t\t// met à jour l'image principale SAUF SI SOURCE = IMAGE PRINCIPALE (puisque tout est déjà correct)\n\t\tif (media.gallery) {\n\n\t\t\tif (media.number === 99999) {\n\t\t\t\tshow = true;\n\t\t\t\tsource = (media.gallery.hasAttribute('class')) ? media.gallery.getAttribute('class') : media.prefix + '.0';\n\t\t\t\tsource = apijs.html(source, true);\n\t\t\t\tmedia.number = parseInt(source.getAttribute('id').split('.')[2], 10);\n\t\t\t\tmedia.id = media.id.replace(99999, media.number);\n\t\t\t}\n\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\n\t\t\tsrc = media.config.shift();\n\t\t\tif (src.indexOf(';') > 0) {\n\t\t\t\tsrc = src.split(';');\n\t\t\t\tsrcset = src[1].trim();\n\t\t\t\tsrc = src[0].trim();\n\t\t\t}\n\n\t\t\tmedia.gallery.setAttribute('href', source.getAttribute('href'));\n\t\t\tmedia.gallery.querySelector('img').setAttribute('src', src);\n\t\t\tmedia.gallery.querySelector('img').setAttribute('srcset', srcset ? srcset : '');\n\t\t\tmedia.gallery.querySelector('img').setAttribute('alt', source.querySelector('img').getAttribute('alt'));\n\t\t\tmedia.gallery.setAttribute('class', media.id);\n\t\t}\n\t\t// UNIQUEMENT EN MODE ALBUM\n\t\t// recherche des informations du média (3/4, config)\n\t\telse {\n\t\t\tshow = true;\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\t\t}\n\n\t\t// recherche des informations du média (4/4, url|type|styles)\n\t\t// défini le type de dialogue à partir du mimetype du lien de la source si cela est possible\n\t\tmedia.url = source.getAttribute('href');\n\t\tmedia.type = source.getAttribute('type').substr(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo');\n\t\tmedia.type = (media.type.indexOf('dialog') === 0) ? media.type : 'dialogPhoto';\n\t\tmedia.styles = apijs.html(media.prefix, true).getAttribute('class').replace(/gallery|album/g, '').trim();\n\n\t\t// demande l'affichage du dialogue\n\t\t// lors d'un clic sur l'image principale du mode gallery\n\t\t// ou lors d'un clic sur les miniatures en mode album\n\t\t// ou lors d'un appel direct\n\t\tif (show) {\n\n\t\t\tapijs.dialog[media.type](media.url, media.config[0], media.config[1], media.config[2], media.styles);\n\n\t\t\ttotal = apijs.html(media.prefix, true).querySelectorAll('a[id][type]').length - (media.gallery ? 2 : 1);\n\t\t\tapijs.slideshow.current = {\n\t\t\t\tnumber: media.number,\n\t\t\t\tfirst: media.prefix + '.0',\n\t\t\t\tprev: (media.number > 0) ? media.prefix + '.' + (media.number - 1) : null,\n\t\t\t\tnext: (media.number < total) ? media.prefix + '.' + (media.number + 1) : null,\n\t\t\t\tlast: media.prefix + '.' + total,\n\t\t\t\ttotal: total\n\t\t\t};\n\n\t\t\t// boutons précédent et suivant\n\t\t\tif (apijs.slideshow.current.prev)\n\t\t\t\tapijs.html('#Prev').removeAttribute('disabled');\n\t\t\tif (apijs.slideshow.current.next)\n\t\t\t\tapijs.html('#Next').removeAttribute('disabled');\n\n\t\t\t// gestion de l'historique\n\t\t\t// met à jour l'ancre uniquement si l'utilisateur ne joue pas avec son historique\n\t\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function') && ((typeof push == 'boolean') ? push : true)) {\n\t\t\t\thash = self.location.href;\n\t\t\t\thash = (hash.indexOf('#') > 0) ? hash.slice(0, hash.indexOf('#')) : hash;\n\t\t\t\thash += '#' + (media.prefix + '.' + ((media.number === 99999) ? 0 : media.number)).replace(/\\./g,'-');\n\t\t\t\thistory.pushState({}, '', hash);\n\t\t\t}\n\t\t}\n\n\t\treturn show;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (public return boolean)\n\n\tthis.actionFirst = function () {\n\n\t\tif (this.current && (this.current.number > 0) && (this.current.number <= this.current.total))\n\t\t\treturn this.show(this.current.first);\n\n\t\treturn false;\n\t};\n\n\tthis.actionPrev = function () {\n\n\t\tif (this.current && this.current.prev && (this.current.number > 0))\n\t\t\treturn this.show(this.current.prev);\n\n\t\treturn false;\n\t};\n\n\tthis.actionNext = function () {\n\n\t\tif (this.current && this.current.next && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.next);\n\n\t\treturn false;\n\t};\n\n\tthis.actionLast = function () {\n\n\t\tif (this.current && (this.current.number >= 0) && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.last);\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/13/04/2009\n * Updated D/03/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.upload = function () {\n\n\t\"use strict\";\n\tthis.title = null;\n\tthis.action = null;\n\tthis.input = null;\n\tthis.onemax = 0; // taille d'un seul fichier\n\tthis.allmax = 0; // taille de tous les fichiers\n\tthis.exts = null;\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.icon = null;\n\n\tthis.files = [];\n\tthis.start = 0; // time\n\tthis.end = 0; // time\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return boolean)\n\n\tthis.sendFile = function (title, action, input, onemax, exts, callback, args, icon) {\n\n\t\tvar res = this.sendFiles(title, action, input, onemax, 0, exts, callback, args, icon);\n\t\tif (!res) console.error('apijs.upload.sendFile invalid arguments', arguments);\n\n\t\treturn res;\n\t};\n\n\tthis.sendFiles = function (title, action, input, onemax, allmax, exts, callback, args, icon) {\n\n\t\tthis.files = [];\n\t\tif (title !== true) {\n\t\t\tthis.title = title;\n\t\t\tthis.action = action;\n\t\t\tthis.input = input;\n\t\t\tthis.onemax = onemax;\n\t\t\tthis.allmax = allmax;\n\t\t\tthis.exts = (typeof exts == 'string') ? exts.split(',') : ['*'];\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tif ((typeof this.title == 'string') && (typeof this.action == 'string') && (typeof this.input == 'string') &&\n\t\t (typeof this.onemax == 'number') && (typeof this.allmax == 'number') && (typeof this.callback == 'function')) {\n\n\t\t\tvar text, multiple = this.allmax > 0;\n\n\t\t\tif (this.exts.join() === '*')\n\t\t\t\ttext = apijs.i18n.translate(161);\n\t\t\telse if (this.exts.length === 1)\n\t\t\t\ttext = apijs.i18n.translate(162, this.exts.join());\n\t\t\telse\n\t\t\t\ttext = apijs.i18n.translate(163, this.exts.slice(0, -1).join(', '), this.exts.slice(-1));\n\n\t\t\ttext += '[br]' + apijs.i18n.translate(\n\t\t\t\tmultiple ? 165 : 164, // clef de traduction\n\t\t\t\tapijs.formatNumber(this.onemax), // taille d'un fichier\n\t\t\t\tmultiple ? apijs.formatNumber(this.allmax) : '' // taille de tous les fichiers\n\t\t\t).replace('|', '[br]');\n\n\t\t\treturn apijs.dialog.dialogFormUpload(this.title, text, this.action, this.input, multiple, this.icon);\n\t\t}\n\n\t\tif ((typeof this.allmax != 'number') || (this.allmax > 0))\n\t\t\tconsole.error('apijs.upload.sendFiles invalid arguments', arguments);\n\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionChoose = function (elem) {\n\n\t\tvar html = [], size = 0, text;\n\t\tthis.files = [];\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\tArray.prototype.forEach.call(elem.files, function (file) {\n\n\t\t\t\ttext = file.name + ' <span class=\"sz\">' + apijs.i18n.translate(166, apijs.formatNumber(file.size / 1048576)) + '</span>';\n\n\t\t\t\tif ((this.exts.join() !== '*') && !this.exts.has(file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase()))\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(167) + '</span>';\n\t\t\t\telse if (file.size > (this.onemax * 1048576))\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(168) + '</span>';\n\t\t\t\telse if (file.size <= 0)\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(169) + '</span>';\n\t\t\t\telse\n\t\t\t\t\tthis.files.push(file);\n\n\t\t\t\thtml.push('<div>' + text + '</div>');\n\t\t\t\tsize += file.size / 1048576;\n\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// multiple\n\t\t\tif ((this.allmax > 0) && (size >= this.allmax)) {\n\t\t\t\thtml.push('<div class=\"tt\"> = <span class=\"sz\">' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '</span> <span class=\"ee\">' + apijs.i18n.translate(168) + '</span></div>');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tif (this.files.length === elem.files.length) {\n\t\t\t\tapijs.html('button.confirm').removeAttribute('disabled');\n\t\t\t\tapijs.html('button.confirm').focus();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapijs.html('button.confirm').setAttribute('disabled', 'disabled');\n\t\t\t}\n\n\t\t\tapijs.html('div.filenames').innerHTML = html.join(' ');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (this.files.length > 0) {\n\n\t\t\tvar form = new FormData(), xhr = new XMLHttpRequest(), tmp;\n\t\t\txhr.open('POST', this.action + ((this.action.indexOf('?') > 0) ? '&isAjax=true' : '?isAjax=true'), true);\n\n\t\t\t// token\n\t\t\tif (typeof apijs.config.upload.tokenValue == 'string') {\n\t\t\t\txhr.setRequestHeader(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t\tform.append(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t}\n\n\t\t\t// champs supplémentaires\n\t\t\ttmp = apijs.serialize(apijs.dialog.t2);\n\t\t\tif (tmp.length > 3) {\n\t\t\t\ttmp.split('&').forEach(function (data) {\n\t\t\t\t\tdata = data.split('=');\n\t\t\t\t\tform.append(data[0], data[1]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// fichier(s)\n\t\t\tthis.files.forEach(function (file, idx, files) {\n\t\t\t\tform.append(((files.length > 1) && (this.input.indexOf('[') < 0)) ? this.input + '_' + idx : this.input, file);\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=637002\n\t\t\t// https://stackoverflow.com/a/15491086\n\t\t\t// loadstart - When the request starts\n\t\t\t// progress - While sending and loading data\n\t\t\t// load - When the request has successfully completed even if the server hasn't responded that it finished\n\t\t\t// loadend - When the request has completed even if the server hasn't responded that it finished processing the request\n\t\t\t// error - When the request has failed\n\t\t\t// abort - When the request has been aborted (by invoking the abort method)\n\t\t\t// timeout - When the author specified timeout has passed before the request could complete\n\t\t\txhr.onreadystatechange = function (text) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttext = xhr.responseText.trim();\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijs.upload.send', xhr: xhr } }));\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:200 message:' + text);\n\t\t\t\t\t\tif (text.indexOf('success-') === 0) {\n\t\t\t\t\t\t\tthis.updateTitle();\n\t\t\t\t\t\t\tthis.callback(text.slice(8), this.args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.onError(195, text);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:' + xhr.status + ' message: ' + text);\n\t\t\t\t\t\tthis.onError(194, xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\n\t\t\txhr.upload.onloadstart = this.onStart.bind(this);\n\t\t\txhr.upload.onprogress = this.onProgress.bind(this);\n\t\t\txhr.upload.onload = this.onProgress.bind(this);\n\t\t\txhr.upload.onerror = this.onError.bind(this);\n\t\t\txhr.send(form);\n\t\t}\n\t\telse {\n\t\t\tapijs.html('button.browse').focus();\n\t\t}\n\n\t\treturn false; // très important\n\t};\n\n\tthis.onStart = function () {\n\n\t\tthis.start = this.end = Math.round(new Date().getTime() / 1000);\n\t\tapijs.dialog.dialogProgress(this.title, apijs.i18n.translate(125), this.icon);\n\t};\n\n\tthis.onError = function (key, txt) {\n\n\t\tthis.updateTitle();\n\n\t\tif (typeof key == 'number')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(key) + '[/p] ' + txt;\n\t\telse if (typeof txt != 'string')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(193) + '[/p]';\n\n\t\ttxt += '[p]' + apijs.i18n.translate(196, 'href=\"apijs://restart\" onclick=\"apijs.upload.sendFile(true); return false;\"') + '[/p]';\n\t\tapijs.dialog.dialogInformation(this.title, txt, (typeof this.icon == 'string') ? 'upload error ' + this.icon : 'upload error');\n\t};\n\n\tthis.onProgress = function (ev) {\n\n\t\tvar percent, key, rate, time, elapsedTime, totalTime, currentTime = Math.round(new Date().getTime() / 1000), mins;\n\n\t\t// Cherche à actualiser la barre de progression toutes les 2 secondes (uniquement de 1 à 99%)\n\t\t// affiche le pourcentage, la vitesse à partir de 25 secondes, le temps restant à partir de 40 secondes ET 90 secondes de temps total\n\t\tif (ev.lengthComputable && (ev.type === 'progress') && (currentTime >= (this.end + 2))) {\n\n\t\t\tthis.end = currentTime;\n\n\t\t\t// Math.floor = entier inférieur, Math.ceil = entier supérieur, Math.round = au mieux\n\t\t\t// ev.loaded = nombre d'octet envoyé sur le serveur\n\t\t\t// ev.total = nombre d'octet à envoyer sur le serveur\n\t\t\t// pourcentage = nombre d'octet envoyé * 100 / nombre d'octet à envoyer\n\t\t\tpercent = Math.floor((ev.loaded * 100) / ev.total);\n\n\t\t\tif ((percent > 0) && (percent < 100)) {\n\n\t\t\t\tthis.updateTitle(percent);\n\n\t\t\t\t// temps écoulé = maintenant - départ\n\t\t\t\t// temps total = temps écoulé * 100 / pourcentage + 10 secondes\n\t\t\t\telapsedTime = currentTime - this.start;\n\t\t\t\ttotalTime = elapsedTime * 100 / percent + 10;\n\n\t\t\t\tif (elapsedTime > 24) {\n\n\t\t\t\t\t// temps restant = temps total - temps écoulé\n\t\t\t\t\ttime = Math.round(totalTime - elapsedTime);\n\t\t\t\t\ttime = Math.ceil(time / 10) * 10;\n\t\t\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t\t\t// vitesse = taille téléchargé / temps écoulé / 1024\n\t\t\t\t\trate = Math.round(ev.loaded / elapsedTime / 1024);\n\n\t\t\t\t\tif ((elapsedTime < 40) || (totalTime < 90)) { key = 184; time = null; } // \"§% - § ko/s\"\n\t\t\t\t\telse if (mins > 1) { key = 181; time = mins; } // \"§% - § ko/s - § minutes restantes\"\n\t\t\t\t\telse if (time > 50) { key = 182; time = 1; } // \"§% - § ko/s - § minute restante\"\n\t\t\t\t\telse { key = 183; } // \"§% - § ko/s - § secondes restantes\"\n\t\t\t\t}\n\n\t\t\t\tthis.updateProgress(percent, key, rate, time);\n\t\t\t}\n\t\t}\n\t\t// Cherche à actualiser la barre de progression lorsque l'envoi du fichier est terminé (donc à 100%)\n\t\t// affiche le pourcentage, le temps total à partir de 20 secondes, la vitesse si possible\n\t\telse if (ev.type === 'load') {\n\n\t\t\t// temps total = temps actuel - temps du départ\n\t\t\ttime = Math.round(new Date().getTime() / 1000) - this.start;\n\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t// vitesse = taille total / temps total / 1024\n\t\t\trate = Math.round(ev.loaded / time / 1024);\n\n\t\t\tif ((rate > 0) && (rate !== Infinity)) {\n\t\t\t\tif (mins > 1) { key = 185; time = mins; } // \"§% - à § ko/s en § minutes\"\n\t\t\t\telse if (time > 50) { key = 186; time = 1; } // \"§% - à § ko/s en § minute\"\n\t\t\t\telse if (time > 20) { key = 187; } // \"§% - à § ko/s en § secondes\"\n\t\t\t\telse { key = 188; time = null; } // \"§% - à § ko/s\"\n\t\t\t}\n\t\t\telse {\n\t\t\t\trate = null; time = null; // 100%\n\t\t\t}\n\n\t\t\tthis.updateTitle(100);\n\t\t\tthis.updateProgress(100, key, rate, time);\n\t\t}\n\t};\n\n\tthis.updateProgress = function (percent, key, rate, time) {\n\n\t\tvar rect = apijs.html('rect'), text = apijs.html('span.info'), data;\n\n\t\tif (percent > 99) {\n\t\t\tdata = '100%';\n\t\t\trect.setAttribute('class', 'end');\n\t\t\trect.style.width = '';\n\t\t\tapijs.html('p').textContent = apijs.i18n.translate(126);\n\t\t}\n\t\telse {\n\t\t\trect.style.width = data = percent + '%';\n\t\t\tif (rect.hasAttribute('class'))\n\t\t\t\trect.removeAttribute('class');\n\t\t}\n\n\t\tif ((typeof key == 'number') && (typeof rate == 'number') && (typeof time == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false), time);\n\t\telse if ((typeof key == 'number') && (typeof rate == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false));\n\n\t\ttext.textContent = data;\n\t};\n\n\tthis.updateTitle = function (percent) {\n\n\t\tif (typeof percent == 'number') {\n\t\t\tdocument.title = (/^\\d{1,3}% - /.test(document.title)) ?\n\t\t\t\tpercent + '% - ' + document.title.slice(document.title.indexOf(' - ') + 3) : percent + '% - ' + document.title;\n\t\t}\n\t\telse if (/^\\d{1,3}% - /.test(document.title)) {\n\t\t\tdocument.title = document.title.slice(document.title.indexOf(' - ') + 3);\n\t\t}\n\t};\n};"],"names":["Array","prototype","has","needle","key","hasOwnProperty","this","window","NodeList","forEach","callback","that","i","length","call","apijs","core","version","config","lang","debug","dialog","closeOnClick","restrictNavigation","player","slideshow","ids","anchor","upload","tokenName","tokenValue","start","elem","console","info","toString","split","join","document","getElementById","Error","querySelector","getAttribute","indexOf","error","i18n","self","dispatchEvent","CustomEvent","init","querySelectorAll","startPlayer","addEventListener","onPopState","Object","keys","data","formatNumber","nb","dec","str","dgt","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","e","toFixed","replace","url","videoPlayer","toArray","slice","openTab","ev","preventDefault","href","open","log","txt","html","selector","id","t1","requestFullscreen","webkitFullscreenElement","webkitCancelFullScreen","mozFullScreenElement","mozCancelFullScreen","fullscreenElement","cancelFullScreen","webkitRequestFullscreen","mozRequestFullScreen","serialize","form","filter","elements","name","disabled","type","n","options","selected","push","encodeURIComponent","value","checked","bind","cs","103","104","105","106","107","132","133","134","142","144","146","149","150","de","108","109","124","143","145","147","148","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","en","102","125","126","131","135","141","165","166","184","es","fr","it","ja","nl","pl","pt","ptbr","ru","sk","tr","uk","zh","toLowerCase","translate","word","idx","translation","arguments","translateNode","createTextNode","apply","changeLang","select","c","root","target","t","createDocumentFragment","a","createElement","b","appendChild","textContent","attributes","attribute","setAttribute","firstChild","innerHTML","parentNode","replaceChild","video","stalled","subload","autoRun","removeAttribute","classList","add","onloadedmetadata","onTimeupdate","onProgress","onVideotrack","onAudiotrack","onstalled","onWaiting","onplaying","onPlay","onpause","onended","onprogress","ontimeupdate","onseeking","onseeked","onwaiting","onloadstart","oncanplay","onclick","actionPlay","onvolumechange","actionVolume","ondurationchange","onMediaLoad","onerror","htmlSvgPlayer","htmlSource","xhr","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","tracks","videoTracks","auto","language","selectedIndex","Math","max","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","removeChild","end","networkState","paused","remove","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","enabled","blur","actionTexttrack","mode","actionVideo","src","d","onchange","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","dialogInformation","title","icon","htmlParent","htmlContent","htmlBtnOk","show","dialogConfirmation","htmlBtnConfirm","dialogFormOptions","action","dialogFormUpload","input","multiple","htmlUpload","dialogProgress","htmlSvgProgress","dialogWaiting","htmlSvgLoader","dialogPhoto","date","legend","htmlMedia","htmlHelp","htmlBtnClose","htmlBtnNavigation","dialogVideo","dialogIframe","close","htmlIframe","dialogAjax","update","splice","toggle","search","actionClose","history","pushState","RegExp","test","location","clear","onCloseBrowser","stopPropagation","m","returnValue","onResizeBrowser","clientWidth","onScrollBrowser","brk","nodeName","Date","getTime","wheelDelta","contains","scrollTop","scrollHeight","offsetHeight","onScrollIframe","defaultView","innerHeight","pageYOffset","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","res","onIframeLoad","contentWindow","parent","passive","elems","currentSrc","visibility","hasAttribute","imageLoader","actionConfirm","setTimeout","isLocked","matchMedia","matches","concat","focus","minHeight","old","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","isAll","removeEventListener","parseFloat","getComputedStyle","submit","click","isMultiple","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","items","item","current","j","hoverload","$1","source","conts","prefix","number","parseInt","gallery","links","srcset","substr","styles","first","prev","next","last","hash","onemax","allmax","exts","files","sendFile","sendFiles","actionChoose","size","file","tmp","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","elapsedTime","mins","lengthComputable","loaded","totalTime","ceil","updateProgress","rect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../javascripts/main.js","../javascripts/i18n.js","../javascripts/dialog.js","../javascripts/player.js","../javascripts/slideshow.js","../javascripts/upload.js"],"sourcesContent":["/**\n * Created J/03/12/2009\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nif (!Array.prototype.has) {\n\tArray.prototype.has = function (needle, key) {\n\t\tif (needle instanceof Array) {\n\t\t\tfor (key in needle) if (needle.hasOwnProperty(key)) {\n\t\t\t\tif (this.has(needle[key]))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor (key in this) if (this.hasOwnProperty(key)) {\n\t\t\t\tif (this[key] === needle)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n}\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n\tNodeList.prototype.forEach = function (callback, that, i) {\n\t\tthat = that || window;\n\t\tfor (i = 0; i < this.length; i++)\n\t\t\tcallback.call(that, this[i], i, this);\n\t};\n}\n\nvar apijs = new (function () {\n\n\t\"use strict\";\n\tthis.core = {};\n\tthis.version = 670;\n\n\tthis.config = {\n\t\tlang: 'auto',\n\t\tdebug: false,\n\t\t//select: { },\n\t\tdialog: {\n\t\t\tcloseOnClick: false,\n\t\t\trestrictNavigation: true,\n\t\t\tplayer: true\n\t\t},\n\t\tslideshow: {\n\t\t\tids: 'slideshow',\n\t\t\tanchor: true\n\t\t},\n\t\tupload: {\n\t\t\ttokenName: 'X-CSRF-Token',\n\t\t\ttokenValue: null\n\t\t}\n\t};\n\n\tthis.start = function () {\n\n\t\tvar elem;\n\n\t\t// bonjour\n\t\tconsole.info('APIJS ' + this.version.toString().split('').join('.') + ' - hello - 1 MB/Mo = 1024 kB/ko');\n\t\tif (document.getElementById('oldBrowser'))\n\t\t\tthrow new Error('APIJS canceled, #oldBrowser detected!');\n\n\t\tif (elem = document.querySelector('link[href*=\"apijs/fontello.woff2\"]')) {\n\t\t\tif (elem.getAttribute('href').indexOf('?a3ab5acff3') < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3');\n\t\t}\n\t\tif (elem = document.querySelector('script[src*=\"apijs.min.js?v=\"]')) {\n\t\t\tif (elem.getAttribute('src').indexOf('?v=' + this.version) < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v=' + this.version);\n\t\t}\n\n\t\t// instancie\n\t\tthis.i18n = new this.core.i18n();\n\t\t//this.select = new this.core.select();\n\t\tthis.dialog = new this.core.dialog();\n\t\tthis.upload = new this.core.upload();\n\t\tthis.slideshow = new this.core.slideshow();\n\t\tself.dispatchEvent(new CustomEvent('apijsbeforeload'));\n\n\t\t// démarre\n\t\tthis.i18n.init();\n\t\tthis.slideshow.init();\n\t\t//this.select.init();\n\t\tdocument.querySelectorAll('video.apijsplayer[data-src]').forEach(function (elem) {\n\t\t\tapijs.startPlayer(elem, elem.getAttribute('data-src'));\n\t\t});\n\n\t\tself.addEventListener('popstate', this.slideshow.onPopState);\n\t\tself.addEventListener('hashchange', this.slideshow.onPopState);\n\n\t\tif (this.config.debug) {\n\t\t\tconsole.info('APIJS available languages: ' + Object.keys(this.i18n.data).join(' '));\n\t\t\tconsole.info('APIJS language loaded: ' + this.config.lang);\n\t\t\tconsole.info('APIJS successfully started');\n\t\t}\n\n\t\t// événement\n\t\tself.dispatchEvent(new CustomEvent('apijsload'));\n\t};\n\n\tthis.formatNumber = function (nb, dec) {\n\n\t\t// par défaut 2 chiffres\n\t\tvar dgt = (typeof dec == 'number') ? dec : ((dec === false) ? 0 : 2), str;\n\n\t\t// Firefox 29+ pas 27+, (iOS) Safari 10+ pas 9+\n\t\ttry {\n\t\t\tstr = new Intl.NumberFormat(this.config.lang, { minimumFractionDigits: dgt, maximumFractionDigits: dgt }).format(nb);\n\t\t}\n\t\tcatch (ignore) {\n\t\t\tstr = nb.toFixed(dgt);\n\t\t}\n\n\t\t// conserve 00 si on veut vraiment 2 chiffres\n\t\treturn (typeof dec == 'number') ? str : str.replace(/[.,]00$/, '');\n\t};\n\n\tthis.startPlayer = function (elem, url) {\n\n\t\tif (this.config.dialog.player === true) {\n\t\t\telem.videoPlayer = new this.core.player(elem, url);\n\t\t\telem.parentNode.classList.add('apijsvideoplayer');\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof this.config.dialog.player == 'function') {\n\t\t\tthis.config.dialog.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tthis.toArray = function (data) {\n\t\treturn Array.prototype.slice.call(data, 0);\n\t};\n\n\tthis.openTab = function (ev) {\n\t\tev.preventDefault();\n\t\tif (this.href.length > 0)\n\t\t\tself.open(this.href);\n\t};\n\n\tthis.log = function (txt) {\n\t\tif (this.config.debug)\n\t\t\tconsole.info('APIJS ' + txt);\n\t};\n\n\tthis.html = function (selector, id) {\n\t\tif ((id === true) || (selector.indexOf('#') === 0))\n\t\t\treturn document.getElementById(selector.replace('#', 'apijs'));\n\t\telse if (this.dialog.t1)\n\t\t\treturn this.dialog.t1.querySelector(selector);\n\t\telse\n\t\t\treturn null;\n\t};\n\n\tthis.requestFullscreen = function (elem) {\n\t\tif (document.webkitFullscreenElement)\n\t\t\tdocument.webkitCancelFullScreen();\n\t\telse if (document.mozFullScreenElement)\n\t\t\tdocument.mozCancelFullScreen();\n\t\telse if (document.fullscreenElement)\n\t\t\tdocument.cancelFullScreen();\n\t\telse if (elem.webkitRequestFullscreen)\n\t\t\telem.webkitRequestFullscreen();\n\t\telse if (elem.requestFullscreen)\n\t\t\telem.requestFullscreen();\n\t\telse if (elem.mozRequestFullScreen)\n\t\t\telem.mozRequestFullScreen();\n\t};\n\n\tthis.serialize = function (form, filter) {\n\n\t\tvar data = [];\n\t\tfilter = (typeof filter == 'string') ? filter : '';\n\n\t\t// https://gomakethings.com/how-to-serialize-form-data-with-vanilla-js/\n\t\tArray.prototype.forEach.call(form.elements, function (elem, idx) {\n\n\t\t\tif (!elem.name || elem.disabled || ['file', 'reset', 'submit', 'button'].has(elem.type) || (elem.name.indexOf(filter) !== 0))\n\t\t\t\treturn;\n\n\t\t\tif (elem.type === 'select-multiple') {\n\t\t\t\tfor (idx = 0; idx < elem.options.length; idx++) {\n\t\t\t\t\tif (elem.options[idx].selected)\n\t\t\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.options[idx].value));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!['checkbox', 'radio'].has(elem.type) || elem.checked) {\n\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.value));\n\t\t\t}\n\t\t});\n\n\t\treturn data.join('&');\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('load', apijs.start.bind(apijs));","/**\n * Created S/05/06/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.i18n = function () {\n\n\t\"use strict\";\n\tthis.data = {\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\tcs: {\n\t\t\t103: \"Zrušit\",\n\t\t\t104: \"Potvrzení\",\n\t\t\t105: \"Zavřít\",\n\t\t\t106: \"Předchozí\",\n\t\t\t107: \"Následující\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t146: \"ztlumit\",\n\t\t\t149: \"Konec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tde: {\n\t\t\t103: \"Abbrechen\",\n\t\t\t104: \"Bestätigen\",\n\t\t\t105: \"Schließen\",\n\t\t\t106: \"Vorheriges\",\n\t\t\t107: \"Nächstes\",\n\t\t\t108: \"Datei wählen\",\n\t\t\t109: \"Dateien wählen\",\n\t\t\t124: \"Verarbeitung läuft...\",\n\t\t\t132: \"videospur\",\n\t\t\t133: \"audiospur\",\n\t\t\t134: \"untertitel\",\n\t\t\t142: \"vorheriges/nächstes\",\n\t\t\t143: \"wiedergabe/pause\",\n\t\t\t144: \"rückwärts/vorwärts\",\n\t\t\t145: \"leiser/lauter\",\n\t\t\t146: \"ton aus\",\n\t\t\t147: \"vollbild\",\n\t\t\t148: \"beenden\",\n\t\t\t149: \"Ende\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Alle Dateien wurden akzeptiert.\",\n\t\t\t162: \"Akzeptiertes Dateiformat: §.\",\n\t\t\t163: \"Akzeptiertes Dateiformate: § und §.\",\n\t\t\t164: \"Maximale Größe: § MB.\",\n\t\t\t167: \"Unerlaubtes Format\",\n\t\t\t168: \"Format zu gross\",\n\t\t\t169: \"Leere Datei\",\n\t\t\t181: \"§% - § kB/s - Noch § Minuten\",\n\t\t\t182: \"§% - § kB/s - Noch § Minute\",\n\t\t\t183: \"§% - § kB/s - Noch § Sekunden\",\n\t\t\t185: \"§% - bis § kB/s in § Minuten\",\n\t\t\t186: \"§% - bis § kB/s in § Minute\",\n\t\t\t187: \"§% - bis § kB/s in § Sekunden\",\n\t\t\t188: \"§% - bis § kB/s\",\n\t\t\t191: \"Abbrechen\",\n\t\t\t192: \"Sind Sie sicher? [span]Ja[/span] - Nein\",\n\t\t\t193: \"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.\",\n\t\t\t194: \"Es ist ein Fehler beim Senden.\",\n\t\t\t195: \"Es ist ein Fehler bei der Verarbeitung.\",\n\t\t\t196: \"Wir laden Sie ein es erneut zu [a §]versuchen[/a].\"\n\t\t},\n\t\ten: {\n\t\t\t102: \"Ok\",\n\t\t\t103: \"Cancel\",\n\t\t\t104: \"Confirm\",\n\t\t\t105: \"Close\",\n\t\t\t106: \"Previous\",\n\t\t\t107: \"Next\",\n\t\t\t108: \"Choose a file\",\n\t\t\t109: \"Choose one or multiple files\",\n\t\t\t124: \"Operation in progress...\",\n\t\t\t125: \"Upload in progress...\",\n\t\t\t126: \"Processing file in progress...\",\n\t\t\t127: \"Drag and drop your files here\",\n\t\t\t131: \"video\",\n\t\t\t132: \"video track\",\n\t\t\t133: \"audio track\",\n\t\t\t134: \"subtitles\",\n\t\t\t135: \"off\",\n\t\t\t141: \"first/last\",\n\t\t\t142: \"previous/next\",\n\t\t\t143: \"play/pause\",\n\t\t\t144: \"backward/forward\",\n\t\t\t145: \"decrease/increase the volume\",\n\t\t\t146: \"mute\",\n\t\t\t147: \"full screen\",\n\t\t\t148: \"quit\",\n\t\t\t149: \"End\",\n\t\t\t150: \"Escape\",\n\t\t\t161: \"All files are accepted.\",\n\t\t\t162: \"Accepted file format: §.\",\n\t\t\t163: \"Accepted file formats: § and §.\",\n\t\t\t164: \"Maximum size: § MB.\",\n\t\t\t165: \"Maximum size by file: § MB.|Total maximum size: § MB.\",\n\t\t\t166: \"§ MB\",\n\t\t\t167: \"Format not allowed\",\n\t\t\t168: \"Size too large\",\n\t\t\t169: \"File empty\",\n\t\t\t181: \"§% - § kB/s - § minutes left\",\n\t\t\t182: \"§% - § kB/s - § minute left\",\n\t\t\t183: \"§% - § kB/s - § seconds left\",\n\t\t\t184: \"§% - § kB/s\",\n\t\t\t185: \"§% - at § kB/s in § minutes\",\n\t\t\t186: \"§% - at § kB/s in § minute\",\n\t\t\t187: \"§% - at § kB/s in § seconds\",\n\t\t\t188: \"§% - at § kB/s\",\n\t\t\t191: \"Interrupt\",\n\t\t\t192: \"Are you sure? [span]Yes[/span] - No\",\n\t\t\t193: \"It seems that an unlikely mistake just happened... Please try again.\",\n\t\t\t194: \"An error occurred while sending.\",\n\t\t\t195: \"An error occurred while processing.\",\n\t\t\t196: \"We invite you to [a §]try again[/a].\"\n\t\t},\n\t\tes: {\n\t\t\t102: \"Aceptar\",\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Cerrar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Siguiente\",\n\t\t\t108: \"Elegir un fichero\",\n\t\t\t109: \"Elegir uno o varios ficheros\",\n\t\t\t124: \"Operación en curso...\",\n\t\t\t125: \"Envío en progreso...\",\n\t\t\t126: \"Tratamiento en curso...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"pista de vídeo\",\n\t\t\t133: \"pista de audio\",\n\t\t\t134: \"subtítulos\",\n\t\t\t142: \"anterior/siguiente\",\n\t\t\t143: \"reproducir/pausa\",\n\t\t\t144: \"retroceder/avanzar\",\n\t\t\t145: \"bajar/subir volumen\",\n\t\t\t146: \"silenciar\",\n\t\t\t147: \"pantalla completa\",\n\t\t\t148: \"salir\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Se aceptan todos los archivos.\",\n\t\t\t162: \"Formato de archivo aceptado: §.\",\n\t\t\t163: \"Formatos de archivos aceptados: § y §.\",\n\t\t\t164: \"Tamaño máximo: § MB.\",\n\t\t\t165: \"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.\",\n\t\t\t167: \"Formato no autorizado\",\n\t\t\t168: \"Tamaño demasiado importante\",\n\t\t\t169: \"Fichero vacío\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - a § kB/s en § minutos\",\n\t\t\t186: \"§% - a § kB/s en § minuto\",\n\t\t\t187: \"§% - a § kB/s en § segundos\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrumpir\",\n\t\t\t192: \"¿Está seguro(a)? [span]Sí[/span] - No\",\n\t\t\t193: \"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.\",\n\t\t\t194: \"Se produjo un error durante el envío.\",\n\t\t\t195: \"Se produjo un error durante el procesamiento.\",\n\t\t\t196: \"Le invitamos a [a §]intentar de nuevo[/a].\"\n\t\t},\n\t\tfr: {\n\t\t\t103: \"Annuler\",\n\t\t\t104: \"Valider\",\n\t\t\t105: \"Fermer\",\n\t\t\t106: \"Précédent\",\n\t\t\t107: \"Suivant\",\n\t\t\t108: \"Choisir un fichier\",\n\t\t\t109: \"Choisir un ou plusieurs fichiers\",\n\t\t\t124: \"Opération en cours...\",\n\t\t\t125: \"Envoi en cours...\",\n\t\t\t126: \"Traitement en cours...\",\n\t\t\t127: \"Faites glisser et déposez vos fichiers ici\",\n\t\t\t131: \"vidéo\",\n\t\t\t132: \"piste vidéo\",\n\t\t\t133: \"piste audio\",\n\t\t\t134: \"sous-titres\",\n\t\t\t141: \"premier/dernier\",\n\t\t\t142: \"précédent/suivant\",\n\t\t\t143: \"lecture/pause\",\n\t\t\t144: \"reculer/avancer\",\n\t\t\t145: \"réduire/augmenter le volume\",\n\t\t\t146: \"couper le son\",\n\t\t\t147: \"plein écran\",\n\t\t\t148: \"quitter\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Échap\",\n\t\t\t161: \"Tous les fichiers sont acceptés.\",\n\t\t\t162: \"Format de fichier accepté : §.\",\n\t\t\t163: \"Formats de fichier acceptés : § et §.\",\n\t\t\t164: \"Taille maximale : § Mo.\",\n\t\t\t165: \"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.\",\n\t\t\t166: \"§ Mo\",\n\t\t\t167: \"Format non autorisé\",\n\t\t\t168: \"Taille trop importante\",\n\t\t\t169: \"Fichier vide\",\n\t\t\t181: \"§% - § ko/s - § minutes restantes\",\n\t\t\t182: \"§% - § ko/s - § minute restante\",\n\t\t\t183: \"§% - § ko/s - § secondes restantes\",\n\t\t\t184: \"§% - § ko/s\",\n\t\t\t185: \"§% - à § ko/s en § minutes\",\n\t\t\t186: \"§% - à § ko/s en § minute\",\n\t\t\t187: \"§% - à § ko/s en § secondes\",\n\t\t\t188: \"§% - à § ko/s\",\n\t\t\t191: \"Interrompre\",\n\t\t\t192: \"Êtes-vous sûr(e) ? [span]Oui[/span] - Non\",\n\t\t\t193: \"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.\",\n\t\t\t194: \"Une erreur est survenue lors de l'envoi.\",\n\t\t\t195: \"Une erreur est survenue lors du traitement.\",\n\t\t\t196: \"Nous vous invitons à [a §]réessayer[/a].\"\n\t\t},\n\t\tit: {\n\t\t\t103: \"Annulla\",\n\t\t\t104: \"Conferma\",\n\t\t\t105: \"Chiudi\",\n\t\t\t106: \"Precedente\",\n\t\t\t107: \"Successivo\",\n\t\t\t108: \"Scegli un file\",\n\t\t\t109: \"Scegli uno o più file\",\n\t\t\t124: \"Operazione in corso...\",\n\t\t\t125: \"Invio in corso...\",\n\t\t\t126: \"Trattamento in corso...\",\n\t\t\t132: \"traccia video\",\n\t\t\t133: \"traccia audio\",\n\t\t\t134: \"sottotitoli\",\n\t\t\t142: \"precedente/successivo\",\n\t\t\t143: \"riproduci/pausa\",\n\t\t\t144: \"indietro/avanti\",\n\t\t\t145: \"riduci/aumenta volume\",\n\t\t\t146: \"silenzio\",\n\t\t\t147: \"schermo intero\",\n\t\t\t148: \"esci\",\n\t\t\t149: \"Fine\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Tutti i file sono accettati.\",\n\t\t\t162: \"Formato del file accettato: §.\",\n\t\t\t163: \"Formati accettati: § et §.\",\n\t\t\t164: \"Dimensione massima: § MB.\",\n\t\t\t167: \"Formato non autorizzato\",\n\t\t\t168: \"Dimensione troppo importante\",\n\t\t\t169: \"File vuoto\",\n\t\t\t181: \"§% - § kB/s - § minuti rimanenti\",\n\t\t\t182: \"§% - § kB/s - § minuto rimanente\",\n\t\t\t183: \"§% - § kB/s - § secondi rimanenti\",\n\t\t\t185: \"§% - a § kB/s in § minuti\",\n\t\t\t186: \"§% - a § kB/s in § minuto\",\n\t\t\t187: \"§% - a § kB/s in § secondi\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrompere\",\n\t\t\t192: \"Sei sicuro? [span]Si[/span] - No\",\n\t\t\t193: \"Sembra che un errore inaspettato si sia verificato... Riprova.\",\n\t\t\t194: \"Un errore si è verificato durante l'invio.\",\n\t\t\t195: \"Un errore si è verificato durante il trattamento.\",\n\t\t\t196: \"Vi invitiamo a [a §]riprovare[/a].\"\n\t\t},\n\t\tja: {\n\t\t\t103: \"キャンセル\",\n\t\t\t104: \"承認\",\n\t\t\t105: \"閉じる\",\n\t\t\t106: \"前へ\",\n\t\t\t107: \"次へ\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t149: \"終了\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ Mo\",\n\t\t\t184: \"§% - § Ko/s\",\n\t\t\t192: \"よろしいですか?[span]はい[/span] - いいえ\"\n\t\t},\n\t\tnl: {\n\t\t\t103: \"Annuleren\",\n\t\t\t104: \"Bevestigen\",\n\t\t\t105: \"Sluiten\",\n\t\t\t106: \"Vorige\",\n\t\t\t107: \"Volgende\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t144: \"achteruit/vooruit\",\n\t\t\t145: \"volume omlaag/omhoog\",\n\t\t\t146: \"dempen\",\n\t\t\t147: \"schermvullend\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpl: {\n\t\t\t103: \"Anuluj\",\n\t\t\t104: \"Potwierdź\",\n\t\t\t105: \"Zamknij\",\n\t\t\t106: \"Poprzedni\",\n\t\t\t107: \"Następny\",\n\t\t\t131: \"obraz\",\n\t\t\t132: \"ścieżka obrazu\",\n\t\t\t133: \"ścieżka dźwiękowa\",\n\t\t\t134: \"napisy\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t144: \"wstecz/przodu\",\n\t\t\t145: \"ciszej/głośniej\",\n\t\t\t146: \"wycisz\",\n\t\t\t147: \"pełny ekran\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpt: {\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Fechar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Seguinte\",\n\t\t\t108: \"Escolher um ficheiro\",\n\t\t\t109: \"Escolher um ou vários ficheiros\",\n\t\t\t124: \"Operação em processo...\",\n\t\t\t125: \"Envio em processo...\",\n\t\t\t126: \"Tratamento em processo...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"faixa de vídeo\",\n\t\t\t133: \"faixa de áudio\",\n\t\t\t134: \"legendas\",\n\t\t\t142: \"anterior/seguinte\",\n\t\t\t143: \"reprodução/pausa\",\n\t\t\t144: \"recuar/avançar\",\n\t\t\t145: \"diminuir/aumentar volume\",\n\t\t\t146: \"sem som\",\n\t\t\t147: \"ecrã completo\",\n\t\t\t148: \"sair\",\n\t\t\t149: \"Fim\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Todos os ficheiros foram aceites.\",\n\t\t\t162: \"Formato do ficheiro aceite: §.\",\n\t\t\t163: \"Formatos de ficheiro aceites: § e §.\",\n\t\t\t164: \"Tamanho máximo: § MB.\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - § kB/s em § minutos\",\n\t\t\t186: \"§% - § kB/s em § minuto\",\n\t\t\t187: \"§% - § kB/s em § segundos\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Tem a certeza? [span]Sim[/span] - Não\",\n\t\t\t193: \"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.\",\n\t\t\t194: \"Ocorreu um erro ao enviar.\",\n\t\t\t195: \"Ocorreu um erro ao processar.\",\n\t\t\t196: \"Convidamo-lo a [a §]tentar novamente[/a].\"\n\t\t},\n\t\tptbr: {\n\t\t\t107: \"Próximo\",\n\t\t\t124: \"Operação em andamento...\",\n\t\t\t125: \"Envio em andamento...\",\n\t\t\t126: \"Tratamento em andamento...\",\n\t\t\t132: \"trilha de vídeo\",\n\t\t\t133: \"trilha de áudio\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tru: {\n\t\t\t102: \"Ок\",\n\t\t\t103: \"Отмена\",\n\t\t\t104: \"Подтвердить\",\n\t\t\t105: \"Закрыть\",\n\t\t\t106: \"Предыдущий\",\n\t\t\t107: \"Следующий\",\n\t\t\t108: \"Выберите файл\",\n\t\t\t124: \"Операция в процессе...\",\n\t\t\t131: \"видео\",\n\t\t\t132: \"видеодорожка\",\n\t\t\t133: \"аудиодорожка\",\n\t\t\t134: \"субтитры\",\n\t\t\t142: \"предыдущий/следующий\",\n\t\t\t143: \"воспроизведение/пауза\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"понизить/повысить громкость\",\n\t\t\t146: \"выключить звук\",\n\t\t\t147: \"полноэкранный режим\",\n\t\t\t148: \"выйти\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Все файлы приняты.\",\n\t\t\t162: \"Формат файла: §.\",\n\t\t\t163: \"Форматы файлов: § и §.\",\n\t\t\t164: \"Максимальный размер: § MB.\",\n\t\t\t181: \"§% - § kB/s - осталось § минут\",\n\t\t\t182: \"§% - § kB/s - осталось § минут\",\n\t\t\t183: \"§% - § kB/s - осталось § секунд\",\n\t\t\t185: \"§% - § kB/s за § минут\",\n\t\t\t186: \"§% - § kB/s за § минут\",\n\t\t\t187: \"§% - § kB/s за § секунд\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Вы уверены? [span]Да[/span] - нет\",\n\t\t\t193: \"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.\",\n\t\t\t194: \"Возникла ошибка при отправке файла.\",\n\t\t\t195: \"Возникла ошибка при обработке файла.\"\n\t\t},\n\t\tsk: {\n\t\t\t103: \"Zrušiť\",\n\t\t\t104: \"Potvrdiť\",\n\t\t\t105: \"Zavrieť\",\n\t\t\t106: \"Dozadu\",\n\t\t\t107: \"Ďalej\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t103: \"İptal\",\n\t\t\t104: \"Onayla\",\n\t\t\t105: \"Kapat\",\n\t\t\t106: \"Önceki\",\n\t\t\t107: \"Sonraki\",\n\t\t\t131: \"görüntü\",\n\t\t\t132: \"görüntü kaydı\",\n\t\t\t133: \"ses kaydı\",\n\t\t\t134: \"altyazılar\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t144: \"geri/i̇leri\",\n\t\t\t145: \"ses kısar/açar\",\n\t\t\t146: \"sesi kapatma\",\n\t\t\t147: \"tam ekran\",\n\t\t\t149: \"Son\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"Emin misiniz ? [span]Evet[/span] - Hayır\"\n\t\t},\n\t\tuk: {\n\t\t\t103: \"Відмінити\",\n\t\t\t104: \"Підтвердити\",\n\t\t\t105: \"Закрити\",\n\t\t\t106: \"Попередній\",\n\t\t\t107: \"Наступний\",\n\t\t\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tzh: {\n\t\t\t103: \"取消\",\n\t\t\t104: \"确认\",\n\t\t\t105: \"关闭\",\n\t\t\t106: \"上一个\",\n\t\t\t107: \"下一个\",\n\t\t\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"上一个/下一个\",\n\t\t\t144: \"快退/快进\",\n\t\t\t145: \"音量减/增\",\n\t\t\t146: \"静音\",\n\t\t\t147: \"全屏\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"您确定吗?[span]是[/span] - 否\"\n\t\t}\n\t\t// auto end\n\t};\n\n\tthis.init = function () {\n\n\t\tvar value = apijs.config.lang, html = document.querySelector('html');\n\n\t\tif (value.indexOf('auto') > -1) {\n\t\t\tvalue = html.getAttribute('xml:lang') || html.getAttribute('lang'); // pt-BR fr-FR\n\t\t\tif (typeof value == 'string') {\n\t\t\t\tvalue = value.replace(/[-_]/g, '').toLowerCase();\n\t\t\t\tvalue = value.slice(0, 4); // ptbr frfr\n\t\t\t\tif (!this.data.hasOwnProperty(value))\n\t\t\t\t\tvalue = value.slice(0, 2); // pt fr\n\t\t\t\tif (this.data.hasOwnProperty(value))\n\t\t\t\t\tapijs.config.lang = value;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.data.hasOwnProperty(value))\n\t\t\tapijs.config.lang = 'en';\n\t};\n\n\n\t// TRADUIT (public return string|domelement|boolean)\n\n\tthis.translate = function (word) {\n\n\t\tvar lang = apijs.config.lang, idx = 1, translation = '';\n\n\t\t// mot clef inexistant dans la langue configurée\n\t\t// test avec la langue par défaut pour éventuellement continuer\n\t\tif (typeof this.data[lang][word] != 'string') {\n\t\t\tif ((lang.length > 3) && (typeof this.data[lang.slice(0, 2)][word] == 'string'))\n\t\t\t\tlang = lang.slice(0, 2);\n\t\t\telse if ((lang !== 'en') && (typeof this.data.en[word] == 'string'))\n\t\t\t\tlang = 'en';\n\t\t\telse\n\t\t\t\treturn word;\n\t\t}\n\n\t\t// chaîne de caractères configurable\n\t\tif (arguments.length > 1) {\n\t\t\tthis.data[lang][word].split('§').forEach(function (data) {\n\t\t\t\ttranslation += (idx < this.length) ? data + this[idx++] : data;\n\t\t\t}, arguments); // pour que ci-dessus this = arguments\n\t\t\treturn translation;\n\t\t}\n\n\t\t// chaîne de caractères simple\n\t\treturn this.data[lang][word];\n\t};\n\n\tthis.translateNode = function () {\n\n\t\t// apply fait une copie des arguments\n\t\t// c'est comme si on avait appelé this.translate directement\n\t\treturn document.createTextNode(this.translate.apply(this, arguments));\n\t};\n\n\tthis.changeLang = function (lang) {\n\n\t\tif (typeof lang == 'string') {\n\n\t\t\tif (lang.indexOf('auto') > -1) {\n\t\t\t\tapijs.config.lang = 'auto';\n\t\t\t\tthis.init();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlang = lang.replace(/[-_]/g, '');\n\n\t\t\tif (this.data.hasOwnProperty(lang)) {\n\t\t\t\tapijs.config.lang = lang;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n};","/**\n * Created D/12/04/2009\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.dialog = function () {\n\n\t\"use strict\";\n\tthis.klass = [];\n\tthis.height = 0;\n\tthis.scroll = 0; // time\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.xhr = null;\n\n\tthis.ft = /information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g;\n\tthis.ti = 'a,area,button,input,textarea,select,object,iframe';\n\tthis.ns = 'http://www.w3.org/2000/svg';\n\n\tthis.media = null;\n\tthis.t0 = null; // fragment\n\tthis.t1 = null; // div id=apijsDialog\n\tthis.t2 = null; // div/form id=apijsBox\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = null;\n\tthis.d = null;\n\n\n\t// GÉNÉRATION DES BOÎTES DE DIALOGUE (public return boolean)\n\n\tthis.dialogInformation = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('information', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnOk()\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogInformation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogConfirmation = function (title, text, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('confirmation', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('button', 'apijs.dialog.actionConfirm();')\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogConfirmation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormOptions = function (title, text, action, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('options', icon)\n\t\t\t\t.htmlParent(action, 'apijs.dialog.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show(true);\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormOptions invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormUpload = function (title, text, action, input, multiple, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof input == 'string')) {\n\t\t\treturn this.init('upload', icon)\n\t\t\t\t.htmlParent(action, 'apijs.upload.actionConfirm();', 'apijs.upload.actionDrag(event);')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlUpload(input, (typeof multiple == 'boolean') ? multiple : false)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show('button.browse');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormUpload invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogProgress = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('progress', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgProgress()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogProgress invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogWaiting = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('waiting', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogWaiting invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogPhoto = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('photo', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, false)\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogPhoto invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogVideo = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('video', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, url.indexOf('iframe') < 0) // true si pas iframe\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogVideo invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogIframe = function (url, close, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean')) {\n\t\t\treturn this.init('iframe', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlIframe(url)\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogIframe invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogAjax = function (url, close, callback, args, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean') && (typeof callback == 'function')) {\n\t\t\t// dialogue\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.init('ajax', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t\t// ajax\n\t\t\tthis.xhr = new XMLHttpRequest();\n\t\t\tthis.xhr.open('GET', url, true);\n\t\t\tthis.xhr.onreadystatechange = function () {\n\t\t\t\tif ((this.xhr.readyState === 4) && (typeof this.callback == 'function')) {\n\t\t\t\t\tthis.callback(this.xhr, this.args);\n\t\t\t\t\tthis.remove('loading');\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.xhr.send();\n\t\t\treturn this;\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogAjax invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES CLASSES CSS (public sauf update private, return this sauf has return true)\n\n\tthis.update = function () {\n\n\t\t// il n'est pas question de mettre à jour les attributs class sans l'une des 3 classes de base\n\t\tif (this.has('start', 'ready', 'end')) {\n\t\t\tif (this.t1)\n\t\t\t\tthis.t1.setAttribute('class', this.klass.join(' '));\n\t\t\tif (this.t2)\n\t\t\t\tthis.t2.setAttribute('class', this.klass.join(' '));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.add = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.add argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) < 0)\n\t\t\t\tthis.klass.push(css);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.remove = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.remove argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) > -1)\n\t\t\t\tthis.klass.splice(this.klass.indexOf(css), 1);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.toggle = function (search, replace) {\n\n\t\tif ((typeof search != 'string') || (typeof replace != 'string'))\n\t\t\tconsole.error('apijs.dialog.toggle argument is not a string', search, replace);\n\n\t\tif (this.has(search))\n\t\t\tthis.remove(search);\n\t\tif (!this.has(replace))\n\t\t\tthis.add(replace);\n\n\t\treturn this.update();\n\t};\n\n\tthis.has = function () {\n\t\treturn this.klass.has(apijs.toArray(arguments)); // true if one found\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private sauf actionClose)\n\n\tthis.actionClose = function (ev) {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function')) {\n\t\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href))\n\t\t\t\thistory.pushState({}, '', self.location.href.slice(0, self.location.href.indexOf('#')));\n\t\t}\n\n\t\tif (typeof ev == 'object') {\n\t\t\tif ((ev.target.getAttribute('id') === 'apijsDialog') && !apijs.dialog.has('photo', 'video', 'progress', 'waiting', 'lock'))\n\t\t\t\tapijs.dialog.clear(true);\n\t\t}\n\t\telse if (this.t1) {\n\t\t\tthis.clear(true);\n\t\t}\n\t};\n\n\tthis.onCloseBrowser = function (ev) {\n\n\t\tif (apijs.dialog.has('progress', 'waiting', 'lock')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t\tev.m = apijs.i18n.translate(124);\n\t\t\tev.returnValue = ev.m; // Gecko, Trident, Chrome 34+\n\t\t\treturn ev.m; // Gecko, WebKit, Chrome\n\t\t}\n\t};\n\n\tthis.onResizeBrowser = function () {\n\n\t\tvar add, body = document.querySelector('body');\n\n\t\tadd = body.clientWidth <= (apijs.dialog.has('photo', 'video') ? 900 : 460);\n\t\tapijs.dialog[add ? 'add' : 'remove']('mobile');\n\n\t\tadd = body.clientWidth <= 300;\n\t\tapijs.dialog[add ? 'add' : 'remove']('tiny');\n\t};\n\n\tthis.onScrollBrowser = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = ev.target, brk = false;\n\n\t\t// dialogues du diaporama (suivant/précédent)\n\t\tif (that.has('slideshow') && !that.has('playing') &&\n\t\t !['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll','mousewheel','panleft','panright'].has(ev.type)) {\n\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (1 + that.scroll))) {\n\t\t\t\tthat.scroll = elem;\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tapijs.slideshow[((ev.type === 'panleft') || brk) ? 'actionNext' : 'actionPrev']();\n\t\t\t}\n\t\t}\n\t\t// autorise éventuellement le défilement\n\t\t// recherche l'éventuel élément scrollable\n\t\telse {\n\t\t\tif (elem.nodeName === 'OPTION') {\n\t\t\t\telem = elem.parentNode;\n\t\t\t}\n\t\t\telse if (!['TEXTAREA', 'SELECT'].has(elem.nodeName)) {\n\t\t\t\twhile ((brk !== true) && (elem.nodeName !== 'HTML')) {\n\t\t\t\t\tif (elem.classList.contains('scrollable'))\n\t\t\t\t\t\tbrk = true;\n\t\t\t\t\telse\n\t\t\t\t\t\telem = elem.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// elem = select | textarea | scrollable\n\t\t\tif (elem.nodeName !== 'HTML') {\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tif ((brk && (elem.scrollTop < (elem.scrollHeight - elem.offsetHeight))) || (!brk && (elem.scrollTop > 0)))\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// empèche le défilement\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\t};\n\n\tthis.onScrollIframe = function (ev) {\n\n\t\tvar elem = ev.target, brk;\n\t\twhile (elem.parentNode)\n\t\t\telem = elem.parentNode;\n\n\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\n\t\t// empèche le défilement (elem = iframe document)\n\t\tif (\n\t\t\t(brk && ((elem.defaultView.innerHeight + elem.defaultView.pageYOffset) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.pageYOffset <= 0))\n\t\t) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t}\n\t};\n\n\tthis.onKey = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = that.media;\n\n\t\t// dialogues d'attente et de progresssion ou tout autre dialogue verrouillé\n\t\t// ctrl + q | ctrl + w | ctrl + r | ctrl + f4 | ctrl + f5 // alt + f4 // échap | f5\n\t\tif (that.has('progress', 'waiting', 'lock')) {\n\n\t\t\tif ((ev.ctrlKey && [81, 87, 82, 115, 116].has(ev.keyCode)) || (ev.altKey && (ev.keyCode === 115)) || [27, 116].has(ev.keyCode))\n\t\t\t\tev.preventDefault();\n\t\t}\n\t\t// dialogues photo et vidéo\n\t\t// f11 (ne fonctionne plus sur Opera 74 Windows)\n\t\telse if (that.has('photo', 'video') && (ev.keyCode === 122)) {\n\t\t\tev.preventDefault();\n\t\t\tapijs.requestFullscreen(that.t1);\n\t\t}\n\t\t// dialogues photo et vidéo du diaporama\n\t\t// échap // fin // début // gauche // droite\n\t\telse if (that.has('slideshow')) {\n\n\t\t\tif (ev.keyCode === 27) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthat.actionClose();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 35) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionLast();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 36) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionFirst();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 37) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionPrev();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 39) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionNext();\n\t\t\t}\n\t\t}\n\t\t// pour tous les autres\n\t\t// échap\n\t\telse if (ev.keyCode === 27) {\n\t\t\tev.preventDefault();\n\t\t\tthat.actionClose();\n\t\t}\n\n\t\t// dialogue vidéo\n\t\t// espace | p // haut | page haut // bas | page bas // + // - // m\n\t\tif (that.has('video') && !that.has('videoiframe')) {\n\n\t\t\t// espace | p\n\t\t\tif ((ev.keyCode === 32) || (ev.keyCode === 80)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.ended || elem.paused)\n\t\t\t\t\t\telem.play();\n\t\t\t\t\telse\n\t\t\t\t\t\telem.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// haut | page haut\n\t\t\telse if ((ev.keyCode === 38) || (ev.keyCode === 33)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime < (elem.duration - 10))\n\t\t\t\t\t\telem.currentTime += 10;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// bas | page bas\n\t\t\telse if ((ev.keyCode === 40) || (ev.keyCode === 34)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > 10)\n\t\t\t\t\t\telem.currentTime -= 10;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.currentTime = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// +\n\t\t\telse if (ev.keyCode === 107) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume < 0.8)\n\t\t\t\t\t\telem.volume += 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// -\n\t\t\telse if (ev.keyCode === 109) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume > 0.21)\n\t\t\t\t\t\telem.volume -= 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// m\n\t\t\telse if (ev.keyCode === 77) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\telem.muted = !elem.muted; // inverse\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// défilement de la page pour tous (renvoi sur actionScrollBrowser)\n\t\t// espace | page haut | page bas | fin | début | haut | bas\n\t\tif ([32, 33, 34, 35, 36, 38, 40].has(ev.keyCode)) {\n\n\t\t\t// empèche le défilement\n\t\t\tif (!ev.target || (!['INPUT','TEXTAREA','OPTION','SELECT'].has(ev.target.nodeName) && !ev.target.classList.contains('scrollable'))) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tev.stopPropagation();\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onFullscreen = function (ev) {\n\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tif (ev) apijs.log('dialog:onFullscreen:' + (res ? 'in' : 'out'));\n\n\t\tapijs.dialog[res ? 'add' : 'remove']('fullscreen');\n\t};\n\n\tthis.onIframeLoad = function (elem) { // todo\n\n\t\telem.removeAttribute('class');\n\t\tapijs.dialog.remove('loading');\n\n\t\telem.contentWindow.document.addEventListener('keydown', window.parent.apijs.dialog.onKey);\n\t\telem.contentWindow.addEventListener('DOMMouseScroll', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('mousewheel', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('touchmove', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t};\n\n\tthis.onMediaLoad = function (ev) { // todo\n\n\t\tvar that = apijs.dialog, media = that.media, src, elem, elems;\n\t\tif (ev && ev.target) {\n\t\t\tsrc = ev.target.currentSrc || ev.target.src;\n\t\t\tapijs.log('dialog:onMediaLoad:' + ev.type + ' ' + (src ? src.slice(src.lastIndexOf('/') + 1) : ''));\n\t\t}\n\n\t\tif (media && ['load', 'durationchange'].has(ev.type)) {\n\t\t\tthat.remove('loading', 'error');\n\t\t\tmedia.style.visibility = 'visible';\n\t\t\tif (!media.hasAttribute('src') && (media.nodeName === 'IMG'))\n\t\t\t\tmedia.setAttribute('src', media.imageLoader.src);\n\t\t}\n\t\telse if (media && (ev.type === 'error')) {\n\t\t\tthat.toggle('loading', 'error');\n\t\t\tmedia.removeAttribute('style');\n\t\t\t// player vidéo (désactive l'option et active la suivante)\n\t\t\telem = apijs.html('.tracks.video select');\n\t\t\tif (elem && ev && ev.target) {\n\t\t\t\telems = elem.querySelectorAll('option');\n\t\t\t\tif ((elems.length > 0) && (elem.value.length > 0)) {\n\t\t\t\t\telems[elem.value].setAttribute('disabled', 'disabled');\n\t\t\t\t\telem.selectedIndex += 1;\n\t\t\t\t\t// charge la vidéo suivante (si erreur au clic sur le select)\n\t\t\t\t\tif ((ev.target.nodeName === 'VIDEO') && (elem.value !== ''))\n\t\t\t\t\t\tmedia.videoPlayer.actionVideo(elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () { // todo\n\n\t\t// vérifie le dialogue d'options\n\t\t// arrêt du traitement si c'est pas bon\n\t\tif (this.has('options')) {\n\t\t\tif (this.callback(false, this.args) !== true)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// verrouille le dialogue et affiche le loader\n\t\tthis.add('lock', 'loading');\n\t\tthis.htmlSvgLoader(false);\n\n\t\t// masque les boutons et le texte du dialogue\n\t\tapijs.html('div.btns').style.visibility = 'hidden';\n\t\tapijs.html('div.bbcode').style.visibility = 'hidden';\n\n\t\t// appelle la fonction de rappel\n\t\t// ne déverrouille pas le dialogue\n\t\tself.setTimeout(function () {\n\t\t\tif ((this.t2) && (this.t2.nodeName === 'FORM'))\n\t\t\t\tthis.callback(this.t2.getAttribute('action'), this.args);\n\t\t\telse if (this.t2)\n\t\t\t\tthis.callback(this.args);\n\t\t}.bind(this), 12); // pour que ci-dessus this = this\n\n\t\treturn false; // très important\n\t};\n\n\n\t// GESTION DES CONTENEURS (private return this|boolean)\n\n\tthis.init = function (type, icon, isLocked) { // todo\n\n\t\tisLocked = (isLocked === true);\n\t\tif (typeof icon == 'string') {\n\t\t\ticon = icon.replace(this.ft, '').trim();\n\t\t\ticon = (icon.length > 0) ? (isLocked ? icon + ' lock' : icon) : (isLocked ? 'lock' : null);\n\t\t}\n\t\telse if (isLocked) {\n\t\t\ticon = 'lock';\n\t\t}\n\n\t\t// préparation\n\t\tif (this.t0)\n\t\t\tthis.clear(false);\n\n\t\t// css\n\t\tthis.klass.push('start');\n\t\tthis.klass.push(type);\n\n\t\tif (self.matchMedia('prefers-reduced-motion:reduce').matches)\n\t\t\tthis.klass.push('reduce');\n\n\t\tif (typeof icon == 'string')\n\t\t\tthis.klass = this.klass.concat(icon.split(' '));\n\n\t\t// création du fragment\n\t\tthis.t0 = document.createDocumentFragment();\n\n\t\t// surveillance des touches et du navigateur\n\t\tdocument.addEventListener('keydown', this.onKey);\n\t\tself.addEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.addEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.setAttribute('tabindex', '-1'); });\n\n\t\treturn this;\n\t};\n\n\tthis.show = function (focus) { // todo\n\n\t\t// design\n\t\tthis.onResizeBrowser();\n\t\tthis.onFullscreen();\n\n\t\tif ((this.height > 0) && !this.has('photo', 'video'))\n\t\t\tthis.t2.style.minHeight = this.height + 'px';\n\n\t\t// affichage du dialogue sans/sans/avec transitions CSS\n\t\tvar old = apijs.html('#Dialog');\n\t\tif (old) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tthis.t1 = old;\n\t\t\tthis.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\tthis.t1.setAttribute('class', this.t2.getAttribute('class'));\n\t\t}\n\t\telse if (this.has('notransition')) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t}\n\t\telse {\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t\tself.setTimeout(function () { apijs.dialog.toggle('start', 'ready'); }, 12);\n\t\t}\n\n\t\t// fermeture des popups au clic\n\t\tif (apijs.config.dialog.closeOnClick && !this.has('progress', 'waiting', 'lock'))\n\t\t\tdocument.addEventListener('click', this.actionClose);\n\n\t\t// passage en plein écran\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.addEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\n\t\t// auto-focus\n\t\tif (focus === true)\n\t\t\tself.setTimeout(function () { apijs.html('input:not([readonly]),textarea:not([readonly]),select:not([disabled])').focus(); }, 12);\n\t\telse if (typeof focus == 'string')\n\t\t\tapijs.html(focus).focus();\n\n\t\treturn true;\n\t};\n\n\tthis.clear = function (isAll) { // todo\n\n\t\tif (isAll && this.xhr) {\n\t\t\tthis.callback = null; // très important\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\t// surveillance des touches et du navigateur (depuis initDialog)\n\t\tdocument.removeEventListener('keydown', this.onKey);\n\t\tself.removeEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.removeEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation (depuis initDialog)\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.removeAttribute('tabindex'); });\n\n\t\t// fermeture des popups au clic (depuis showDialog)\n\t\tif (apijs.config.dialog.closeOnClick)\n\t\t\tdocument.removeEventListener('click', this.actionClose);\n\n\t\t// spécial\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\t// pour ne pas déclencher les fonctions\n\t\t\t// supprime tous les ontruc et les src\n\t\t\tif (this.has('video') && !this.has('videoiframe')) {\n\t\t\t\tthis.t2.querySelectorAll('video, source, track').forEach(function (elem) {\n\t\t\t\t\tfor (var name in elem) {\n\t\t\t\t\t\tif (name.indexOf('on') === 0)\n\t\t\t\t\t\t\telem[name] = null;\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute('src');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.media.videoPlayer = null;\n\t\t\tthis.media.imageLoader = null;\n\n\t\t\t// passage en plein écran (depuis showDialog)\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\t\t// mémorise la hauteur du dialogue\n\t\telse {\n\t\t\tthis.height = parseFloat(self.getComputedStyle(this.t2).height);\n\t\t}\n\n\t\t// supprime le dialogue\n\t\tif (isAll) {\n\t\t\tthis.toggle('ready', 'end');\n\t\t\tthis.t1.remove();\n\t\t}\n\t\telse {\n\t\t\twhile (this.t1.firstChild)\n\t\t\t\tthis.t1.firstChild.remove();\n\t\t}\n\n\t\t// réinitialise toutes les variables (sauf ft/ti/ns)\n\t\tthis.klass = [];\n\t\tif (isAll) {\n\t\t\tthis.height = 0;\n\t\t\tthis.scroll = 0; // time\n\t\t\tthis.callback = null;\n\t\t\tthis.args = null;\n\t\t\tthis.xhr = null;\n\t\t}\n\t\tthis.media = null;\n\t\tthis.t0 = null; // fragment\n\t\tthis.t1 = null; // div id=apijsDialog\n\t\tthis.t2 = null; // div/form id=apijsBox\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = null;\n\t\tthis.d = null;\n\n\t\treturn true;\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this)\n\n\tthis.htmlParent = function (action, submit, drag) {\n\n\t\tthis.t1 = document.createElement('div');\n\t\tthis.t1.setAttribute('id', 'apijsDialog');\n\n\t\tif (typeof drag == 'string') {\n\n\t\t\tthis.t1.setAttribute('ondragenter', drag);\n\t\t\tthis.t1.setAttribute('ondragleave', drag);\n\t\t\tthis.t1.setAttribute('ondragover', drag);\n\t\t\tthis.t1.setAttribute('ondrop', drag);\n\n\t\t\tthis.a = document.createElement('p');\n\t\t\tthis.a.setAttribute('class', 'drag');\n\t\t\tthis.a.appendChild(apijs.i18n.translateNode(127));\n\t\t\tthis.t1.appendChild(this.a);\n\t\t}\n\n\t\tif (typeof action == 'string') {\n\t\t\tthis.t2 = document.createElement('form');\n\t\t\tthis.t2.setAttribute('action', action);\n\t\t\tthis.t2.setAttribute('method', 'post');\n\t\t\tthis.t2.setAttribute('enctype', 'multipart/form-data');\n\t\t\tthis.t2.setAttribute('onsubmit', 'return ' + submit);\n\t\t}\n\t\telse {\n\t\t\tthis.t2 = document.createElement('div');\n\t\t}\n\n\t\tthis.t2.setAttribute('id', 'apijsBox');\n\t\tthis.t1.appendChild(this.t2);\n\t\tthis.t0.appendChild(this.t1);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlContent = function (title, text) {\n\n\t\tif (title.length > 0) {\n\t\t\tthis.a = document.createElement('h1');\n\t\t\tthis.a.innerHTML = title.replace(/</g, '<').replace(/>/g, '>').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\tif (text.length > 0) {\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'bbcode');\n\t\t\tif (text[0] !== '[') text = '[p]' + text + '[/p]';\n\t\t\tthis.a.innerHTML = text.replace(/</g, '<').replace(/>/g, '>').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.a.querySelectorAll('a.popup').forEach(function (elem) { elem.addEventListener('click', apijs.openTab); });\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnOk = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(102));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnConfirm = function (type, click) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', type);\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tif (type !== 'submit') this.b.setAttribute('onclick', click);\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(104));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'cancel');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(103));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnNavigation = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'navigation noplaying');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'prev');\n\t\t\tthis.b.setAttribute('id', 'apijsPrev');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionPrev();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(106));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'next');\n\t\t\tthis.b.setAttribute('id', 'apijsNext');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionNext();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(107));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnClose = function (close) {\n\n\t\tif (close !== false) {\n\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'close noplaying');\n\n\t\t\t\tthis.b = document.createElement('button');\n\t\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\t\tthis.b.setAttribute('class', 'close');\n\t\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(105));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\n\t\t\tthis.a.appendChild(this.b);\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlUpload = function (input, isMultiple) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.b = document.createElement('input');\n\t\t\tthis.b.setAttribute('type', 'file');\n\t\t\tthis.b.setAttribute('name', input);\n\t\t\tthis.b.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.b.setAttribute('multiple', 'multiple');\n\t\t\tthis.b.setAttribute('onchange', 'apijs.upload.actionChoose(this);');\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'browse');\n\t\t\tthis.b.setAttribute('onclick', 'this.previousSibling.click();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(isMultiple ? 109 : 108));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('div');\n\t\t\tthis.b.setAttribute('class', 'filenames scrollable');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgProgress = function () {\n\n\t\tthis.a = document.createElement('span');\n\t\tthis.a.setAttribute('class', 'info');\n\t\tthis.t2.appendChild(this.a);\n\n\t\tthis.a = document.createElement('svg');\n\t\tthis.a.setAttribute('id', 'apijsProgress');\n\n\t\t\tthis.b = document.createElement('rect');\n\t\t\tthis.b.setAttribute('class', 'auto');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgLoader = function (isDelayed) {\n\n\t\tthis.a = document.createElementNS(this.ns, 'svg');\n\t\tthis.a.setAttribute('class', 'loader');\n\n\t\t\tthis.b = document.createElementNS(this.ns, 'path');\n\t\t\tif (isDelayed !== false) this.b.setAttribute('style', 'opacity:0;');\n\t\t\tthis.b.setAttribute('d', 'M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z');\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animateTransform');\n\t\t\t\tthis.c.setAttribute('attributeName', 'transform');\n\t\t\t\tthis.c.setAttribute('type', 'rotate');\n\t\t\t\tthis.c.setAttribute('from', '0 64 64');\n\t\t\t\tthis.c.setAttribute('to', '360 64 64');\n\t\t\t\tthis.c.setAttribute('dur', '5s');\n\t\t\t\tthis.c.setAttribute('repeatCount', 'indefinite');\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animate');\n\t\t\t\tthis.c.setAttribute('attributeName', 'opacity');\n\t\t\t\tthis.c.setAttribute('to', '1');\n\t\t\t\tthis.c.setAttribute('dur', '0.01s');\n\t\t\t\tthis.c.setAttribute('begin', '1s');\n\t\t\t\tthis.c.setAttribute('fill', 'freeze');\n\n\t\t\tif (isDelayed !== false) this.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlMedia = function (url, name, date, legend) {\n\n\t\tthis.a = document.createElement('dl');\n\t\tthis.a.setAttribute('class', 'media');\n\n\t\t\tthis.b = document.createElement('dt');\n\n\t\t\tif (this.has('photo')) {\n\t\t\t\tthis.media = document.createElement('img');\n\t\t\t\tthis.media.setAttribute('alt', legend.replace('\"', ''));\n\t\t\t}\n\t\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\t\tthis.media = document.createElement('iframe');\n\t\t\t\tthis.media.setAttribute('type', 'text/html');\n\t\t\t\tthis.media.setAttribute('scrolling', 'no');\n\t\t\t\tthis.media.setAttribute('src', url);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.media = document.createElement('video');\n\t\t\t\tthis.media.setAttribute('controls', 'controls');\n\t\t\t\tthis.media.setAttribute('preload', 'metadata');\n\t\t\t}\n\n\t\t\tthis.media.setAttribute('id', 'apijsMedia');\n\t\t\tthis.b.appendChild(this.media);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('dd');\n\t\t\tthis.b.setAttribute('class', 'nomobile noplaying');\n\n\t\t\tif ((name !== 'false') || (date !== 'false')) {\n\n\t\t\t\tvar fileid = url.slice(url.lastIndexOf('/') + 1);\n\t\t\t\tthis.c = document.createElement('span');\n\n\t\t\t\t// name + date\n\t\t\t\tif ((name !== 'false') && (name !== 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' (' + date + ') '));\n\t\t\t\t// name\n\t\t\t\telse if ((name !== 'false') && (name !== 'auto'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' '));\n\t\t\t\t// auto name + date\n\t\t\t\telse if ((name === 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' (' + date + ') '));\n\t\t\t\t// auto name\n\t\t\t\telse if (name === 'auto')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' '));\n\t\t\t\t// date\n\t\t\t\telse if (date !== 'false')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode('(' + date + ') '));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t}\n\n\t\t\tthis.b.appendChild(document.createTextNode(legend));\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\t// au choix : photo / vidéo avec iframe / vidéo avec lecteur / vidéo simple\n\t\t// lecteur créé v5.2 / supprimé v5.3 / refait v6.0 / extrait v6.6\n\t\tif (this.has('photo')) {\n\t\t\tthis.media.imageLoader = new Image();\n\t\t\tthis.media.imageLoader.src = url;\n\t\t\tthis.media.imageLoader.onload = this.onMediaLoad;\n\t\t\tthis.media.imageLoader.onerror = this.onMediaLoad;\n\t\t}\n\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\tthis.media.onload = function (ev) {\n\t\t\t\tthis.onIframeLoad(this.media);\n\t\t\t\tthis.onMediaLoad(ev);\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.add('videoiframe');\n\t\t}\n\t\telse if (apijs.startPlayer(this.media, url)) {\n\t\t\tthis.add('apijsvideoplayer');\n\t\t}\n\t\telse {\n\t\t\tthis.c = document.createElement('source');\n\t\t\tthis.c.setAttribute('src', url);\n\t\t\tthis.c.onerror = this.onMediaLoad;\n\t\t\tthis.media.appendChild(this.c);\n\t\t\tthis.media.ondurationchange = this.onMediaLoad;\n\t\t\tthis.media.onerror = this.onMediaLoad;\n\t\t\tthis.add('videosource');\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlHelp = function (isSlideshow, isVideo) {\n\n\t\tvar items, item, keys = [\n\t\t\tisSlideshow ? ['start', 149, 141] : [], // début/fin\n\t\t\tisSlideshow ? ['left', 'right', 142] : [],\n\t\t\tisVideo ? ['bottom', 'topk', 144] : [],\n\t\t\tisVideo ? ['minus', 'plus', 145] : [],\n\t\t\tisVideo ? ['M', 146] : [],\n\t\t\tisVideo ? ['P', 143] : [],\n\t\t\t['F11', 147],\n\t\t\t[150, 148] // échap\n\t\t];\n\n\t\tthis.a = document.createElement('ul');\n\t\tthis.a.setAttribute('class', 'kbd nomobile nofullscreen');\n\n\t\twhile (items = keys.shift()) {\n\n\t\t\tif (items.length > 0) {\n\n\t\t\t\tthis.b = document.createElement('li');\n\n\t\t\t\twhile (item = items.shift()) {\n\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\tthis.c = document.createElement('kbd');\n\t\t\t\t\t\tif (['M', 'P', 'F11'].has(item))\n\t\t\t\t\t\t\tthis.c.appendChild(document.createTextNode(item));\n\t\t\t\t\t\telse if (typeof item == 'string')\n\t\t\t\t\t\t\tthis.c.setAttribute('class', item);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.b.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.a.appendChild(this.b);\n\t\t\t}\n\t\t}\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlIframe = function (url) {\n\n\t\tthis.a = document.createElement('iframe');\n\t\tthis.a.setAttribute('src', url);\n\t\tthis.a.setAttribute('class', 'loading');\n\t\tthis.a.setAttribute('onload', 'apijs.dialog.onIframeLoad(this);');\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n};","/**\n * Created D/11/01/2015\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.player = function (video, url) {\n\n\t\"use strict\";\n\tthis.video = video;\n\tthis.stalled = false;\n\tthis.subload = false;\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this|void|domelement)\n\n\tthis.autoRun = function (video, url) { // todo\n\n\t\tvideo.removeAttribute('src');\n\t\tvideo.removeAttribute('data-src');\n\t\tvideo.removeAttribute('controls');\n\t\tvideo.classList.add('apijsplayer');\n\n\t\t// https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Events/evenement_medias\n\t\tvideo.onloadedmetadata = function (ev) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onTimeupdate(ev);\n\t\t\tthis.onProgress(ev);\n\t\t\tthis.onVideotrack();\n\t\t\tthis.onAudiotrack();\n\t\t}.bind(this);\n\t\tvideo.onstalled = function (ev) {\n\t\t\tthis.stalled = true;\n\t\t\tthis.onWaiting(ev);\n\t\t}.bind(this);\n\t\tvideo.onplaying = this.onPlay.bind(this);\n\t\tvideo.onpause = this.onPlay.bind(this);\n\t\tvideo.onended = this.onPlay.bind(this);\n\t\tvideo.onprogress = this.onProgress.bind(this);\n\t\tvideo.ontimeupdate = this.onTimeupdate.bind(this);\n\t\tvideo.onseeking = this.onTimeupdate.bind(this);\n\t\tvideo.onseeked = this.onWaiting.bind(this);\n\t\tvideo.onwaiting = this.onWaiting.bind(this);\n\t\tvideo.onloadstart = this.onWaiting.bind(this);\n\t\tvideo.oncanplay = this.onWaiting.bind(this);\n\t\tvideo.onclick = this.actionPlay.bind(this);\n\t\tvideo.onvolumechange = this.actionVolume.bind(this);\n\t\tvideo.ondurationchange = apijs.dialog.onMediaLoad;\n\t\tvideo.onerror = apijs.dialog.onMediaLoad;\n\n\t\t// ajoute les contrôles\n\t\tvideo.parentNode.appendChild(this.htmlSvgPlayer());\n\n\t\t// charge les sources\n\t\tif (url.indexOf('m3u') < 0) {\n\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\treturn this;\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijsplayer.init', xhr: xhr } }));\n\t\t\t\tif (!video || (video.childNodes.length > 0)) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\t\t\t\telse if ([0, 200].has(xhr.status)) {\n\n\t\t\t\t\tvar url, txt, nbv = 0, nbt = 0, data = xhr.responseText.trim().split(\"\\n\");\n\t\t\t\t\twhile (typeof (url = data.shift()) == 'string') {\n\n\t\t\t\t\t\t// #APIJS#attr|name|value\n\t\t\t\t\t\tif (url.indexOf('#APIJS#attr') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tvideo.setAttribute(txt[1], txt[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #APIJS#track|kind|label|srclang|src\n\t\t\t\t\t\telse if (url.indexOf('#APIJS#track|subtitles') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tthis.html('.tracks.texttrack select').appendChild(this.htmlOption(nbt++, txt[3] + ' - ' + txt[2]));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlTrack(txt));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #EXTINF: Text\n\t\t\t\t\t\telse if (url.indexOf('#EXTINF') === 0) {\n\t\t\t\t\t\t\ttxt = url.replace(/#EXTINF:[0-9]+,/, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// http\n\t\t\t\t\t\telse if ((url.length > 5) && (url[0] !== '#')) {\n\t\t\t\t\t\t\tthis.html('.tracks.video select').appendChild(this.htmlOption(nbv++, (typeof txt == 'string') ? txt : nbv));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.updateSelect('video', nbv);\n\t\t\t\t\tif (typeof video.textTracks == 'object')\n\t\t\t\t\t\tthis.updateSelect('texttrack', video.textTracks.length || nbt);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijs.dialog.onMediaLoad({ type: 'error' });\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\txhr.send();\n\n\t\treturn this;\n\t};\n\n\tthis.updateSelect = function (css, total) {\n\n\t\t// s'il y une seule option on affiche pas, sauf pour les sous titres\n\t\tvar adjust = (css === 'texttrack') ? 1 : 0;\n\t\tif (total > adjust) {\n\t\t\tthis.html('.tracks.' + css).removeAttribute('style');\n\t\t\tthis.html('.tracks.' + css + ' em').textContent = '(' + total + ')';\n\t\t\tthis.html('.tracks.' + css + ' select').setAttribute('size', (total < 10) ? total + adjust : 10);\n\t\t}\n\t\telse {\n\t\t\tthis.html('.tracks.' + css).setAttribute('style', 'display:none;');\n\t\t\tthis.html('.tracks.' + css + ' select').innerHTML = '';\n\t\t}\n\t};\n\n\tthis.html = function (selector) {\n\t\treturn this.video.parentNode.querySelector(selector);\n\t};\n\n\n\t// GESTION DES ÉVÉNEMENTS (private return void)\n\n\tthis.onVideotrack = function () {\n\n\t\tvar tracks = this.video.videoTracks, select = this.html('.tracks.videotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes vidéo\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('videotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionVideotrack(auto);\n\t\t}\n\t};\n\n\tthis.onAudiotrack = function () {\n\n\t\tvar tracks = this.video.audioTracks, select = this.html('.tracks.audiotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes audio\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('audiotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionAudiotrack(auto);\n\t\t}\n\t};\n\n\tthis.onTimeupdate = function (ev) {\n\n\t\tvar time = this.video.currentTime, duration = this.video.duration, text = '--:--', hh, mm, ss;\n\n\t\tif (!isNaN(time) && (duration !== Infinity) && !isNaN(duration)) {\n\n\t\t\thh = Math.floor(time / 3600);\n\t\t\tmm = Math.floor((time % 3600) / 60);\n\t\t\tss = Math.floor(time % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext = hh + mm + ':' + ss;\n\n\t\t\thh = Math.floor(duration / 3600);\n\t\t\tmm = Math.floor((duration % 3600) / 60);\n\t\t\tss = Math.floor(duration % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext += ' / ' + hh + mm + ':' + ss;\n\n\t\t\tthis.html('svg.bar rect').style.width = (time / duration * 100) + '%';\n\t\t}\n\n\t\tthis.html('span.time').textContent = text;\n\n\t\t// loader stalled sauf par les tracks\n\t\tif (this.stalled && !this.subload) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onWaiting(ev);\n\t\t}\n\t};\n\n\tthis.onProgress = function () {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), idx = video.buffered.length, width, buffer;\n\n\t\tif ((idx > 0) && (video.duration !== Infinity) && !isNaN(video.duration)) {\n\n\t\t\telem.querySelectorAll('.buffer').forEach(function (node) { node.remove(); });\n\t\t\twhile (idx-- > 0) {\n\n\t\t\t\tbuffer = document.createElement('rect');\n\t\t\t\tbuffer.setAttribute('class', 'buffer');\n\n\t\t\t\twidth = (video.buffered.end(idx) - video.buffered.start(idx)) / video.duration * 100;\n\t\t\t\tif (width > 99.8)\n\t\t\t\t\tbuffer.setAttribute('style', 'left:0%; width:100%;');\n\t\t\t\telse\n\t\t\t\t\tbuffer.setAttribute('style', 'left:' + (video.buffered.start(idx) / video.duration * 100) + '%; width:' + width + '%;');\n\n\t\t\t\telem.appendChild(buffer);\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onPlay = function () { // todo\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tif (this.video.paused) {\n\t\t\t\tthis.html('span.play').textContent = '\\uE810';\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1)\n\t\t\t\t\tapijs.dialog.remove('playing');\n\t\t\t\telse\n\t\t\t\t\tthis.video.parentNode.classList.remove('playing');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.html('span.play').textContent = '\\uE811';\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1)\n\t\t\t\t\tapijs.dialog.add('playing');\n\t\t\t\telse\n\t\t\t\t\tthis.video.parentNode.classList.add('playing');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onWaiting = function (ev) { // todo\n\t\tapijs.log('player:video:onWaiting:' + ev.type + ' stalled:' + this.stalled + '/subload:' + this.subload);\n\t\tapijs.dialog[['loadstart', 'waiting', 'seeking', 'stalled'].has(ev.type) ? 'add' : 'remove']('loading');\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionPlay = function () {\n\n\t\tvar video = this.video;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\t\t\tif (video.ended || video.paused)\n\t\t\t\tvideo.play();\n\t\t\telse\n\t\t\t\tvideo.pause();\n\t\t}\n\t};\n\n\tthis.actionVolume = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.vol'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\n\t\t\tif ((typeof ev == 'object') && !isNaN(ev.clientX)) {\n\n\t\t\t\tdo { value += elem.offsetLeft; }\n\t\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\t\tvalue = ((ev.clientX - value) * 100 / width) / 100;\n\t\t\t\tvalue = (value <= 0.1) ? 0 : ((value > 0.92) ? 1 : value);\n\n\t\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t\t//\tvalue = 1 - value;\n\n\t\t\t\tvideo.volume = value;\n\t\t\t\tvideo.muted = false;\n\t\t\t}\n\n\t\t\tthis.html('svg.vol rect').style.width = video.muted ? 0 : (video.volume * 100) + '%';\n\t\t}\n\t};\n\n\tthis.actionPosition = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif (([1,2].has(video.networkState)) && (video.duration !== Infinity) && !isNaN(video.duration) && (typeof ev == 'object')) {\n\n\t\t\tdo { value += elem.offsetLeft; }\n\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\tvalue = (video.duration * (ev.clientX - value) * 100 / width) / 100;\n\t\t\tvalue = (value <= 1) ? 0 : value;\n\n\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t//\tvalue = video.duration - value;\n\n\t\t\tvideo.currentTime = value;\n\t\t}\n\t};\n\n\tthis.actionVideotrack = function (ev) {\n\n\t\tvar tracks = this.video.videoTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionAudiotrack = function (ev) {\n\n\t\tvar tracks = this.video.audioTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionTexttrack = function (ev) {\n\n\t\tvar tracks = this.video.textTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].mode = (idx == value) ? 'showing' : 'hidden';\n\n\t\t\tthis.subload = true;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionVideo = function (ev) {\n\n\t\tthis.html('svg.bar rect').style.width = '0';\n\t\tthis.html('svg.bar').querySelectorAll('.buffer').forEach(function (node) { node.remove(); });\n\t\tthis.html('span.play').textContent = '\\uE810';\n\n\t\tthis.updateSelect('videotrack', 0);\n\t\tthis.updateSelect('audiotrack', 0);\n\n\t\tthis.video.src = this.video.querySelectorAll('source')[(typeof ev == 'object') ? ev.target.value : ev].src;\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionFullscreen = function () {\n\n\t\t// en direct\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tthis.video.parentNode.classList[res ? 'add' : 'remove']('fullscreen');\n\t},\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return domelement)\n\n\tthis.htmlSvgPlayer = function () {\n\n\t\tvar d, c, b, a = document.createElement('div');\n\t\ta.setAttribute('class', 'apijsplayer noplaying');\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn play fnt');\n\t\t\tb.appendChild(document.createTextNode('\\uE810'));\n\t\t\tb.onclick = this.actionPlay.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg bar');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'bar');\n\t\t\t\tc.onclick = this.actionPosition.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'time');\n\t\t\tb.appendChild(document.createTextNode('--:--'));\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg vol nomobile');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'vol');\n\t\t\t\tc.onclick = this.actionVolume.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks audiotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(133));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionAudiotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks videotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(132));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks video');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(131));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideo.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks texttrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(134));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionTexttrack.bind(this);\n\n\t\t\t\t\td = document.createElement('option');\n\t\t\t\t\td.appendChild(apijs.i18n.translateNode(135)); // off\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn full fnt nomobile');\n\t\t\tb.appendChild(document.createTextNode('\\uE80F'));\n\t\t\tb.onclick = function () {\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1) {\n\t\t\t\t\tapijs.requestFullscreen(apijs.dialog.t1);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('fullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\tapijs.requestFullscreen(this.video.parentNode);\n\t\t\t\t}\n\n\t\t\t}.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlTrack = function (data) { // todo\n\n\t\tvar a = document.createElement('track');\n\t\ta.setAttribute('kind', data[1]);\n\t\ta.setAttribute('label', data[2]);\n\t\ta.setAttribute('srclang', data[3]);\n\t\ta.setAttribute('src', data[4]);\n\n\t\ta.onload = function (ev) {\n\t\t\tapijs.log('player:track:onload ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\ta.onerror = function (ev) {\n\t\t\tapijs.log('player:track:onerror ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlSource = function (url) {\n\n\t\tvar a = document.createElement('source');\n\t\ta.setAttribute('src', url);\n\t\ta.onerror = apijs.dialog.onMediaLoad;\n\n\t\treturn a;\n\t};\n\n\tthis.htmlOption = function (idx, txt) {\n\n\t\tif (typeof txt == 'object')\n\t\t\ttxt = (txt.label === '') ? txt.language.toLowerCase() : txt.language.toLowerCase() + ' - ' + txt.label;\n\n\t\tvar a = document.createElement('option');\n\t\ta.setAttribute('value', idx);\n\t\ta.appendChild(document.createTextNode(txt));\n\n\t\treturn a;\n\t};\n\n\n\tthis.autoRun(video, url);\n};","/**\n * Created J/13/05/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.slideshow = function () {\n\n\t\"use strict\";\n\tthis.current = null;\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return void|boolean)\n\n\tthis.init = function () {\n\n\t\tvar i, j, elem, ids = apijs.config.slideshow.ids, hoverload = false;\n\n\t\tfor (i = 0; elem = apijs.html(ids + '.' + i, true); i++) {\n\n\t\t\thoverload = elem.classList.contains('hoverload');\n\n\t\t\tfor (j = 0; elem = apijs.html(ids + '.' + i + '.' + j, true); j++) {\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t\t\tif (hoverload)\n\t\t\t\t\telem.addEventListener('mouseover', this.show);\n\t\t\t}\n\n\t\t\tif (elem = apijs.html(ids + '.' + i + '.99999', true))\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t}\n\n\t\tthis.onPopState();\n\t};\n\n\tthis.onPopState = function () {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href)) {\n\t\t\tvar id = RegExp.$1.replace(/-/g, '.');\n\t\t\tif (apijs.html(id, true) && !apijs.dialog.has('slideshow')) // Chrome 31 et Opera 19 passent 2 fois sans le !has\n\t\t\t\tapijs.slideshow.show(id, false);\n\t\t}\n\t\telse if (apijs.slideshow.current) {\n\t\t\tapijs.dialog.actionClose();\n\t\t}\n\t};\n\n\tthis.show = function (ev, push) { // todo\n\n\t\tvar source, show = false, media = {}, src, srcset, total, hash;\n\n\t\t// recherche de la source (élément a)\n\t\t// recherche des informations du média (1/4, id)\n\t\t// la source est soit une miniature (ev=click/mouseover/stringId) soit l'image principale (ev=click)\n\t\tif (typeof ev == 'string') {\n\t\t\tshow = true;\n\t\t\tsource = apijs.html(ev, true);\n\t\t\tmedia.id = ev;\n\t\t}\n\t\telse {\n\t\t\tev.preventDefault();\n\t\t\tsource = ev.target;\n\t\t\twhile (source.nodeName !== 'A')\n\t\t\t\tsource = source.parentNode;\n\n\t\t\t// stop sur miniature déjà à jour en mode gallery\n\t\t\tif ((ev.type === 'mouseover') && source.classList.contains('current'))\n\t\t\t\treturn false;\n\n\t\t\tmedia.id = source.getAttribute('id');\n\t\t}\n\n\t\t// recherche des informations du média (2/4, prefix|number|gallery)\n\t\tmedia.prefix = apijs.config.slideshow.ids + '.' + media.id.split('.')[1];\n\t\tmedia.number = parseInt(media.id.split('.')[2], 10);\n\t\tmedia.gallery = apijs.html(media.prefix + '.99999', true);\n\n\t\t// SI SOURCE N'EST PAS L'IMAGE PRINCIPALE DU MODE GALLERY\n\t\t// marque la source avec la class current\n\t\t// prend soin de supprimer les anciennes class current\n\t\t// v5.1 soit sur le lien (avant sur l'image elle même), soit sur le dl\n\t\tif (media.number !== 99999) {\n\n\t\t\tvar links = apijs.html(media.prefix, true).querySelectorAll('a[id][type]'),\n\t\t\t conts = apijs.html(media.prefix, true).querySelectorAll('dl');\n\n\t\t\tif (media.gallery || (links.length !== conts.length)) {\n\t\t\t\tlinks.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.setAttribute('class', 'current');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconts.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.parentNode.parentNode.setAttribute('class', 'current');\n\t\t\t}\n\t\t}\n\n\t\t// UNIQUEMENT EN MODE GALLERY\n\t\t// recherche des informations du média (3/4, [number]|config)\n\t\t// réaffecte la source sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// réaffecte le numéro du média sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// supprime l'adresse de l'image principale de la configuration du média (media.config = url|name|date|legend)\n\t\t// met à jour l'image principale SAUF SI SOURCE = IMAGE PRINCIPALE (puisque tout est déjà correct)\n\t\tif (media.gallery) {\n\n\t\t\tif (media.number === 99999) {\n\t\t\t\tshow = true;\n\t\t\t\tsource = (media.gallery.hasAttribute('class')) ? media.gallery.getAttribute('class') : media.prefix + '.0';\n\t\t\t\tsource = apijs.html(source, true);\n\t\t\t\tmedia.number = parseInt(source.getAttribute('id').split('.')[2], 10);\n\t\t\t\tmedia.id = media.id.replace(99999, media.number);\n\t\t\t}\n\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\n\t\t\tsrc = media.config.shift();\n\t\t\tif (src.indexOf(';') > 0) {\n\t\t\t\tsrc = src.split(';');\n\t\t\t\tsrcset = src[1].trim();\n\t\t\t\tsrc = src[0].trim();\n\t\t\t}\n\n\t\t\tmedia.gallery.setAttribute('href', source.getAttribute('href'));\n\t\t\tmedia.gallery.querySelector('img').setAttribute('src', src);\n\t\t\tmedia.gallery.querySelector('img').setAttribute('srcset', srcset ? srcset : '');\n\t\t\tmedia.gallery.querySelector('img').setAttribute('alt', source.querySelector('img').getAttribute('alt'));\n\t\t\tmedia.gallery.setAttribute('class', media.id);\n\t\t}\n\t\t// UNIQUEMENT EN MODE ALBUM\n\t\t// recherche des informations du média (3/4, config)\n\t\telse {\n\t\t\tshow = true;\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\t\t}\n\n\t\t// recherche des informations du média (4/4, url|type|styles)\n\t\t// défini le type de dialogue à partir du mimetype du lien de la source si cela est possible\n\t\tmedia.url = source.getAttribute('href');\n\t\tmedia.type = source.getAttribute('type').substr(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo');\n\t\tmedia.type = (media.type.indexOf('dialog') === 0) ? media.type : 'dialogPhoto';\n\t\tmedia.styles = apijs.html(media.prefix, true).getAttribute('class').replace(/gallery|album/g, '').trim();\n\n\t\t// demande l'affichage du dialogue\n\t\t// lors d'un clic sur l'image principale du mode gallery\n\t\t// ou lors d'un clic sur les miniatures en mode album\n\t\t// ou lors d'un appel direct\n\t\tif (show) {\n\n\t\t\tapijs.dialog[media.type](media.url, media.config[0], media.config[1], media.config[2], media.styles);\n\n\t\t\ttotal = apijs.html(media.prefix, true).querySelectorAll('a[id][type]').length - (media.gallery ? 2 : 1);\n\t\t\tapijs.slideshow.current = {\n\t\t\t\tnumber: media.number,\n\t\t\t\tfirst: media.prefix + '.0',\n\t\t\t\tprev: (media.number > 0) ? media.prefix + '.' + (media.number - 1) : null,\n\t\t\t\tnext: (media.number < total) ? media.prefix + '.' + (media.number + 1) : null,\n\t\t\t\tlast: media.prefix + '.' + total,\n\t\t\t\ttotal: total\n\t\t\t};\n\n\t\t\t// boutons précédent et suivant\n\t\t\tif (apijs.slideshow.current.prev)\n\t\t\t\tapijs.html('#Prev').removeAttribute('disabled');\n\t\t\tif (apijs.slideshow.current.next)\n\t\t\t\tapijs.html('#Next').removeAttribute('disabled');\n\n\t\t\t// gestion de l'historique\n\t\t\t// met à jour l'ancre uniquement si l'utilisateur ne joue pas avec son historique\n\t\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function') && ((typeof push == 'boolean') ? push : true)) {\n\t\t\t\thash = self.location.href;\n\t\t\t\thash = (hash.indexOf('#') > 0) ? hash.slice(0, hash.indexOf('#')) : hash;\n\t\t\t\thash += '#' + (media.prefix + '.' + ((media.number === 99999) ? 0 : media.number)).replace(/\\./g,'-');\n\t\t\t\thistory.pushState({}, '', hash);\n\t\t\t}\n\t\t}\n\n\t\treturn show;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (public return boolean)\n\n\tthis.actionFirst = function () {\n\n\t\tif (this.current && (this.current.number > 0) && (this.current.number <= this.current.total))\n\t\t\treturn this.show(this.current.first);\n\n\t\treturn false;\n\t};\n\n\tthis.actionPrev = function () {\n\n\t\tif (this.current && this.current.prev && (this.current.number > 0))\n\t\t\treturn this.show(this.current.prev);\n\n\t\treturn false;\n\t};\n\n\tthis.actionNext = function () {\n\n\t\tif (this.current && this.current.next && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.next);\n\n\t\treturn false;\n\t};\n\n\tthis.actionLast = function () {\n\n\t\tif (this.current && (this.current.number >= 0) && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.last);\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/13/04/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.upload = function () {\n\n\t\"use strict\";\n\tthis.title = null;\n\tthis.action = null;\n\tthis.input = null;\n\tthis.onemax = 0; // taille d'un seul fichier\n\tthis.allmax = 0; // taille de tous les fichiers\n\tthis.exts = null;\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.icon = null;\n\n\tthis.files = [];\n\tthis.start = 0; // time\n\tthis.end = 0; // time\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return boolean)\n\n\tthis.sendFile = function (title, action, input, onemax, exts, callback, args, icon) {\n\n\t\tvar res = this.sendFiles(title, action, input, onemax, 0, exts, callback, args, icon);\n\t\tif (!res) console.error('apijs.upload.sendFile invalid arguments', arguments);\n\n\t\treturn res;\n\t};\n\n\tthis.sendFiles = function (title, action, input, onemax, allmax, exts, callback, args, icon) {\n\n\t\tthis.files = [];\n\t\tif (title !== true) {\n\t\t\tthis.title = title;\n\t\t\tthis.action = action;\n\t\t\tthis.input = input;\n\t\t\tthis.onemax = onemax;\n\t\t\tthis.allmax = allmax;\n\t\t\tthis.exts = (typeof exts == 'string') ? exts.split(',') : ['*'];\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tif ((typeof this.title == 'string') && (typeof this.action == 'string') && (typeof this.input == 'string') &&\n\t\t (typeof this.onemax == 'number') && (typeof this.allmax == 'number') && (typeof this.callback == 'function')) {\n\n\t\t\tvar text, multiple = this.allmax > 0;\n\n\t\t\tif (this.exts.join() === '*')\n\t\t\t\ttext = apijs.i18n.translate(161);\n\t\t\telse if (this.exts.length === 1)\n\t\t\t\ttext = apijs.i18n.translate(162, this.exts.join());\n\t\t\telse\n\t\t\t\ttext = apijs.i18n.translate(163, this.exts.slice(0, -1).join(', '), this.exts.slice(-1));\n\n\t\t\ttext += '[br]' + apijs.i18n.translate(\n\t\t\t\tmultiple ? 165 : 164, // clef de traduction\n\t\t\t\tapijs.formatNumber(this.onemax), // taille d'un fichier\n\t\t\t\tmultiple ? apijs.formatNumber(this.allmax) : '' // taille de tous les fichiers\n\t\t\t).replace('|', '[br]');\n\n\t\t\treturn apijs.dialog.dialogFormUpload(this.title, text, this.action, this.input, multiple, this.icon);\n\t\t}\n\n\t\tif ((typeof this.allmax != 'number') || (this.allmax > 0))\n\t\t\tconsole.error('apijs.upload.sendFiles invalid arguments', arguments);\n\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionDrag = function (ev) {\n\n\t\tif (ev.type == 'dragenter') {\n\t\t\tapijs.dialog.add('drag');\n\t\t}\n\t\telse if (ev.type == 'dragleave') {\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\t\t\tthis.actionChoose(ev.dataTransfer);\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\n\t\tev.stopPropagation();\n\t\tev.preventDefault();\n\t};\n\n\tthis.actionChoose = function (elem) {\n\n\t\tvar html = [], size = 0, error = false, btn = apijs.html('button.confirm'), text;\n\t\tthis.files = [];\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\tArray.prototype.forEach.call((this.allmax > 0) ? elem.files : Array.prototype.slice.call(elem.files, 0, 1), function (file, idx) {\n\n\t\t\t\ttext = file.size / 1048576;\n\t\t\t\ttext = apijs.formatNumber((text < 0.01) ? 0.01 : text);\n\t\t\t\ttext = ((this.allmax > 0) ? '<td class=\"nb\">' + (idx + 1) + '</td>' : '') +\n\t\t\t\t\t'<td class=\"name\">' + file.name + '</td><td class=\"size\">' + apijs.i18n.translate(166, text) + '</td>';\n\n\t\t\t\tif ((this.exts.join() !== '*') && !this.exts.has(file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase())) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(167) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(168) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(169) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttext += '<td></td>';\n\t\t\t\t\tthis.files.push(file);\n\t\t\t\t}\n\n\t\t\t\thtml.push('<tr>' + text + '</tr>');\n\t\t\t\tsize += file.size / 1048576;\n\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// multiple\n\t\t\tif ((this.allmax > 0) && (size >= this.allmax)) {\n\t\t\t\thtml.push('<tr class=\"tt\"><td></td><td></td><td class=\"size\">' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '</td><td class=\"err\">' + apijs.i18n.translate(168) + '</td></tr>');\n\t\t\t\terror = true;\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tif (error) {\n\t\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtn.removeAttribute('disabled');\n\t\t\t\tbtn.focus();\n\t\t\t}\n\n\t\t\tapijs.html('div.filenames').innerHTML = '<table>' + html.join('') + '</table>';\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (this.files.length > 0) {\n\n\t\t\tvar form = new FormData(), xhr = new XMLHttpRequest(), tmp;\n\t\t\txhr.open('POST', this.action + ((this.action.indexOf('?') > 0) ? '&isAjax=true' : '?isAjax=true'), true);\n\n\t\t\t// token\n\t\t\tif (typeof apijs.config.upload.tokenValue == 'string') {\n\t\t\t\txhr.setRequestHeader(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t\tform.append(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t}\n\n\t\t\t// champs supplémentaires\n\t\t\ttmp = apijs.serialize(apijs.dialog.t2);\n\t\t\tif (tmp.length > 3) {\n\t\t\t\ttmp.split('&').forEach(function (data) {\n\t\t\t\t\tdata = data.split('=');\n\t\t\t\t\tform.append(data[0], data[1]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// fichier(s)\n\t\t\tthis.files.forEach(function (file, idx, files) {\n\t\t\t\tform.append(((files.length > 1) && (this.input.indexOf('[') < 0)) ? this.input + '_' + idx : this.input, file);\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=637002\n\t\t\t// https://stackoverflow.com/a/15491086\n\t\t\t// loadstart - When the request starts\n\t\t\t// progress - While sending and loading data\n\t\t\t// load - When the request has successfully completed even if the server hasn't responded that it finished\n\t\t\t// loadend - When the request has completed even if the server hasn't responded that it finished processing the request\n\t\t\t// error - When the request has failed\n\t\t\t// abort - When the request has been aborted (by invoking the abort method)\n\t\t\t// timeout - When the author specified timeout has passed before the request could complete\n\t\t\txhr.onreadystatechange = function (text) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttext = xhr.responseText.trim();\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijs.upload.send', xhr: xhr } }));\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:200 message:' + text);\n\t\t\t\t\t\tif (text.indexOf('success-') === 0) {\n\t\t\t\t\t\t\tthis.updateTitle();\n\t\t\t\t\t\t\tthis.callback(text.slice(8), this.args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.onError(195, text);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:' + xhr.status + ' message: ' + text);\n\t\t\t\t\t\tthis.onError(194, xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\n\t\t\txhr.upload.onloadstart = this.onStart.bind(this);\n\t\t\txhr.upload.onprogress = this.onProgress.bind(this);\n\t\t\txhr.upload.onload = this.onProgress.bind(this);\n\t\t\txhr.upload.onerror = this.onError.bind(this);\n\t\t\txhr.send(form);\n\t\t}\n\t\telse {\n\t\t\tapijs.html('button.browse').focus();\n\t\t}\n\n\t\treturn false; // très important\n\t};\n\n\tthis.onStart = function () {\n\n\t\tthis.start = this.end = Math.round(new Date().getTime() / 1000);\n\t\tapijs.dialog.dialogProgress(this.title, apijs.i18n.translate(125), this.icon);\n\t};\n\n\tthis.onError = function (key, txt) {\n\n\t\tthis.updateTitle();\n\n\t\tif (typeof key == 'number')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(key) + '[/p] ' + txt;\n\t\telse if (typeof txt != 'string')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(193) + '[/p]';\n\n\t\ttxt += '[p]' + apijs.i18n.translate(196, 'href=\"apijs://restart\" onclick=\"apijs.upload.sendFile(true); return false;\"') + '[/p]';\n\t\tapijs.dialog.dialogInformation(this.title, txt, (typeof this.icon == 'string') ? 'upload error ' + this.icon : 'upload error');\n\t};\n\n\tthis.onProgress = function (ev) {\n\n\t\tvar percent, key, rate, time, elapsedTime, totalTime, currentTime = Math.round(new Date().getTime() / 1000), mins;\n\n\t\t// Cherche à actualiser la barre de progression toutes les 2 secondes (uniquement de 1 à 99%)\n\t\t// affiche le pourcentage, la vitesse à partir de 25 secondes, le temps restant à partir de 40 secondes ET 90 secondes de temps total\n\t\tif (ev.lengthComputable && (ev.type === 'progress') && (currentTime >= (this.end + 2))) {\n\n\t\t\tthis.end = currentTime;\n\n\t\t\t// Math.floor = entier inférieur, Math.ceil = entier supérieur, Math.round = au mieux\n\t\t\t// ev.loaded = nombre d'octet envoyé sur le serveur\n\t\t\t// ev.total = nombre d'octet à envoyer sur le serveur\n\t\t\t// pourcentage = nombre d'octet envoyé * 100 / nombre d'octet à envoyer\n\t\t\tpercent = Math.floor((ev.loaded * 100) / ev.total);\n\n\t\t\tif ((percent > 0) && (percent < 100)) {\n\n\t\t\t\tthis.updateTitle(percent);\n\n\t\t\t\t// temps écoulé = maintenant - départ\n\t\t\t\t// temps total = temps écoulé * 100 / pourcentage + 10 secondes\n\t\t\t\telapsedTime = currentTime - this.start;\n\t\t\t\ttotalTime = elapsedTime * 100 / percent + 10;\n\n\t\t\t\tif (elapsedTime > 24) {\n\n\t\t\t\t\t// temps restant = temps total - temps écoulé\n\t\t\t\t\ttime = Math.round(totalTime - elapsedTime);\n\t\t\t\t\ttime = Math.ceil(time / 10) * 10;\n\t\t\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t\t\t// vitesse = taille téléchargé / temps écoulé / 1024\n\t\t\t\t\trate = Math.round(ev.loaded / elapsedTime / 1024);\n\n\t\t\t\t\tif ((elapsedTime < 40) || (totalTime < 90)) { key = 184; time = null; } // \"§% - § ko/s\"\n\t\t\t\t\telse if (mins > 1) { key = 181; time = mins; } // \"§% - § ko/s - § minutes restantes\"\n\t\t\t\t\telse if (time > 50) { key = 182; time = 1; } // \"§% - § ko/s - § minute restante\"\n\t\t\t\t\telse { key = 183; } // \"§% - § ko/s - § secondes restantes\"\n\t\t\t\t}\n\n\t\t\t\tthis.updateProgress(percent, key, rate, time);\n\t\t\t}\n\t\t}\n\t\t// Cherche à actualiser la barre de progression lorsque l'envoi du fichier est terminé (donc à 100%)\n\t\t// affiche le pourcentage, le temps total à partir de 20 secondes, la vitesse si possible\n\t\telse if (ev.type === 'load') {\n\n\t\t\t// temps total = temps actuel - temps du départ\n\t\t\ttime = Math.round(new Date().getTime() / 1000) - this.start;\n\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t// vitesse = taille total / temps total / 1024\n\t\t\trate = Math.round(ev.loaded / time / 1024);\n\n\t\t\tif ((rate > 0) && (rate !== Infinity)) {\n\t\t\t\tif (mins > 1) { key = 185; time = mins; } // \"§% - à § ko/s en § minutes\"\n\t\t\t\telse if (time > 50) { key = 186; time = 1; } // \"§% - à § ko/s en § minute\"\n\t\t\t\telse if (time > 20) { key = 187; } // \"§% - à § ko/s en § secondes\"\n\t\t\t\telse { key = 188; time = null; } // \"§% - à § ko/s\"\n\t\t\t}\n\t\t\telse {\n\t\t\t\trate = null; time = null; // 100%\n\t\t\t}\n\n\t\t\tthis.updateTitle(100);\n\t\t\tthis.updateProgress(100, key, rate, time);\n\t\t}\n\t};\n\n\tthis.updateProgress = function (percent, key, rate, time) {\n\n\t\tvar rect = apijs.html('rect'), text = apijs.html('span.info'), data;\n\n\t\tif (percent > 99) {\n\t\t\tdata = '100%';\n\t\t\trect.setAttribute('class', 'end');\n\t\t\trect.style.width = '';\n\t\t\tvar elem = apijs.html('p');\n\t\t\telem.setAttribute('data-old', elem.textContent);\n\t\t\telem.setAttribute('data-new', apijs.i18n.translate(126));\n\t\t\telem.setAttribute('class', 'anim');\n\t\t\telem.textContent = '';\n\t\t}\n\t\telse {\n\t\t\trect.style.width = data = percent + '%';\n\t\t\tif (rect.hasAttribute('class'))\n\t\t\t\trect.removeAttribute('class');\n\t\t}\n\n\t\tif ((typeof key == 'number') && (typeof rate == 'number') && (typeof time == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false), time);\n\t\telse if ((typeof key == 'number') && (typeof rate == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false));\n\n\t\ttext.textContent = data;\n\t};\n\n\tthis.updateTitle = function (percent) {\n\n\t\tif (typeof percent == 'number') {\n\t\t\tdocument.title = (/^\\d{1,3}% - /.test(document.title)) ?\n\t\t\t\tpercent + '% - ' + document.title.slice(document.title.indexOf(' - ') + 3) : percent + '% - ' + document.title;\n\t\t}\n\t\telse if (/^\\d{1,3}% - /.test(document.title)) {\n\t\t\tdocument.title = document.title.slice(document.title.indexOf(' - ') + 3);\n\t\t}\n\t};\n};"],"names":["Array","prototype","has","needle","key","hasOwnProperty","this","window","NodeList","forEach","callback","that","i","length","call","apijs","core","version","config","lang","debug","dialog","closeOnClick","restrictNavigation","player","slideshow","ids","anchor","upload","tokenName","tokenValue","start","elem","console","info","toString","split","join","document","getElementById","Error","querySelector","getAttribute","indexOf","error","i18n","self","dispatchEvent","CustomEvent","init","querySelectorAll","startPlayer","addEventListener","onPopState","Object","keys","data","formatNumber","nb","dec","str","dgt","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","ignore","toFixed","replace","url","videoPlayer","parentNode","classList","add","toArray","slice","openTab","ev","preventDefault","href","open","log","txt","html","selector","id","t1","requestFullscreen","webkitFullscreenElement","webkitCancelFullScreen","mozFullScreenElement","mozCancelFullScreen","fullscreenElement","cancelFullScreen","webkitRequestFullscreen","mozRequestFullScreen","serialize","form","filter","elements","idx","name","disabled","type","options","selected","push","encodeURIComponent","value","checked","bind","cs","103","104","105","106","107","132","133","134","142","144","146","149","150","de","108","109","124","143","145","147","148","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","en","102","125","126","127","131","135","141","165","166","184","es","fr","it","ja","nl","pl","pt","ptbr","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","klass","height","scroll","args","xhr","ft","ti","ns","media","t0","t2","a","b","c","d","dialogInformation","title","text","icon","htmlParent","htmlContent","htmlBtnOk","show","dialogConfirmation","htmlBtnConfirm","dialogFormOptions","action","dialogFormUpload","input","multiple","htmlUpload","dialogProgress","htmlSvgProgress","dialogWaiting","htmlSvgLoader","dialogPhoto","date","legend","htmlMedia","htmlHelp","htmlBtnClose","htmlBtnNavigation","dialogVideo","dialogIframe","close","htmlIframe","dialogAjax","XMLHttpRequest","onreadystatechange","readyState","remove","send","update","setAttribute","css","splice","toggle","search","actionClose","history","pushState","RegExp","test","location","target","clear","onCloseBrowser","stopPropagation","m","returnValue","onResizeBrowser","body","clientWidth","onScrollBrowser","brk","nodeName","Date","getTime","detail","wheelDelta","contains","scrollTop","scrollHeight","offsetHeight","onScrollIframe","defaultView","innerHeight","pageYOffset","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","networkState","ended","paused","play","pause","duration","Infinity","isNaN","currentTime","muted","volume","onFullscreen","res","onIframeLoad","removeAttribute","contentWindow","parent","passive","onMediaLoad","src","elems","currentSrc","lastIndexOf","style","visibility","hasAttribute","imageLoader","selectedIndex","actionVideo","actionConfirm","setTimeout","isLocked","trim","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","appendChild","firstChild","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","isAll","abort","removeEventListener","parseFloat","getComputedStyle","submit","drag","createElement","innerHTML","click","isMultiple","isDelayed","createElementNS","fileid","Image","onload","onerror","ondurationchange","isSlideshow","isVideo","items","item","shift","video","stalled","subload","autoRun","onloadedmetadata","onTimeupdate","onProgress","onVideotrack","onAudiotrack","onstalled","onWaiting","onplaying","onPlay","onpause","onended","onprogress","ontimeupdate","onseeking","onseeked","onwaiting","onloadstart","oncanplay","onclick","actionPlay","onvolumechange","actionVolume","htmlSvgPlayer","htmlSource","from","childNodes","status","nbv","nbt","responseText","htmlOption","htmlTrack","updateSelect","textTracks","total","adjust","textContent","tracks","videoTracks","select","auto","language","Math","max","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","floor","width","buffer","buffered","node","end","offsetWidth","clientX","offsetLeft","offsetParent","actionPosition","enabled","blur","actionTexttrack","mode","actionFullscreen","onchange","track","label","current","j","hoverload","$1","source","conts","prefix","number","parseInt","gallery","links","srcset","substr","styles","first","prev","next","last","hash","onemax","allmax","exts","files","sendFile","sendFiles","actionDrag","dataTransfer","actionChoose","size","btn","file","tmp","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","elapsedTime","mins","lengthComputable","loaded","totalTime","ceil","updateProgress","rect"],"mappings":"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"}
|
data/assets/javascripts/app.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Created D/15/12/2013
|
|
3
|
-
* Updated
|
|
3
|
+
* Updated D/09/05/2021
|
|
4
4
|
*
|
|
5
5
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
6
6
|
* https://www.luigifab.fr/redmine/apijs
|
|
@@ -276,11 +276,11 @@ var apijsRedmine = new (function () {
|
|
|
276
276
|
|
|
277
277
|
// supprime le fichier de la page grâce à son id
|
|
278
278
|
var attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;
|
|
279
|
-
|
|
279
|
+
attachment.remove();
|
|
280
280
|
|
|
281
281
|
// supprime la liste des fichiers
|
|
282
282
|
if (elems.querySelectorAll('dl, li').length < 1) {
|
|
283
|
-
elems.
|
|
283
|
+
elems.remove();
|
|
284
284
|
}
|
|
285
285
|
// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)
|
|
286
286
|
else {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/apijs - 6.
|
|
3
|
+
* https://www.luigifab.fr/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../tmp/XHvw6N","../styles/print.css"],"names":[],"mappings":"AAAA;;;;;;ACmBa,UAAb,YAAyB,UAAU,MAClB,cAAjB,gBAAiC,QAAQ,MAAO,OAAO,KAAM,SAAS,OAAQ,MAAM,YACrB,kBAAzC,mBAAoB,oBAA1C,qBAAmF,QAAQ,KAE3F,YAAc,QAAQ,aACtB,cAAgB,QAAQ,aAAc,gBAAgB,KACtD,eAAiB,OAAO,EAAG,QAAQ,EAAG,WAAW,KACjD,eAAiB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,eAAe,OAC3E,iBAAmB,QAAQ,MAAO,OAAO,KACzC,yBAA2B,aAAa,KAExC,UAAY,WAAW,OACvB,aAAe,QAAQ,aAAc,OAAO,KAAM,KAAO,eAAe,IACxE,eAAiB,QAAQ,MAAO,gBAAgB,KAChD,aAAe,OAAO,KAAM,EAAE,EAE9B,aAAe,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created J/20/06/2013\n * Updated L/08/07/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery, div.album { font-size:0.85em; }\ndiv.gallery img, div.album img { display:block; margin:auto; overflow:hidden; color:transparent; }\ndiv.gallery a:before, div.album a:before, div.gallery a:after, div.album a:after { display:none; }\n\ndiv.gallery { display:inline-block; }\ndiv.gallery a { display:inline-block; text-decoration:none; }\ndiv.gallery ul { margin:0; padding:0; list-style:none; }\ndiv.gallery li { display:inline-block; margin:0; padding:0; vertical-align:middle; }\ndiv.gallery li a { display:block; margin:0.2em; }\ndiv.gallery li a.current { border-color:gray; }\n\ndiv.album { text-align:center; }\ndiv.album dl { display:inline-block; margin:0.5em 0.4em; vertical-align:top; }\ndiv.album dt a { display:block; text-decoration:none; }\ndiv.album dd { margin:0.4em 0 0; }\n\n#apijsDialog { display:none; }"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/redmine/apijs
|
|
3
|
+
* https://www.luigifab.fr/redmine/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
7
|
#apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox button{height:auto}#apijsBox.options.editattach input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:right}body div.attachments.album dd{position:relative;margin:.5em 0 0 0;width:202px;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:left}body div.attachments.album dd span.author{clear:both}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-left:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;margin:0;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url("../../../images/magnifier.png")}body button.attachment.download{background-image:url("../../../images/attachment.png")}body button.attachment.delete{background-image:url("../../../images/delete.png")}body button.attachment.rename{background-image:url("../../../images/wiki_edit.png")}body button.attachment.edit{background-image:url("../../../images/edit.png")}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-right:1px;margin-left:.7em;width:auto;min-width:5.5em;text-align:right}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
|
|
8
|
-
/*# sourceMappingURL=
|
|
8
|
+
/*# sourceMappingURL=apijs-redmine-rtl.min.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../tmp/ZxShYX","styles-rtl.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,MACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,KAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,YAAY,KAE7D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,aAAa,IAAK,YAAY,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,MAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:right; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:left; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-left:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-right:1px; margin-left:0.7em; width:auto; min-width:5.5em; text-align:right; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/redmine/apijs
|
|
3
|
+
* https://www.luigifab.fr/redmine/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
7
|
#apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox button{height:auto}#apijsBox.options.editattach input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:left}body div.attachments.album dd{position:relative;margin:.5em 0 0 0;width:202px;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:right}body div.attachments.album dd span.author{clear:both}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-right:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;margin:0;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url("../../../images/magnifier.png")}body button.attachment.download{background-image:url("../../../images/attachment.png")}body button.attachment.delete{background-image:url("../../../images/delete.png")}body button.attachment.rename{background-image:url("../../../images/wiki_edit.png")}body button.attachment.edit{background-image:url("../../../images/edit.png")}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-left:1px;margin-right:.7em;width:auto;min-width:5.5em;text-align:left}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
|
|
8
|
-
/*# sourceMappingURL=
|
|
8
|
+
/*# sourceMappingURL=apijs-redmine.min.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../tmp/blNRk1","styles.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,KACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,MAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,aAAa,KAE9D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,YAAY,IAAK,aAAa,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,KAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:left; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:right; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-right:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-left:1px; margin-right:0.7em; width:auto; min-width:5.5em; text-align:left; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/apijs - 6.
|
|
3
|
+
* https://www.luigifab.fr/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
|
-
div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;text-align:center;direction:rtl;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:right;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;left:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;right:0;display:block;background:#03ff00 repeating-linear-gradient(45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;left:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{left:0;bottom:calc(50% - 64px);right:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{left:0;bottom:calc(50% - 64px);right:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;left:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;left:inherit;right:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:right;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;left:-2px;padding:0 3em 3em 0;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 .8em 0;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-right:2px solid #fff}#apijsBox div.navigation button.prev{right:0}#apijsBox div.navigation button.prev span{transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox div.navigation button.next{left:0}#apijsBox div.navigation button.next span{transform:rotate(225deg);-webkit-transform:rotate(225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-left:.4em}#apijsBox kbd{margin-left:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;right:.5em;left:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny div.apijsplayer label{position:initial}#apijsBox.tiny div.apijsplayer label select{right:0;left:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:right;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:right}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(-400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{right:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}
|
|
7
|
+
div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;text-align:center;direction:rtl;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsDialog.reduce,#apijsDialog.reduce *{transition:none!important}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:right;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;right:.5em;left:.5em;width:auto;min-height:inherit}#apijsBox.tiny div.navigation button{padding:0 1em}#apijsDialog.drag:before{position:absolute;top:1em;left:1em;bottom:1em;right:1em;content:"";border:2px dashed #fff}#apijsDialog p.drag{position:absolute;left:0;bottom:0;margin:1.5em;font-size:1.3em;color:#fff}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress p.anim:before{content:attr(data-old);-webkit-animation:apijsReplace 1s linear 2s forwards;animation:apijsReplace 1s linear 2s forwards}#apijsBox.progress span.info{position:absolute;left:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;right:0;display:block;background:#03ff00 repeating-linear-gradient(45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;left:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{left:0;bottom:calc(50% - 64px);right:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{left:0;bottom:calc(50% - 64px);right:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;left:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;left:inherit;right:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{max-height:11em;overflow-y:auto}#apijsBox div.btns.upload table{border-spacing:0}#apijsBox div.btns.upload td+td{padding-right:.6em}#apijsBox div.btns.upload td.nb{font-size:.85em;color:#676767}#apijsBox div.btns.upload td.size{color:#676767}#apijsBox div.btns.upload td.err{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:right;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{z-index:50;outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;left:-2px;padding:0 3em 3em 0;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 .8em 0;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-right:2px solid #fff}#apijsBox div.navigation button.prev{right:0}#apijsBox div.navigation button.prev span{transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox div.navigation button.next{left:0}#apijsBox div.navigation button.next span{transform:rotate(225deg);-webkit-transform:rotate(225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-left:.4em}#apijsBox kbd{margin-left:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:right;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:right}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(-400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{right:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}@keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}@-webkit-keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}
|
|
8
8
|
/*# sourceMappingURL=apijs-screen-rtl.min.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../tmp/sn0qZ9","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.6.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; text-align:center; direction:rtl; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:right; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; left:0; bottom:0; right:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress span.info { position:absolute; left:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; right:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; left:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { left:0; bottom:calc(50% - 64px); right:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { left:0; bottom:calc(50% - 64px); right:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; left:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; left:inherit; right:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { white-space:nowrap; }\n#apijsBox div.btns.upload span.sz { color:#676767; }\n#apijsBox div.btns.upload span.ee { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:right; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; left:-2px; padding:0 3em 3em 0; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0.8em 0; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-right:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { right:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; }\n#apijsBox div.navigation button.next span { transform:rotate(225deg); -webkit-transform:rotate(225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-left:0.4em; }\n\n#apijsBox kbd {\n\tmargin-left:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& media queries (via js) &&& */\n#apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox.fullscreen .nofullscreen { display:none !important; }\n#apijsBox.fullscreen.playing video { cursor:none; }\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; right:0.5em; left:0.5em; width:auto; min-height:inherit; }\n#apijsBox.mobile .nomobile { display:none !important; }\n#apijsBox.mobile.playing .noplaying, #apijsBox.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n#apijsBox.mobile.playing .noplaying:hover, #apijsBox.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\n#apijsBox.tiny div.apijsplayer label { position:initial; }\n#apijsBox.tiny div.apijsplayer label select { right:0; left:0; width:100%; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:right; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:right; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(-400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { right:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../tmp/RLijtM","../styles/album-rtl.css","../styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; text-align:center; direction:rtl; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n#apijsDialog.reduce, #apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:right; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; left:0; bottom:0; right:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; right:0.5em; left:0.5em; width:auto; min-height:inherit; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& glisser/déposer &&& */\n#apijsDialog.drag:before {\n\tposition:absolute; top:1em; left:1em; bottom:1em; right:1em; content:\"\";\n\tborder: 2px dashed white;\n}\n\n#apijsDialog p.drag { position:absolute; left:0; bottom:0; margin:1.5em; font-size:1.3em; color:white; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress p.anim:before {\n\tcontent:attr(data-old);\n\t-webkit-animation:apijsReplace 1s linear 2s forwards; animation:apijsReplace 1s linear 2s forwards;\n}\n\n#apijsBox.progress span.info { position:absolute; left:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; right:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; left:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { left:0; bottom:calc(50% - 64px); right:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { left:0; bottom:calc(50% - 64px); right:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; left:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; left:inherit; right:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { max-height:11em; overflow-y:auto; }\n#apijsBox div.btns.upload table { border-spacing:0; }\n#apijsBox div.btns.upload td + td { padding-right:0.6em; }\n#apijsBox div.btns.upload td.nb { font-size:0.85em; color:#676767; }\n#apijsBox div.btns.upload td.size { color:#676767; }\n#apijsBox div.btns.upload td.err { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:right; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { z-index:50; outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; left:-2px; padding:0 3em 3em 0; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0.8em 0; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-right:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { right:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; }\n#apijsBox div.navigation button.next span { transform:rotate(225deg); -webkit-transform:rotate(225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-left:0.4em; }\n\n#apijsBox kbd {\n\tmargin-left:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:right; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:right; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(-400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { right:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }\n@keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }\n@-webkit-keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
3
|
-
* https://www.luigifab.fr/apijs - 6.
|
|
3
|
+
* https://www.luigifab.fr/apijs - 6.7.0
|
|
4
4
|
* This program is free software, you can redistribute it or modify
|
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
|
6
6
|
*/
|
|
7
|
-
div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;text-align:center;direction:ltr;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:left;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;right:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;left:0;display:block;background:#03ff00 repeating-linear-gradient(-45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;right:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{right:0;bottom:calc(50% - 64px);left:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{right:0;bottom:calc(50% - 64px);left:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;right:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;right:inherit;left:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:left;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;right:-2px;padding:0 0 3em 3em;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 0 .8em;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-left:2px solid #fff}#apijsBox div.navigation button.prev{left:0}#apijsBox div.navigation button.prev span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox div.navigation button.next{right:0}#apijsBox div.navigation button.next span{transform:rotate(-225deg);-webkit-transform:rotate(-225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-right:.4em}#apijsBox kbd{margin-right:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;left:.5em;right:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny div.apijsplayer label{position:initial}#apijsBox.tiny div.apijsplayer label select{left:0;right:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:left;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:left}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{left:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}video.apijsplayer{display:block;margin:auto;width:100%;height:calc(100% - 1.8rem)!important;background-color:#000;cursor:pointer}div.apijsplayer *{margin:0;padding:0}div.apijsplayer{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;text-align:center;direction:ltr}div.apijsplayer span{padding:0 .4em;height:1.8rem;background-color:#070707}div.apijsplayer span.btn{padding:0;min-width:2.6em;cursor:pointer}div.apijsplayer span.svg{display:flex;align-items:center;height:100%}div.apijsplayer span.bar{flex:1}div.apijsplayer span.vol{width:7em}div.apijsplayer label{position:relative;height:1.8rem;padding:0 .4em;background-color:#070707}div.apijsplayer label option{padding:.2em .4em}div.apijsplayer label option:checked{font-weight:700}div.apijsplayer label option:disabled{font-style:italic;color:#aaa}div.apijsplayer label em{padding-left:.25em;font-style:normal}div.apijsplayer label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;overflow-y:scroll;color:#000;outline:0;border:0;background:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}div.apijsplayer label:hover,div.apijsplayer span.btn:hover{color:#000;background-color:#fff}div.apijsplayer label:hover select{display:block}div.apijsplayer svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}div.apijsplayer rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}div.apijsplayer rect.buffer{z-index:99440;background-color:#515151}div.apijsplayer svg.vol rect{width:100%;background-color:#fff}
|
|
7
|
+
div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;text-align:center;direction:ltr;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsDialog.reduce,#apijsDialog.reduce *{transition:none!important}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:left;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;left:.5em;right:.5em;width:auto;min-height:inherit}#apijsBox.tiny div.navigation button{padding:0 1em}#apijsDialog.drag:before{position:absolute;top:1em;right:1em;bottom:1em;left:1em;content:"";border:2px dashed #fff}#apijsDialog p.drag{position:absolute;right:0;bottom:0;margin:1.5em;font-size:1.3em;color:#fff}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress p.anim:before{content:attr(data-old);-webkit-animation:apijsReplace 1s linear 2s forwards;animation:apijsReplace 1s linear 2s forwards}#apijsBox.progress span.info{position:absolute;right:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;left:0;display:block;background:#03ff00 repeating-linear-gradient(-45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;right:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{right:0;bottom:calc(50% - 64px);left:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{right:0;bottom:calc(50% - 64px);left:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;right:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;right:inherit;left:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{max-height:11em;overflow-y:auto}#apijsBox div.btns.upload table{border-spacing:0}#apijsBox div.btns.upload td+td{padding-left:.6em}#apijsBox div.btns.upload td.nb{font-size:.85em;color:#676767}#apijsBox div.btns.upload td.size{color:#676767}#apijsBox div.btns.upload td.err{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:left;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{z-index:50;outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;right:-2px;padding:0 0 3em 3em;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 0 .8em;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-left:2px solid #fff}#apijsBox div.navigation button.prev{left:0}#apijsBox div.navigation button.prev span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox div.navigation button.next{right:0}#apijsBox div.navigation button.next span{transform:rotate(-225deg);-webkit-transform:rotate(-225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-right:.4em}#apijsBox kbd{margin-right:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:left;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:left}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{left:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}@keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}@-webkit-keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}div.apijsvideoplayer{background-color:#000}div.apijsvideoplayer.fullscreen{margin:0!important;padding:0!important;height:100vh!important}div.apijsvideoplayer.fullscreen .nofullscreen{display:none!important}div.apijsvideoplayer.fullscreen.playing video{cursor:none}div.apijsvideoplayer.mobile .nomobile{display:none!important}div.apijsvideoplayer.fullscreen.playing .noplaying,div.apijsvideoplayer.mobile.playing .noplaying{transition:opacity .5s;opacity:0}div.apijsvideoplayer.fullscreen.playing .noplaying:hover,div.apijsvideoplayer.mobile.playing .noplaying:hover{opacity:1!important}div.apijsvideoplayer.tiny label{position:initial}div.apijsvideoplayer.tiny label select{left:0;right:0;width:100%}video.apijsplayer{display:block;margin:auto;width:100%;height:calc(100% - 1.8rem)!important;cursor:pointer}div.apijsplayer *{margin:0;padding:0}div.apijsplayer{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;text-align:center;direction:ltr}div.apijsplayer span{padding:0 .4em;height:1.8rem;background-color:#070707}div.apijsplayer span.btn{padding:0;min-width:2.6em;cursor:pointer}div.apijsplayer span.svg{display:flex;align-items:center;height:100%}div.apijsplayer span.bar{flex:1}div.apijsplayer span.vol{width:7em}div.apijsplayer label{position:relative;height:1.8rem;padding:0 .4em;background-color:#070707}div.apijsplayer label option{padding:.2em .4em}div.apijsplayer label option:checked{font-weight:700}div.apijsplayer label option:disabled{font-style:italic;color:#aaa}div.apijsplayer label em{padding-left:.25em;font-style:normal}div.apijsplayer label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;overflow-y:scroll;color:#000;outline:0;border:0;background:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}div.apijsplayer label:hover,div.apijsplayer span.btn:hover{color:#000;background-color:#fff}div.apijsplayer label:hover select{display:block}div.apijsplayer svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}div.apijsplayer rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}div.apijsplayer rect.buffer{z-index:99440;background-color:#515151}div.apijsplayer svg.vol rect{width:100%;background-color:#fff}
|
|
8
8
|
/*# sourceMappingURL=apijs-screen.min.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../tmp/UJxE4R","../code/apijs/src/styles/album.css","../code/apijs/src/styles/dialog.css","../code/apijs/src/styles/player.css"],"names":[],"mappings":"AAAA;;;;;;ACmBiB,cAAjB,gBACC,QAAQ,MAAO,OAAO,KAAM,SAAS,OACrC,MAAM,YAAa,iBAAiB,QAAS,WAAW,iBAAiB,IAGX,kBAApB,mBAArB,oBAAtB,qBAAmF,QAAQ,KAAM,QAAQ,GAGzG,YAAc,QAAQ,YAAa,eAAe,OAAQ,QAAQ,KAAO,eAAe,IAExF,cAAgB,QAAQ,MAAO,gBAAgB,KAAM,OAAO,IAAI,MAAM,YACtE,eAAiB,QAAQ,KAAM,UAAU,KAAM,gBAAgB,aAAc,OAAO,KAAM,EAAE,EAAG,QAAQ,EAAG,WAAW,KACrH,eAAiB,OAAO,KAAM,EAAG,QAAQ,EACzC,iBAAmB,QAAQ,GAC3B,yBAA2B,OAAO,IAAI,MAAM,KAAO,QAAQ,EAG3D,UAAY,QAAQ,KAAO,WAAW,OAEtC,aACC,QAAQ,aAAc,OAAO,KAAM,KAAO,QAAQ,KAAM,KAAM,MAAQ,eAAe,IACrF,OAAO,IAAI,MAAM,QAAS,cAAc,KAAO,iBAAiB,YAAa,WAAW,aAAa,GAAI,CAAE,iBAAiB,IAG7H,qBAAuB,OAAO,IAAI,MAAM,KAAO,iBAAiB,QAChE,eAAiB,QAAQ,MAAO,gBAAgB,KAAM,OAAO,IAAI,MAAM,YAEvE,aACC,OAAO,KAAM,KAAM,EAAG,SAAS,OAC/B,UAAU,KAAO,YAAY,OAAQ,cAAc,SAAU,WAAW,MAAM,IAG/E,mBAAqB,aAAa,KAAM,iBAAiB,QACjC,yBAAxB,uBAAmD,iBAAiB,KCjCpE,sBAA0B,OAAO,EAAG,QAAQ,EAC5C,oBAAqB,mBAAqB,OAAO,QAEjD,aACC,SAAS,MAAO,IAAI,EAAG,MAAM,EAAG,OAAO,EAAG,KAAK,EAAG,MAAM,KAAM,OAAO,KAAM,WAAW,OAAQ,UAAU,IAAK,QAAQ,MACrH,WAAW,iBAAiB,GAAI,CAAE,QAAQ,KAAO,QAAQ,EACzD,YAAY,KAAM,gBAAgB,KAAM,iBAAiB,KAAM,oBAAoB,KAGpF,mBAAqB,iBAAiB,gBAAqB,QAAQ,EACtB,qBAA7C,sBAAuB,qBAA6C,OAAO,SAE3E,UACC,SAAS,SAAU,IAAI,IAAK,QAAQ,aAAc,QAAQ,KAAM,KAAM,MAAO,MAAM,MAAO,UAAU,MAAO,WAAW,IAAK,SAAS,OACpI,WAAW,KAAM,MAAM,KAAO,cAAc,KAAO,iBAAiB,KAAO,WAAW,EAAE,EAAE,MAAM,KAGjG,gBAAiB,gBAChB,QAAQ,KAAM,eAAe,OAC7B,SAAS,SAAU,IAAI,EAAG,MAAM,EAAG,OAAO,EAAG,KAAK,EAAG,QAAQ,EAAG,MAAM,KAAM,UAAU,QAAS,WAAW,QAAS,WAAW,OAC9H,cAAc,EAAG,iBAAiB,eAAoB,WAAW,KAGlE,gBAAkB,iBAAiB,KACnC,sBAAuB,sBAAwB,iBAAiB,8BAA+B,kBAAkB,OACjH,kBAAqC,mBAAlB,iBAAuC,WAAW,KACnD,eAAlB,iBAAmC,QAAQ,MAAM,KAAM,IAGvD,qBAAuB,YAAY,KAAM,gBAAgB,KAAM,iBAAiB,KAAM,oBAAoB,KAE1G,aAAgB,OAAO,MAAO,EAAE,KAAO,OAAO,KAAM,YAAY,KAAM,UAAU,OAAQ,YAAY,IACpG,cAAgB,OAAO,IAAI,KAAM,YAAY,WAAY,UAAU,MAAQ,YAAY,SACvF,YAAgB,OAAO,IAAI,KAAM,YAAY,WAAY,UAAU,IACnE,aAAgB,OAAO,MAAO,KAAK,IACnC,iBAAmB,QAAQ,MAAO,MAAM,KAAM,OAAO,EAErD,6BAA+B,SAAS,SAAU,MAAM,IAAK,OAAO,KAGpE,uBACC,SAAS,SAAU,QAAQ,MAAO,OAAO,KAAK,KAAM,MAAM,IAAK,OAAO,KAAM,SAAS,OACrF,QAAQ,IAAI,MAAM,KAAM,iBAAiB,KAG1C,wBACC,SAAS,SAAU,IAAI,EAAG,OAAO,EAAG,KAAK,EAAG,QAAQ,MACpD,WAAW,QAAQ,mFAAwF,gBAAgB,KAAK,KAGjI,6BAA+B,MAAM,IAAK,kBAAkB,cAAc,IAAI,SAAS,OAAQ,UAAU,cAAc,IAAI,SAAS,OACpI,4BAA8B,MAAM,KAAM,kBAAkB,cAAc,IAAI,SAAS,GAAG,OAAQ,UAAU,cAAc,IAAI,SAAS,GAAG,OAI1I,qBAAuB,SAAS,SAAU,QAAQ,KAAM,OAAO,KAAM,MAAM,MAAO,OAAO,MAAO,eAAe,KAC/G,0BAA4B,KAAK,KAEjC,6BAA8B,6BAC7B,QAAQ,MAAO,MAAM,MAAO,OAAO,MACnC,UAAU,UAAY,kBAAkB,UAGzC,2BAA4B,2BAA6B,MAAM,EAAG,OAAO,iBAAkB,KAAK,EAAG,UAAU,KAAM,kBAAkB,KACxG,0BAA7B,4BAAyD,MAAM,EAAG,OAAO,iBAAkB,KAAK,EAGhG,iBACC,UAAU,MAAQ,gBAAgB,KAAM,OAAO,EAC/C,WAAW,MAAM,GAAI,CAAE,aAAa,GAAI,CAAE,iBAAiB,GAAI,CAAE,QAAQ,IAG1E,mCAAqC,QAAQ,EAAG,QAAQ,EAAG,OAAO,EAC1C,wBAAyB,uBAAjD,uBAA0E,QAAQ,EAElF,mBAAqB,SAAS,SAAU,MAAM,KAAO,OAAO,KAC5D,0BAA4B,SAAS,SAAU,MAAM,QAAS,KAAK,QACnE,gCAAkC,QAAQ,KAC1C,wCAA0C,YAAY,OACtD,kCAAoC,MAAM,QAC1C,kCAAoC,MAAM,QAE1C,0BACC,QAAQ,EAAE,KAAO,OAAO,KAAM,YAAY,KAC1C,MAAM,KAAO,OAAO,IAAI,MAAM,KAAM,cAAc,KAAO,iBAAiB,QAG3E,mCAAqC,QAAQ,GAC7C,iCAAmC,MAAM,KAAM,OAAO,EAAE,KACxD,iCAAmC,QAAQ,aAAc,OAAO,KAAM,EAErC,iCACjC,gCADA,gCACkC,aAAa,KAAM,iBAAiB,QACtE,4CAA8C,kBAAkB,WAAW,GAAG,SAAU,UAAU,WAAW,GAAG,SAGhH,mBAAqB,QAAQ,KAAM,eAAe,eAAgB,KAAK,EAAG,SAAS,OAAQ,MAAM,KAEjG,sBAAwB,QAAQ,KAAM,eAAe,OAAQ,KAAK,EAAG,SAAS,OACtB,6BAAxD,0BAA2B,4BAA4D,KAAK,EAAE,EAAE,KAAM,OAAO,KAAM,WAAW,OAC9H,0BAA4B,gBAAgB,gBAAiB,gBAAgB,iBAAkB,WAAW,WAC1G,4BAA8B,QAAQ,EAAG,OAAO,QAEhD,sBAAwB,YAAY,OAAQ,UAAU,MAAQ,iBAAiB,KAC/E,2BAA6B,OAAO,EAAE,KAAO,UAAU,KAAO,WAAW,OAGzE,oBAAsB,SAAS,SAAU,IAAI,KAAM,MAAM,KAAM,QAAQ,EAAE,EAAE,IAAI,IAAK,QAAQ,MAE5F,2BACC,QAAQ,EAAE,MAAO,YAAY,MAC7B,UAAU,KAAO,YAAY,IAAK,eAAe,UACjD,MAAM,KAAO,OAAO,IAAI,MAAM,KAAO,cAAc,EAAE,EAAE,EAAE,KAAO,iBAAiB,KAAO,QAAQ,GAG/D,kCAAmC,iCAArE,iCAAwG,QAAQ,EAGhH,gCAAkC,SAAS,SAAU,IAAI,IAAK,OAAO,IAAK,QAAQ,EAAE,IAAK,iBAAiB,YAAa,QAAQ,GACxF,uCAAwC,sCAA/E,sCAAuH,QAAQ,EAC/H,yCAA2C,QAAQ,EAAG,OAAO,QAE7D,qCACC,QAAQ,MAAO,MAAM,IAAK,OAAO,IACjC,WAAW,IAAI,MAAM,KAAO,YAAY,IAAI,MAAM,KAGnD,qCAAuC,KAAK,EAC5C,0CAA4C,UAAU,eAAgB,kBAAkB,eACxF,qCAAuC,MAAM,EAC7C,0CAA4C,UAAU,gBAAiB,kBAAkB,gBAGzF,iBACC,QAAQ,KAAM,gBAAgB,OAAQ,OAAO,EAAG,WAAW,OAC3D,UAAU,KAAO,YAAY,OAAQ,WAAW,KAAM,iBAAiB,KAGxE,oBAAsB,OAAO,EAAE,KAAO,YAAY,OAClD,mCAAqC,aAAa,KAElD,cACC,aAAa,KAAO,QAAQ,EAAE,MAC9B,UAAU,QAAS,YAAY,IAAK,eAAe,UAAW,OAAO,EAAG,iBAAiB,KAI1F,sBAAwB,WAAW,eAEnC,mCAAqC,QAAQ,eAC7C,mCAAqC,OAAO,KAC5C,yCAA2C,SAAS,SAAU,IAAI,MAAO,KAAK,KAAO,MAAM,KAAO,MAAM,KAAM,WAAW,QACzH,2BAA6B,QAAQ,eACA,wCAArC,oCAA+E,WAAW,QAAQ,IAAM,QAAQ,EACrE,8CAA3C,0CAA2F,QAAQ,YAEnG,qCAAuC,SAAS,QAChD,4CAA8C,KAAK,EAAG,MAAM,EAAG,MAAM,KACrE,qCAAuC,QAAQ,EAAE,IAGjD,WACC,IAAI,qCAAqC,eAAe,CAAE,oCAAoC,eAC9F,YAAY,cAAe,YAAY,IAAK,WAAW,OAGnC,sCAArB,oBAA4D,qBAAsB,yBACjF,YAAY,cAAe,WAAW,OAAQ,YAAY,IAAK,aAAa,OAAQ,eAAe,KAAM,gBAAgB,QACzH,wBAAwB,UAAW,uBAAuB,YAG3D,oBAAsB,MAAM,KAAM,MAAM,MAAO,WAAW,OAAQ,UAAU,MAC5E,gCAAmC,QAAQ,eAC3C,iCAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAC3C,2BAAmC,QAAQ,eAC3C,6BAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAC3C,6BAAmC,QAAQ,eAC3C,0BAAmC,QAAQ,eAC3C,0BAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAE3C,sCAAwC,MAAM,KAC9C,6CAAgD,QAAQ,eACxD,8CAAgD,QAAQ,eACxD,6CAAgD,QAAQ,eAExD,2BAA8B,QAAQ,QAAS,QAAQ,aAAc,UAAU,eAAgB,kBAAkB,eACjH,4BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QAGtC,yBAAoC,GAAK,MAAM,IAAO,IAAM,UAAU,kBAAsB,KAAO,MAAM,KACzG,iCAAoC,GAAK,MAAM,IAAO,IAAM,KAAK,IAAO,KAAO,MAAM,KACrF,sBAAmC,IAAM,aAAa,MACtD,8BAAmC,IAAM,aAAa,MCxMtD,kBACC,QAAQ,MAAO,OAAO,KAAM,MAAM,KAAM,OAAO,8BAC/C,iBAAiB,KAAO,OAAO,QAIhC,kBAAoB,OAAO,EAAG,QAAQ,EAEtC,gBACC,SAAS,SAAU,QAAQ,KAAM,YAAY,OAAQ,QAAQ,MAC7D,WAAW,MAAO,YAAY,KAAM,OAAO,OAAQ,YAAY,OAC/D,UAAU,MAAQ,MAAM,KAAO,WAAW,OAAQ,UAAU,IAG7D,qBAAuB,QAAQ,EAAE,KAAO,OAAO,OAAQ,iBAAiB,QACxE,yBAA2B,QAAQ,EAAG,UAAU,MAAO,OAAO,QAC9D,yBAA2B,QAAQ,KAAM,YAAY,OAAQ,OAAO,KACpE,yBAA2B,KAAK,EAChC,yBAA2B,MAAM,IACjC,sBAAwB,SAAS,SAAU,OAAO,OAAQ,QAAQ,EAAE,KAAO,iBAAiB,QAC5F,6BAA+B,QAAQ,KAAM,KAC7C,qCAAuC,YAAY,IACnD,sCAAwC,WAAW,OAAQ,MAAM,KACjE,yBAA2B,aAAa,MAAQ,WAAW,OAE3D,6BACC,QAAQ,KAAM,SAAS,SAAU,MAAM,EAAG,OAAO,OAAQ,UAAU,KAAM,WAAW,OACpF,MAAM,KAAO,QAAQ,EAAG,OAAO,EAAG,WAAW,KAAO,WAAW,KAAM,gBAAgB,KAAM,mBAAmB,KAG/G,4BAA6B,+BAAiC,MAAM,KAAO,iBAAiB,KAC5F,mCAAqC,QAAQ,MAE7C,oBAAuB,SAAS,SAAU,KAAK,EAAG,OAAO,IAAK,SAAS,OAAQ,cAAc,KAAO,iBAAiB,KAAM,OAAO,QAClI,qBAAuB,SAAS,SAAU,IAAI,EAAG,OAAO,EAAG,KAAK,EAAG,QAAQ,MAAO,QAAQ,MAAO,iBAAiB,QAClH,4BAA8B,QAAQ,MAAO,iBAAiB,QAC9D,6BAA+B,MAAM,KAAM,iBAAiB","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.6.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; right:0; bottom:0; left:0; width:100%; height:100%; text-align:center; direction:ltr; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:left; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; right:0; bottom:0; left:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress span.info { position:absolute; right:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; left:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(-45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; right:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { right:0; bottom:calc(50% - 64px); left:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { right:0; bottom:calc(50% - 64px); left:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; right:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; right:inherit; left:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { white-space:nowrap; }\n#apijsBox div.btns.upload span.sz { color:#676767; }\n#apijsBox div.btns.upload span.ee { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:left; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; right:-2px; padding:0 0 3em 3em; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0 0.8em; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-left:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { left:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; }\n#apijsBox div.navigation button.next span { transform:rotate(-225deg); -webkit-transform:rotate(-225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-right:0.4em; }\n\n#apijsBox kbd {\n\tmargin-right:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& media queries (via js) &&& */\n#apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox.fullscreen .nofullscreen { display:none !important; }\n#apijsBox.fullscreen.playing video { cursor:none; }\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; left:0.5em; right:0.5em; width:auto; min-height:inherit; }\n#apijsBox.mobile .nomobile { display:none !important; }\n#apijsBox.mobile.playing .noplaying, #apijsBox.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n#apijsBox.mobile.playing .noplaying:hover, #apijsBox.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\n#apijsBox.tiny div.apijsplayer label { position:initial; }\n#apijsBox.tiny div.apijsplayer label select { left:0; right:0; width:100%; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:left; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:left; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { left:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }","/**\n * Created V/01/01/2021\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& player &&& */\nvideo.apijsplayer {\n\tdisplay:block; margin:auto; width:100%; height:calc(100% - 1.8rem) !important;\n\tbackground-color:black; cursor:pointer;\n}\n\n/*rtl:begin:ignore*/\ndiv.apijsplayer * { margin:0; padding:0; }\n\ndiv.apijsplayer {\n\tposition:relative; display:flex; align-items:center; z-index:99600;\n\tmargin-top:-10vh; padding-top:10vh; height:1.8rem; line-height:1.8rem;\n\tfont-size:0.85em; color:white; text-align:center; direction:ltr;\n}\n\ndiv.apijsplayer span { padding:0 0.4em; height:1.8rem; background-color:#070707; }\ndiv.apijsplayer span.btn { padding:0; min-width:2.6em; cursor:pointer; }\ndiv.apijsplayer span.svg { display:flex; align-items:center; height:100%; }\ndiv.apijsplayer span.bar { flex:1; }\ndiv.apijsplayer span.vol { width:7em; }\ndiv.apijsplayer label { position:relative; height:1.8rem; padding:0 0.4em; background-color:#070707; }\ndiv.apijsplayer label option { padding:0.2em 0.4em; }\ndiv.apijsplayer label option:checked { font-weight:700; }\ndiv.apijsplayer label option:disabled { font-style:italic; color:#AAA; }\ndiv.apijsplayer label em { padding-left:0.25em; font-style:normal; }\n\ndiv.apijsplayer label select {\n\tdisplay:none; position:absolute; right:0; bottom:1.8rem; min-width:20em; overflow-y:scroll;\n\tcolor:black; outline:0; border:0; background:white; appearance:none; -moz-appearance:none; -webkit-appearance:none;\n}\n\ndiv.apijsplayer label:hover, div.apijsplayer span.btn:hover { color:black; background-color:white; }\ndiv.apijsplayer label:hover select { display:block; }\n\ndiv.apijsplayer svg { position:relative; flex:1; height:30%; overflow:hidden; border-radius:0.4em; background-color:#222; cursor:pointer; }\ndiv.apijsplayer rect { position:absolute; top:0; bottom:0; left:0; display:block; z-index:99460; background-color:#00B6F0; }\ndiv.apijsplayer rect.buffer { z-index:99440; background-color:#515151; }\ndiv.apijsplayer svg.vol rect { width:100%; background-color:white; }\n/*rtl:end:ignore*/\n/*rtl:raw:div.apijsplayer label { direction:rtl; }*/"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../tmp/61tI5M","../styles/album.css","../styles/dialog.css","../styles/player.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; right:0; bottom:0; left:0; width:100%; height:100%; text-align:center; direction:ltr; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n#apijsDialog.reduce, #apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:left; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; right:0; bottom:0; left:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; left:0.5em; right:0.5em; width:auto; min-height:inherit; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& glisser/déposer &&& */\n#apijsDialog.drag:before {\n\tposition:absolute; top:1em; right:1em; bottom:1em; left:1em; content:\"\";\n\tborder: 2px dashed white;\n}\n\n#apijsDialog p.drag { position:absolute; right:0; bottom:0; margin:1.5em; font-size:1.3em; color:white; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress p.anim:before {\n\tcontent:attr(data-old);\n\t-webkit-animation:apijsReplace 1s linear 2s forwards; animation:apijsReplace 1s linear 2s forwards;\n}\n\n#apijsBox.progress span.info { position:absolute; right:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; left:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(-45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; right:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { right:0; bottom:calc(50% - 64px); left:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { right:0; bottom:calc(50% - 64px); left:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; right:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; right:inherit; left:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { max-height:11em; overflow-y:auto; }\n#apijsBox div.btns.upload table { border-spacing:0; }\n#apijsBox div.btns.upload td + td { padding-left:0.6em; }\n#apijsBox div.btns.upload td.nb { font-size:0.85em; color:#676767; }\n#apijsBox div.btns.upload td.size { color:#676767; }\n#apijsBox div.btns.upload td.err { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:left; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { z-index:50; outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; right:-2px; padding:0 0 3em 3em; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0 0.8em; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-left:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { left:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; }\n#apijsBox div.navigation button.next span { transform:rotate(-225deg); -webkit-transform:rotate(-225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-right:0.4em; }\n\n#apijsBox kbd {\n\tmargin-right:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:left; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:left; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { left:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }\n@keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }\n@-webkit-keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }","/**\n * Created V/01/01/2021\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& player &&& */\ndiv.apijsvideoplayer { background-color:black; }\ndiv.apijsvideoplayer.fullscreen { margin:0 !important; padding:0 !important; height:100vh !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none; }\n\ndiv.apijsvideoplayer.mobile .nomobile { display:none !important; }\ndiv.apijsvideoplayer.mobile.playing .noplaying, div.apijsvideoplayer.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\ndiv.apijsvideoplayer.mobile.playing .noplaying:hover, div.apijsvideoplayer.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\ndiv.apijsvideoplayer.tiny label { position:initial; }\ndiv.apijsvideoplayer.tiny label select { left:0; right:0; width:100%; }\n\nvideo.apijsplayer { display:block; margin:auto; width:100%; height:calc(100% - 1.8rem) !important; cursor:pointer; }\n\n/*rtl:begin:ignore*/\ndiv.apijsplayer * { margin:0; padding:0; }\n\ndiv.apijsplayer {\n\tposition:relative; display:flex; align-items:center; z-index:99600;\n\tmargin-top:-10vh; padding-top:10vh; height:1.8rem; line-height:1.8rem;\n\tfont-size:0.85em; color:white; text-align:center; direction:ltr;\n}\n\ndiv.apijsplayer span { padding:0 0.4em; height:1.8rem; background-color:#070707; }\ndiv.apijsplayer span.btn { padding:0; min-width:2.6em; cursor:pointer; }\ndiv.apijsplayer span.svg { display:flex; align-items:center; height:100%; }\ndiv.apijsplayer span.bar { flex:1; }\ndiv.apijsplayer span.vol { width:7em; }\ndiv.apijsplayer label { position:relative; height:1.8rem; padding:0 0.4em; background-color:#070707; }\ndiv.apijsplayer label option { padding:0.2em 0.4em; }\ndiv.apijsplayer label option:checked { font-weight:700; }\ndiv.apijsplayer label option:disabled { font-style:italic; color:#AAA; }\ndiv.apijsplayer label em { padding-left:0.25em; font-style:normal; }\n\ndiv.apijsplayer label select {\n\tdisplay:none; position:absolute; right:0; bottom:1.8rem; min-width:20em; overflow-y:scroll;\n\tcolor:black; outline:0; border:0; background:white; appearance:none; -moz-appearance:none; -webkit-appearance:none;\n}\n\ndiv.apijsplayer label:hover, div.apijsplayer span.btn:hover { color:black; background-color:white; }\ndiv.apijsplayer label:hover select { display:block; }\n\ndiv.apijsplayer svg { position:relative; flex:1; height:30%; overflow:hidden; border-radius:0.4em; background-color:#222; cursor:pointer; }\ndiv.apijsplayer rect { position:absolute; top:0; bottom:0; left:0; display:block; z-index:99460; background-color:#00B6F0; }\ndiv.apijsplayer rect.buffer { z-index:99440; background-color:#515151; }\ndiv.apijsplayer svg.vol rect { width:100%; background-color:white; }\n/*rtl:end:ignore*/\n/*rtl:raw:div.apijsplayer label { direction:rtl; }*/"]}
|
data/init.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
# Created L/21/05/2012
|
|
3
|
-
# Updated
|
|
3
|
+
# Updated V/18/06/2021
|
|
4
4
|
#
|
|
5
5
|
# Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
6
6
|
# https://www.luigifab.fr/redmine/apijs
|
|
@@ -25,8 +25,8 @@ Redmine::Plugin.register :redmine_apijs do
|
|
|
25
25
|
|
|
26
26
|
name 'Redmine Apijs plugin'
|
|
27
27
|
author 'Fabrice Creuzot'
|
|
28
|
-
description 'Integrate the apijs
|
|
29
|
-
version '6.
|
|
28
|
+
description 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments.'
|
|
29
|
+
version '6.7.0-gem'
|
|
30
30
|
url 'https://www.luigifab.fr/redmine/apijs'
|
|
31
31
|
author_url 'https://www.luigifab.fr/'
|
|
32
32
|
|
data/lib/image.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/python3
|
|
2
2
|
# -*- coding: utf8 -*-
|
|
3
3
|
# Created J/26/12/2013
|
|
4
|
-
# Updated
|
|
4
|
+
# Updated M/11/05/2021
|
|
5
5
|
#
|
|
6
6
|
# Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
7
7
|
# Copyright 2020-2021 | Fabrice Creuzot <fabrice~cellublue~com>
|
|
@@ -35,11 +35,14 @@ except:
|
|
|
35
35
|
if not os.path.exists(os.path.dirname(fileout)):
|
|
36
36
|
os.makedirs(os.path.dirname(fileout))
|
|
37
37
|
|
|
38
|
+
fileout = fileout + '.save'
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
|
|
41
|
+
# tools
|
|
42
|
+
def versionTuple(v):
|
|
40
43
|
return tuple(map(int, (v.split('.'))))
|
|
41
44
|
|
|
42
|
-
def
|
|
45
|
+
def calcSize(source, size):
|
|
43
46
|
|
|
44
47
|
if size[1] == 0 and size[0] == 0:
|
|
45
48
|
return source.size
|
|
@@ -50,12 +53,12 @@ def calcsize(source, size):
|
|
|
50
53
|
|
|
51
54
|
return size
|
|
52
55
|
|
|
53
|
-
def
|
|
56
|
+
def createThumb(source, size, fixed, new=False):
|
|
54
57
|
|
|
55
58
|
# https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.thumbnail
|
|
56
59
|
# https://pillow.readthedocs.io/en/latest/handbook/concepts.html#filters-comparison-table
|
|
57
60
|
# https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.paste
|
|
58
|
-
if hasattr(Image, '__version__') and
|
|
61
|
+
if hasattr(Image, '__version__') and versionTuple(Image.__version__) > (7,0,0):
|
|
59
62
|
source.thumbnail(size, Image.LANCZOS, 4)
|
|
60
63
|
else:
|
|
61
64
|
source.thumbnail(size, Image.ANTIALIAS)
|
|
@@ -96,7 +99,7 @@ def resizeAnimatedGif(source, size, fixed):
|
|
|
96
99
|
|
|
97
100
|
frame = Image.new('RGBA', source.size, (255,255,255,1))
|
|
98
101
|
frame.paste(source, (0,0), source.convert('RGBA'))
|
|
99
|
-
dest.append(
|
|
102
|
+
dest.append(createThumb(frame, size, fixed))
|
|
100
103
|
|
|
101
104
|
idx = source.tell()
|
|
102
105
|
source.seek(idx + 1)
|
|
@@ -117,7 +120,7 @@ def resizeAnimatedPng(source, size, fixed):
|
|
|
117
120
|
while True:
|
|
118
121
|
frame = Image.new('RGBA', source.size, (255,255,255,1))
|
|
119
122
|
frame.paste(source, (0,0), source.convert('RGBA'))
|
|
120
|
-
dest.append(
|
|
123
|
+
dest.append(createThumb(frame, size, fixed))
|
|
121
124
|
|
|
122
125
|
idx = source.tell()
|
|
123
126
|
source.seek(idx + 1)
|
|
@@ -138,7 +141,7 @@ def resizeAnimatedWebp(source, size, fixed):
|
|
|
138
141
|
while True:
|
|
139
142
|
frame = Image.new('RGBA', source.size, (255,255,255,1))
|
|
140
143
|
frame.paste(source, (0,0), source.convert('RGBA'))
|
|
141
|
-
dest.append(
|
|
144
|
+
dest.append(createThumb(frame, size, fixed))
|
|
142
145
|
|
|
143
146
|
idx = source.tell()
|
|
144
147
|
source.seek(idx + 1)
|
|
@@ -213,7 +216,7 @@ def saveJpg(dest, fileout, quality):
|
|
|
213
216
|
|
|
214
217
|
# python-scour
|
|
215
218
|
if ".svg" in fileout:
|
|
216
|
-
from scour.scour import
|
|
219
|
+
from scour.scour import sanitizeOptions, start
|
|
217
220
|
options = sanitizeOptions()
|
|
218
221
|
options.strip_xml_prolog = True # --strip-xml-prolog
|
|
219
222
|
options.remove_metadata = True # --remove-metadata
|
|
@@ -225,7 +228,7 @@ if ".svg" in fileout:
|
|
|
225
228
|
else:
|
|
226
229
|
from PIL import Image, ImageSequence
|
|
227
230
|
source = Image.open(filein)
|
|
228
|
-
size =
|
|
231
|
+
size = calcSize(source, size)
|
|
229
232
|
|
|
230
233
|
if source.format == 'GIF' and ".gif" in fileout:
|
|
231
234
|
dest = resizeAnimatedGif(source, size, fixed)
|
|
@@ -237,7 +240,10 @@ else:
|
|
|
237
240
|
dest = resizeAnimatedWeb(source, size, fixed)
|
|
238
241
|
saveWebp(dest, fileout, quality)
|
|
239
242
|
else:
|
|
240
|
-
dest =
|
|
243
|
+
dest = createThumb(source, size, fixed, True)
|
|
241
244
|
saveJpg(dest, fileout, quality)
|
|
242
245
|
|
|
246
|
+
if os.path.isfile(fileout):
|
|
247
|
+
os.rename(fileout, fileout.replace('.save', ''))
|
|
248
|
+
|
|
243
249
|
exit(0)
|
data/lib/useragentparser.rb
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# https://github.com/donatj/PhpUserAgent
|
|
5
5
|
#
|
|
6
6
|
# Copyright 2019-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
|
7
|
-
# https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.
|
|
7
|
+
# https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.4.0-fork1)
|
|
8
8
|
#
|
|
9
9
|
# Parses a user agent string into its important parts
|
|
10
10
|
# Licensed under the MIT License
|
|
@@ -49,7 +49,7 @@ class Useragentparser
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
result = userAgent.to_enum(:scan, # ["browser" => ["Firefox"...], "version" => ["45.0"...]]
|
|
52
|
-
/(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|Baiduspider|Applebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix
|
|
52
|
+
/(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|Baiduspider|Applebot|Facebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix
|
|
53
53
|
).map { Regexp.last_match.names.collect{ |x| {x => $~[x]} }.reduce({}, :merge) }
|
|
54
54
|
.reduce({}) { |h,pairs| pairs.each {|k,v| (h[k] ||= []) << v}; h }
|
|
55
55
|
|
|
@@ -80,9 +80,9 @@ class Useragentparser
|
|
|
80
80
|
refpla = [platform]
|
|
81
81
|
refval = ['']
|
|
82
82
|
|
|
83
|
-
if findt(lowerBrowser, {'OPR' => 'Opera', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
|
|
83
|
+
if findt(lowerBrowser, {'OPR' => 'Opera', 'Facebot' => 'iMessageBot', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
|
|
84
84
|
browser = refbro[0]
|
|
85
|
-
version = result['version'][refkey[0]]
|
|
85
|
+
version = result['version'][refkey[0]][0] =~ /[0-9]/ ? result['version'][refkey[0]] : nil
|
|
86
86
|
elsif find(lowerBrowser, 'Playstation Vita', refkey, platform)
|
|
87
87
|
platform = 'PlayStation Vita'
|
|
88
88
|
browser = 'Browser'
|
data/redmine_apijs.gemspec
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
Gem::Specification.new do |s|
|
|
3
3
|
s.name = 'redmine_apijs'
|
|
4
|
-
s.version = '6.
|
|
4
|
+
s.version = '6.7.0'
|
|
5
5
|
s.summary = 'Redmine Apijs plugin'
|
|
6
|
-
s.description = 'Integrate the apijs
|
|
6
|
+
s.description = 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments.'
|
|
7
7
|
s.homepage = 'https://github.com/luigifab/redmine-apijs'
|
|
8
8
|
s.license = 'GPL-2.0-or-later'
|
|
9
9
|
s.authors = ['Fabrice Creuzot']
|
|
@@ -28,21 +28,21 @@ Gem::Specification.new do |s|
|
|
|
28
28
|
assets/images/apijs/player-white-400.png
|
|
29
29
|
assets/images/apijs/tv.gif
|
|
30
30
|
assets/javascripts/apijs-redmine.min.js
|
|
31
|
+
assets/javascripts/apijs-redmine.min.js.map
|
|
31
32
|
assets/javascripts/apijs.min.js
|
|
32
33
|
assets/javascripts/apijs.min.js.map
|
|
33
34
|
assets/javascripts/app.js
|
|
34
|
-
assets/javascripts/app.min.js.map
|
|
35
35
|
assets/stylesheets/apijs-print.min.css
|
|
36
36
|
assets/stylesheets/apijs-print.min.css.map
|
|
37
37
|
assets/stylesheets/apijs-redmine-rtl.min.css
|
|
38
|
+
assets/stylesheets/apijs-redmine-rtl.min.css.map
|
|
38
39
|
assets/stylesheets/apijs-redmine.min.css
|
|
40
|
+
assets/stylesheets/apijs-redmine.min.css.map
|
|
39
41
|
assets/stylesheets/apijs-screen-rtl.min.css
|
|
40
42
|
assets/stylesheets/apijs-screen-rtl.min.css.map
|
|
41
43
|
assets/stylesheets/apijs-screen.min.css
|
|
42
44
|
assets/stylesheets/apijs-screen.min.css.map
|
|
43
|
-
assets/stylesheets/styles-rtl.min.css.map
|
|
44
45
|
assets/stylesheets/styles.css
|
|
45
|
-
assets/stylesheets/styles.min.css.map
|
|
46
46
|
config/locales/cs.yml
|
|
47
47
|
config/locales/de.yml
|
|
48
48
|
config/locales/en.yml
|
metadata
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redmine_apijs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fabrice Creuzot
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
|
-
description: Integrate the apijs
|
|
13
|
+
description: Integrate the apijs JavaScript library into Redmine. Provides a gallery
|
|
14
|
+
for image and video attachments.
|
|
14
15
|
email: code@luigifab.fr
|
|
15
16
|
executables: []
|
|
16
17
|
extensions: []
|
|
@@ -32,21 +33,21 @@ files:
|
|
|
32
33
|
- assets/images/apijs/player-white-400.png
|
|
33
34
|
- assets/images/apijs/tv.gif
|
|
34
35
|
- assets/javascripts/apijs-redmine.min.js
|
|
36
|
+
- assets/javascripts/apijs-redmine.min.js.map
|
|
35
37
|
- assets/javascripts/apijs.min.js
|
|
36
38
|
- assets/javascripts/apijs.min.js.map
|
|
37
39
|
- assets/javascripts/app.js
|
|
38
|
-
- assets/javascripts/app.min.js.map
|
|
39
40
|
- assets/stylesheets/apijs-print.min.css
|
|
40
41
|
- assets/stylesheets/apijs-print.min.css.map
|
|
41
42
|
- assets/stylesheets/apijs-redmine-rtl.min.css
|
|
43
|
+
- assets/stylesheets/apijs-redmine-rtl.min.css.map
|
|
42
44
|
- assets/stylesheets/apijs-redmine.min.css
|
|
45
|
+
- assets/stylesheets/apijs-redmine.min.css.map
|
|
43
46
|
- assets/stylesheets/apijs-screen-rtl.min.css
|
|
44
47
|
- assets/stylesheets/apijs-screen-rtl.min.css.map
|
|
45
48
|
- assets/stylesheets/apijs-screen.min.css
|
|
46
49
|
- assets/stylesheets/apijs-screen.min.css.map
|
|
47
|
-
- assets/stylesheets/styles-rtl.min.css.map
|
|
48
50
|
- assets/stylesheets/styles.css
|
|
49
|
-
- assets/stylesheets/styles.min.css.map
|
|
50
51
|
- config/locales/cs.yml
|
|
51
52
|
- config/locales/de.yml
|
|
52
53
|
- config/locales/en.yml
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../tmp/9r9f0y","styles-rtl.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,MACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,KAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,YAAY,KAE7D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,aAAa,IAAK,YAAY,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,MAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:right; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:left; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-left:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-right:1px; margin-left:0.7em; width:auto; min-width:5.5em; text-align:right; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../tmp/iCXibM","styles.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,KACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,MAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,aAAa,KAE9D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,YAAY,IAAK,aAAa,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,KAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:left; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:right; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-right:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-left:1px; margin-right:0.7em; width:auto; min-width:5.5em; text-align:left; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
|